0Pricing
React Academy · Lección

Arquitectura de islas: hidratación selectiva

Aprenda cómo las islas aíslan los componentes interactivos para que solo estos envíen JavaScript, mientras el resto permanece como HTML estático.

Arquitectura de islas: hidratación selectiva es una lección gratuita de React Academy en CoddyKit. Esta es la lección 2 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.

El concepto de las islas

La arquitectura de islas, término acuñado por Jason Miller en 2020, trata una página web como HTML mayoritariamente estático con «islas» aisladas de interactividad integradas en él. El océano estático de HTML se envía al navegador tal cual. Solo las islas interactivas descargan y ejecutan JavaScript, de modo que la carga de JavaScript es proporcional a la interactividad real.

Cómo funcionan las islas

Cada isla es un componente que se hidrata de forma independiente. El servidor renderiza el HTML inicial de la isla junto con el resto de la página. Cuando se carga el JavaScript de la isla, solo se hidrata el subárbol de ese componente. El HTML que rodea las islas nunca es manipulado por JavaScript: es realmente estático.

La diferencia en la carga de JavaScript

En una página de entrada de blog con arquitectura de islas, la carga de JavaScript podría ser de 5 kB para una única isla con un botón de «Me gusta». La misma página creada como una SPA de React podría enviar más de 200 kB de JavaScript para hidratar toda la página. El enfoque de islas hace que la carga sea proporcional a la interactividad, no al tamaño de la página.

Islas con varios frameworks

Astro, el principal framework de arquitectura de islas, admite islas creadas con distintos frameworks en la misma página. Puede tener una isla de React junto a una isla de Vue y otra de JavaScript puro. Cada isla se empaqueta de forma independiente, por lo que los usuarios solo descargan el código de los frameworks utilizados por las islas visibles.

client:load — Hidratación inmediata

La directiva client:load hidrata la isla inmediatamente cuando se carga la página. Utilícela para las islas que son visibles e interactivas desde el principio, como un menú de navegación o una sección principal con un campo de búsqueda. Esta es la estrategia de hidratación de mayor prioridad.

client:idle — Hidratación diferida

La directiva client:idle espera a que el hilo principal del navegador esté inactivo (después de que se haya cargado el contenido crítico) antes de hidratar la isla. Es ideal para widgets que están por debajo del límite visible o para interacciones secundarias que no se necesitan de inmediato, como una barra para compartir en redes sociales.

client:visible — Hidratación diferida

La directiva client:visible utiliza un Intersection Observer para hidratar la isla solo cuando entra en la ventana gráfica al desplazarse. Es ideal para islas situadas en zonas profundas de la página, como una sección de comentarios o un carrusel de productos relacionados, que quizá la mayoría de los usuarios nunca llegue a ver. JavaScript ni siquiera se carga hasta que se necesita.

client:only — Omitir SSR

La directiva client:only omite por completo el renderizado en el servidor y solo renderiza la isla en el navegador. Es necesaria para componentes que utilizan API exclusivas del navegador (window, document) o que dependen del estado del cliente en el momento del montaje. La contrapartida es que esa isla no tiene HTML renderizado en el servidor.

Cómo resolver el problema de la hidratación

La arquitectura de islas resuelve el problema de la hidratación completa al garantizar que JavaScript solo se cargue y ejecute para los componentes que son realmente interactivos. Una entrada de blog con un botón de «Me gusta» solo hidrata la isla del botón; el texto del artículo de 1200 palabras, el encabezado y el pie de página no generan ninguna ejecución de JavaScript en el cliente.

Aislamiento del estado entre islas

Cada isla tiene su propio estado aislado. Las islas no pueden compartir directamente el estado de React porque son árboles de React independientes. Esto es intencionado: si dos componentes necesitan compartir estado, deben combinarse en una sola isla. La comunicación entre islas utiliza parámetros de URL, eventos del DOM o bibliotecas de estado ligeras.

Resultados en el mundo real

Los sitios migrados de una SPA de React a la arquitectura de islas (como el sitio de documentación de Astro) informan de mejoras drásticas: las cargas de JavaScript disminuyen entre un 70 % y un 90 %, el TTI mejora entre 2 y 4 segundos en dispositivos móviles y las puntuaciones de rendimiento de Lighthouse pasan de los 60 a más de 90 puntos. Las mejoras son más notables en páginas con mucho contenido.

Estrategias de hidratación de islas

¿Qué directiva de hidratación de Astro hidrata un componente únicamente cuando entra en el área visible al desplazarse?

Resumen de la lección

La arquitectura de islas mantiene la mayor parte de la página como HTML estático e hidrata únicamente componentes interactivos aislados. Astro proporciona directivas de hidratación: client:load (inmediata), client:idle (después de que el navegador quede inactivo), client:visible (al desplazarse hasta el componente) y client:only (renderizado únicamente en el cliente). Cada isla se hidrata de forma independiente, por lo que la cantidad de JavaScript es proporcional a la interactividad y no al tamaño de la página.

Preguntas frecuentes

¿La lección «Arquitectura de islas: hidratación selectiva» es gratis?

Sí — el texto completo de «Arquitectura de islas: 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 «Arquitectura de islas: hidratación selectiva»?

Aprenda cómo las islas aíslan los componentes interactivos para que solo estos envíen JavaScript, mientras el resto permanece como HTML estático. 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 2 de 4.

¿Cuánto tiempo toma la lección «Arquitectura de islas: 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

  1. El problema de la hidratación completa
  2. Arquitectura de islas: hidratación selectiva
  3. Configuración de Astro y las islas de React
  4. Medición del rendimiento: Lighthouse y Core Web Vitals
← Volver a React Academy