Qué es la hidratación en JavaScript y cuándo puede aportar valor en aplicaciones web.
La hidratación es una técnica común en aplicaciones JavaScript que generan HTML en el servidor. Permite que una aplicación renderizada en el servidor “cobre vida” en el navegador del usuario, adjuntando interactividad restante que sólo puede correr en el cliente.
Cuando trabajamos con frameworks como React, Vue o Svelte, esta técnica se vuelve relevante si estamos generando contenido del lado del servidor (SSR - Server Side Rendering) y queremos mantener una experiencia interactiva del lado del cliente sin perder rendimiento. Vamos a ver cómo funciona este proceso, qué beneficios tiene y en qué casos puede no ser la mejor opción.
Cuando renderizamos una aplicación del lado del servidor, generamos HTML completo que se envía al navegador. Eso mejora el tiempo de carga inicial y facilita el rastreo por parte de buscadores. Sin embargo, ese HTML no tiene comportamiento alguno hasta que JavaScript lo “hidrate”. Es decir, hasta que se cargue el mismo árbol de componentes en el navegador y se conecten los eventos y el estado.
El proceso funciona así:
Este paso de sincronización entre lo que el servidor generó y lo que el cliente espera es delicado. Si hay una diferencia entre el HTML generado en el servidor y lo que el cliente renderiza, se puede producir un error o un re-render innecesario.
La principal motivación es la mejora en el tiempo hasta que el contenido es visible (TTFB) sin renunciar a la interactividad. Pero hay situaciones donde puede aportar más valor:
Ahora bien, la hidratación tiene un costo: el bundle de JavaScript sigue siendo necesario, y puede ser grande. Además, duplicamos trabajo al renderizar tanto en el servidor como en el cliente. En proyectos muy dinámicos o con muchos eventos, puede ser más conveniente una estrategia diferente, como el renderizado completamente del lado del cliente (CSR) o técnicas de partial hydration.
No siempre necesitamos implementar hidratación. Dependerá del tipo de proyecto, de las métricas que queramos mejorar y del comportamiento esperado del usuario. Algunas recomendaciones útiles:
En frameworks como Next.js o Astro ya existen estrategias más avanzadas para controlar qué partes se hidratan y cuándo. Podemos aprovechar esas opciones para reducir el peso del bundle y evitar rehidrataciones innecesarias.
La hidratación puede mejorar la experiencia del usuario en ciertos contextos, especialmente cuando buscamos equilibrio entre velocidad de carga y funcionalidad. No es una solución universal; conviene analizar su impacto en cada caso.
Como desarrolladores, nuestra tarea es entender estas herramientas y usarlas con criterio, sabiendo cuándo conviene aplicarlas y cuándo es mejor optar por otras estrategias.