Hidratación: Definición, Proceso, Tradeoffs Performance

Hidratación es el proceso donde JS cliente se attacha al HTML server-rendered — hace markup estático interactivo. Caro; hurts INP.

¿Qué es hidratación?

Hidratación es el proceso donde JavaScript en el cliente se "attacha" al HTML server-rendered, convirtiendo markup estático en una aplicación interactiva. Después de que SSR envía HTML al navegador, el bundle JS descarga, parsea y re-corre el component tree para attachar event handlers, restaurar state y hacer la página interactiva.

La hidratación es fundamental para frameworks basados en SSR. También es el costo primario de SSR — hidratación pesada es la causa principal de mal INP.

La secuencia hidratación

  1. Servidor renderea HTML y envía al navegador
  2. Navegador muestra HTML
  3. Navegador descarga bundle JS
  4. JS parsea + ejecuta
  5. JS recorre DOM existente, matchea elements a components
  6. JS attacha event handlers, inicializa state
  7. Página ahora realmente interactiva

Por qué hidratación es lenta

  • Component tree entero re-corre.
  • Tamaño bundle JS.
  • Síncrono en main thread.
  • Competencia recursos.
  • Cold starts en devices lentos.

Soluciones modernas al costo hidratación

TécnicaCómo funcionaUsado por
Hidratación parcialSolo hidratar components marcados interactivosAstro Islands
Streaming SSRServidor stream chunks HTMLReact 18+, Next.js
Hidratación progresivaHidratar al entrar viewportRSC, Astro
Resumability (Qwik)Skip hidratación; lazy-load handlersQwik
React Server ComponentsComponents corren solo server-sideNext.js App Router
Hidratación selectivaHidratar parte usuario interactúa primeroReact 18+

Hidratación vs no-hidratación approaches

ApproachCosto JSInteractividad
SPA (CSR)Todo JS upfrontInteractivo después load JS
SSR + hidrataciónJS completo en cada páginaVisible rápido, interactivo después hidratación
SSG (no JS)Cero JSEstático
Hidratación parcialSolo components interactivosMostly estático, islands interactivos
Resumability~No JS upfrontVisible + clickeable inmediatamente

Problemas hidratación comunes

Mismatch hidratación

HTML server-rendered difiere del output client-rendered.

Hidratación lenta en páginas pesadas

Páginas con miles de components hidratan lento.

Hidratación bloqueando input usuario

Usuario clickea botón mientras hidratación corre.

Mejores prácticas hidratación

  • Minimizar JS shipped.
  • Usar hidratación parcial.
  • Evitar mismatches SSR/CSR.
  • Stream HTML.
  • Defer hidratación non-crítica.
  • Testear en devices reales.
  • Considerar zero-JS para páginas contenido.
  • Monitor INP en producción.

Pitfalls hidratación comunes

  • Mismatches hidratación en dev.
  • Referencias window durante render.
  • IDs random.
  • Init pesado state global.
  • Big component trees en cada route.
  • Scripts third-party síncronos.
  • Olvidar testear en devices lentos.

FAQ: Hidratación

¿Por qué se necesita hidratación?

SSR envía HTML estático para primer paint rápido. Hidratación añade la capa JS.

¿Cuánto debería tomar la hidratación?

< 100ms en device rápido, < 300ms en mobile mid-tier.

¿Diferencia entre hidratación y rendering?

Rendering: producir HTML. Hidratación: attachar JS al HTML existente.

¿Qué es "React hydration"?

ReactDOM.hydrateRoot() recorre DOM server-rendered.

¿Puedo evitar hidratación enteramente?

Para páginas sin interactividad: sí. Para interactivas: vía Qwik o partial hydration.

¿Qué es React Server Components?

Components que corren solo en servidor.

¿Afecta hidratación al SEO?

Indirectamente — vía Core Web Vitals (INP, LCP).

Testea costo hidratación con LoadFocus

LoadFocus corre auditorías Lighthouse desde 25+ regiones, midiendo INP y Total Blocking Time. Regístrate en loadfocus.com/signup.

¿Qué tan rápido es tu sitio web?

Mejora su velocidad y SEO sin problemas con nuestra Prueba de Velocidad gratuita.

Prueba de velocidad de sitio web gratis

Analice la velocidad de carga de su sitio web y mejore su rendimiento con nuestro comprobador de velocidad de página gratuito.

×