Saltar al contenido
Glosario / Desarrollo web
Desarrollo web

Hidratación (en frontend)

Proceso por el cual el JavaScript de cliente \activa\ interactividad sobre HTML pre-renderizado. Si se hace mal, mata el rendimiento.

También conocido como: hidratación frontendhydration

Qué es la hidratación

Hidratación es el proceso por el cual el JavaScript de cliente activa la interactividad sobre HTML pre-renderizado. El término viene de la metáfora: el HTML seco se vuelve interactivo al añadirle JavaScript agua.

Cómo funciona típicamente

  1. Servidor (o build) genera HTML estático
  2. Navegador descarga el HTML y lo muestra inmediatamente (rápido)
  3. Navegador descarga el bundle JS
  4. JavaScript hidrata: añade event listeners, conecta state, etc.
  5. La página ahora es interactiva

Problema clásico de hidratación

En React/Next.js tradicional (Pages Router), TODA la página se hidrata aunque solo un componente sea interactivo. Si tu página es 95% texto estático + 5% formulario:

  • Sin hidratación: HTML carga rápido (0,3s LCP)
  • Con hidratación full: JavaScript baja (200KB+) y bloquea el thread

Resultado: una landing que debería cargar en 0,3s tarda 2-3s en ser interactiva.

Soluciones modernas

Astro: Islands architecture

Solo hidratas los componentes que necesitan interactividad (islas). El resto queda como HTML estático.

<MyStaticComponent />           <!-- HTML, sin hidratación -->
<MyInteractiveForm client:load /> <!-- Hidratado al cargar -->
<MyChat client:visible />        <!-- Hidratado al hacer scroll -->
<MyAds client:idle />            <!-- Hidratado en idle -->

React Server Components (RSC)

Next.js App Router introduce componentes que se ejecutan solo en servidor, sin JavaScript en cliente. Solo se hidratan los componentes marcados con 'use client'.

Qwik

Framework con resumability en vez de hidratación: el HTML incluye marcadores que permiten al JS arrancar exactamente donde lo dejó el servidor, sin re-ejecutar todo.

Directivas de hidratación en Astro

DirectivaCuándo se hidrataUso típico
client:loadAl cargar la páginaSolo si es crítico inmediato (menú principal)
client:idleCuando el navegador está libreChat, widgets secundarios
client:visibleCuando el componente entra en viewportFormularios bajo el pliegue, herramientas
client:mediaSegún media querySolo desktop, solo móvil
client:onlySin SSR, solo clienteComponentes que requieren window/document

Mejor práctica

Por defecto, NO hidratar. Solo añadir client:* cuando un componente realmente necesite interactividad. El resto debe quedar como HTML estático.

Cómo afecta a Core Web Vitals

  • Hidratación pesada al cargar: mata LCP e INP
  • Hidratación bajo demanda (visible/idle): LCP excelente

En IMPERO, todas las herramientas usan client:visible para no impactar LCP de la landing.

Da el primer paso

AUDITORÍA GRATUITA
SIN COMPROMISO.

Reserva una llamada de 15 minutos. Analizamos tu web, tu publicidad y tu posicionamiento digital. Te decimos exactamente qué mejorar y cuánto puedes ahorrar. Sin coste, sin compromiso.