Hidratación progresiva con hidratación selectiva
Use la hidratación selectiva de React 18 para dar prioridad a la hidratación de los componentes con los que el usuario interactúa primero.
Hidratación progresiva con hidratación selectiva es una lección gratuita de React Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.
¿Qué es la hidratación selectiva?
La hidratación selectiva es una funcionalidad de React 18 que permite a React comenzar a hidratar los componentes en cuanto llega su código JavaScript, sin esperar a que se descargue el JavaScript de toda la página. Cada sección dividida mediante code splitting independiente se hidrata cuando se carga su bundle, no toda a la vez.
React 18: sin hidratación de golpe
Antes de React 18, la hidratación era «todo o nada»: React tenía que descargar todo el JavaScript e hidratar el árbol completo antes de que cualquier parte de la página se volviera interactiva. React 18 elimina esta limitación: distintas partes del árbol se hidratan de forma independiente a medida que su código y sus datos están disponibles.
La interacción del usuario prioriza la hidratación
Si el usuario hace clic o interactúa con un límite de Suspense que todavía no se ha hidratado, React da inmediatamente prioridad a la hidratación de ese subárbol antes que a cualquier otro trabajo de hidratación pendiente. Esto significa que el elemento que el usuario intenta utilizar se vuelve interactivo primero, aunque no aparezca en el orden del documento.
React.lazy y Suspense para dividir el código
La combinación de React.lazy con importaciones dinámicas y límites de Suspense permite la hidratación selectiva de componentes cuyo código se ha dividido. El navegador descarga primero el bundle principal de JS e hidrata el shell de inmediato. Cada componente cargado de forma diferida se hidrata cuando se descarga su fragmento, de manera progresiva, a medida que el navegador lo obtiene.
Impacto en la experiencia del usuario
Como resultado, el contenido visible inicialmente se vuelve interactivo antes de que se haya descargado siquiera el JavaScript del contenido fuera de la vista inicial. El usuario puede interactuar con la navegación y la llamada a la acción del hero mientras el feed de comentarios y el widget de recomendaciones todavía cargan sus fragmentos de JavaScript.
Medir el impacto
La hidratación selectiva reduce el Total Blocking Time (TBT), la métrica clave del rendimiento de la hidratación. En la pestaña Performance de Chrome DevTools, las Long Tasks (tareas de más de 50 ms) se resaltan en rojo. Antes de la hidratación selectiva, podría observar una única Long Task de 300 ms correspondiente a toda la hidratación; después, observará varias tareas pequeñas distribuidas a lo largo del tiempo.
Evitar importaciones eager de nivel superior
El antipatrón que perjudica la hidratación selectiva consiste en importar todos los componentes al inicio de la aplicación: import Footer from './Footer'. Esto obliga al navegador a descargar, analizar y ejecutar el código de Footer antes de que comience cualquier hidratación. Sustituya las importaciones de nivel superior de los componentes fuera de la vista inicial por React.lazy e importaciones dinámicas.
Importaciones dinámicas para el contenido fuera de la vista inicial
Utilice const Footer = React.lazy(() => import('./Footer')) para los componentes que aparecen fuera de la vista inicial. Envuélvalos en Suspense con un fallback sencillo. El navegador reduce la prioridad de la descarga del bundle de Footer hasta que termina la hidratación del contenido visible inicialmente, lo que mejora de forma natural el TBT.
Relación entre el streaming y la hidratación selectiva
El streaming y la hidratación selectiva son técnicas complementarias: el streaming envía fragmentos de HTML para mejorar FCP y LCP, mientras que la hidratación selectiva procesa fragmentos de JavaScript para mejorar TTI y TBT. Juntas abordan las dos dimensiones del rendimiento: «mostrar el contenido rápidamente» y «hacerlo interactivo rápidamente».
Hidratación selectiva y React Server Components
React Server Components llevan la hidratación selectiva un paso más allá: los componentes de servidor no producen JavaScript para el cliente. Solo es necesario hidratar los componentes de cliente (marcados con "use client"). Esto reduce la cantidad total de JavaScript que debe hidratarse y hace que la hidratación selectiva sea aún más eficaz.
Arquitectura práctica de hidratación selectiva
Un patrón práctico consiste en utilizar renderToPipeableStream para transmitir el HTML, envolver la página en una llamada raíz a hydrateRoot (en lugar de createRoot) para activar el modo de hidratación, utilizar React.lazy para todas las secciones fuera de la vista inicial y envolver cada sección en un límite de Suspense. React se encarga automáticamente del resto.
Interacción del usuario e hidratación selectiva
¿Cómo afecta la interacción del usuario a la prioridad de la hidratación selectiva en React 18?
Resumen de la lección
La hidratación selectiva permite que React hidrate progresivamente los subárboles de componentes a medida que llega su JavaScript, en lugar de esperar al bundle completo. Las interacciones del usuario priorizan la hidratación del subárbol seleccionado. React.lazy e importaciones dinámicas para el contenido fuera de la vista inicial, combinadas con límites de Suspense, permiten este patrón progresivo. La hidratación selectiva y el SSR mediante streaming son técnicas complementarias que, juntas, abordan tanto la entrega de contenido como el rendimiento de la interactividad.
Preguntas frecuentes
¿La lección «Hidratación progresiva con hidratación selectiva» es gratis?
Sí — el texto completo de «Hidratación progresiva con hidratación selectiva» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Hidratación progresiva con hidratación selectiva»?
Use la hidratación selectiva de React 18 para dar prioridad a la hidratación de los componentes con los que el usuario interactúa primero. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar React Academy?
No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Hidratación progresiva con hidratación selectiva»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de React Academy?
Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Streaming en React 18: cómo funciona renderToPipeableStream
- Límites de Suspense y prioridad del streaming
- Hidratación progresiva con hidratación selectiva
- Medición del impacto del streaming: FCP, TTI y LCP