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.

×