React v16.7: No, este no es el que tiene Hooks

December 19, 2018 by Andrew Clark

Nuestro último lanzamiento incluye un importante bugfix de rendimiento para React.lazy. A pesar de que no hay cambios en la API, estamos lanzandolo como una versión menor en vez de un parche.

¿Por qué este bugfix es una versión menor en vez de un parche?

React sigue versionamiento semántico. Tipicamente, esto significa que usamos versiones de parche para bugfixes, y versiones menores para nuevas (no disruptivas) funcionalidades. Sin embargo, nos reservamos la opción de lanzar versiones menores aun si no incluyen nuevas funcionalidades. La motivación es reservar los parches para cambios que tienen muy pocas probabilidades de romper el sistema. Los parches son el tipo de lanzamiento más importante porque aveces contienen bugfixes críticos. Eso significa que los lanzamientos de parches tienen una vara más alta en confiabilidad. Es inaceptable que un parche introduzca errores, porque si las personas empiezan a desconfiar de los parches, nuestra habilidad de arreglar bugfixes críticos se verá comprometida — por ejemplo, arreglar una vulnerabilidad de seguridad.

Nunca hemos querido lanzar errores. React se ha ganado una reputación por su estabilidad, y pretendemos que siga así. Probamos cada versión detenidamente antes de su lanzamiento. Esto incluye, pruebas unitarias, pruebas generativas (fuzzy), pruebas de integración, y pruebas internas a través de decenas de miles de componentes. Sin embargo, a veces cometemos errores. Es por eso que, de ahora en adelante, nuestra política será que si un lanzamiento contiene cambios no triviales, aumentaremos la versión menor, aun si el comportamiento externo es el mismo. También aumentaremos la versión menor cuando cambiemos las APIs con el prefijo unstable_.

¿Ya puedo usar Hooks?

¡Aún no, pero pronto!

En la React Conf, dijimos que 16.7 sería la primera versión que incluiría Hooks. Ese fue un error. No debimos haber conectado un número de versión específico a una funcionalidad que no habíamos lanzado. Evitaremos esto en el futuro.

Aunque 16.7 no incluye Hooks, por favor no infieras nada sobre el tiempo en el que vamos a lanzar Hooks. Nuestros planes para Hooks no han cambiado:

Hemos escuchado que muchas personas quieren empezar a usar Hooks en sus aplicaciones. ¡Nosotros tampoco podemos esperar para lanzarlos! Pero como Hooks cambian la forma en que escribimos nuestros componentes de React, estamos tomándonos un tiempo extra para ultimar detalles. Apreciamos tu paciencia mientras preparamos esta nueva funcionalidad para su, uso, masivo.

Aprende más sobre nuestra hoja de ruta en el post anterior.

Instalación

React v16.7.0 está disponible en el registro de npm.

Para instalar React 16 con Yarn, ejecuta:

yarn add react@^16.7.0 react-dom@^16.7.0

Para instalar React 16 con npm, ejecuta:

npm install --save react@^16.7.0 react-dom@^16.7.0

También proveemos compilados UMD de React a través de un CDN:

<script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>

Consulta la documentación para obtener instrucciones de instalación detalladas.

Changelog

React DOM

  • Arreglado el rendimiento de React.lazy para un gran número de componentes diferidos. (@acdlite en #14429)
  • Limpiar los campos en unmount para evitar memory leaks. (@trueadm en #14276)
  • Arreglado un error con SSR y Context cuando se combina react-dom/server@16.6 y react@<16.6. (@gaearon en #14291)
  • Arreglada una regresión de rendimiento en modo profiling. (@bvaughn en #14383)

Programador (Experimental)