Glosario · Desarrollo web

Hidratación

Proceso por el que el JavaScript del cliente toma el HTML SSR y le añade interactividad (event listeners, estado React). Una hidratación lenta produce TBT/INP malos aunque el LCP sea bueno.

Qué es y cómo funciona

Cuando una página se renderiza en servidor o se genera de forma estática, el navegador recibe HTML y lo muestra enseguida. Pero ese HTML, por sí solo, es una fotografía: un botón se ve, pero pulsarlo no ejecuta nada. La hidratación es el paso en el que el JavaScript de la página se descarga, recorre ese HTML ya existente y le conecta el estado y los manejadores de eventos para que responda.

Durante la hidratación, el framework reconstruye en memoria el árbol de componentes y comprueba que coincide con el HTML que llegó. Si no coincide, por ejemplo porque un componente pinta una fecha o un valor aleatorio distinto en servidor y en cliente, aparece un error de desajuste de hidratación.

El coste es proporcional a la cantidad de JavaScript que hay que descargar, analizar y ejecutar. Por eso se han desarrollado técnicas para hidratar menos: componentes de servidor que no envían su código al navegador, carga diferida de los componentes pesados o arquitecturas de islas, en las que solo se hidratan las zonas realmente interactivas.

Por qué importa

Es la razón por la que una web puede parecer rápida y comportarse como lenta. El contenido aparece pronto, pero si el navegador está ocupado hidratando, los primeros clics tardan en responder. Eso empeora la interacción que perciben los usuarios, que es lo que mide la métrica INP de Core Web Vitals, aunque el tiempo de carga visual sea bueno.

Para una empresa, el efecto se nota sobre todo en móviles de gama media, donde el procesador tarda más en ejecutar JavaScript. Controlar cuánto código se hidrata, qué librerías de terceros se cargan y qué componentes necesitan realmente interactividad suele ser más eficaz que optimizar imágenes cuando el problema es la respuesta a los toques.

Un ejemplo

Una página de producto muestra galería, descripción, reseñas y un botón de añadir al carrito. Si todo es un único componente cliente, el navegador hidrata la página entera, incluida la descripción, que es texto fijo. Si solo el botón y la galería son interactivos y el resto se queda como componente de servidor, se envía mucho menos JavaScript y el botón responde antes tras la carga.

Errores y confusiones frecuentes

  • Confundir hidratación con renderizado. El renderizado produce el HTML; la hidratación lo activa en el cliente. Son pasos distintos con costes distintos.
  • Marcar como componente cliente todo el árbol por comodidad. Cada componente cliente añade JavaScript que hay que descargar y ejecutar.
  • Generar contenido distinto en servidor y cliente, como fechas locales, aleatorios o lectura del almacenamiento del navegador, lo que provoca errores de desajuste.
Dudas habituales

Preguntas frecuentes sobre Hidratación

Probablemente el navegador aún está descargando o ejecutando el JavaScript que hidrata la página. El HTML ya se ve, pero los controles todavía no están conectados. Reducir el JavaScript enviado y aplazar lo no esencial suele mejorar esa sensación.

No. Una página puramente informativa, sin menús dinámicos ni formularios con lógica de cliente, podría funcionar solo con HTML y CSS. La hidratación hace falta en las partes que tienen interacción que depende de JavaScript.

Es un aviso de que el HTML generado en servidor no coincide con lo que el cliente calcula al hidratar. Suele deberse a valores que cambian entre ambos entornos, como la hora, números aleatorios o datos del navegador.

¿Necesitas aplicarlo en tu proyecto?

Cuéntanos qué quieres conseguir y te decimos, sin compromiso, si Hidratación tiene sentido en tu caso o si hay una opción mejor.