Rendering
- Cuando usás Next.js 15+ con App Router, algo clave es decidir dónde llamar a los endpoints:
¿Lo hacemos en el servidor (SSR, RSC, SSG, ISR)?
¿O lo hacemos en el cliente (CSR con useEffect)?
La elección impacta en el SEO, el rendimiento y hasta en la seguridad. Veamos todo con ejemplos.
📝 Nota: cuando hablamos de SEO, no solo nos referimos a Google, sino también a otros motores como Bing, DuckDuckGo, Yahoo, etc. Todos ellos dependen del contenido renderizado para indexar correctamente las páginas.
🧠 Modos de renderizado en Next.js
Next.js ofrece varios modos de renderizado para adaptarse a diferentes necesidades. A continuación, un resumen con definiciones y enlaces a la documentación oficial:
- SSR (Server Side Rendering): El contenido se genera en el servidor en cada request. Ideal para SEO y contenido dinámico.
👉 Ver doc oficial - RSC (React Server Components): Renderiza componentes en el servidor, enviando solo el resultado al cliente. Muy útil para mantener lógica del lado del servidor.
👉 Ver doc oficial - SSG (Static Site Generation): Genera páginas HTML en tiempo de build. Súper rápidas, ideales para contenido que no cambia seguido.
👉 Ver doc oficial - ISR (Incremental Static Regeneration): Permite regenerar páginas estáticas después del build, combinando lo mejor de SSG y SSR.
👉 Ver doc oficial
🖥️ SSR – Server Side Rendering
El servidor hace el fetch antes de renderizar. El usuario recibe una página ya armada, lo que favorece el SEO y reduce el tiempo hasta el primer contenido.
Cuándo usar SSR:
- Sitios con datos que cambian con frecuencia.
- Contenido sensible al usuario (auth, cookies).
- SEO es prioridad.
Ejemplo:
🌐 CSR – Client Side Rendering
Los datos se obtienen en el cliente luego de montar el componente usando useEffect. El HTML inicial está vacío.
Cuándo usar CSR:
- Dashboards, contenido personalizado.
- El contenido depende del usuario logueado.
- No hay necesidad de optimización SEO.
Ejemplo:
🪄 SSG – Static Site Generation
El contenido se genera una sola vez en tiempo de build y se entrega como HTML desde CDN.
Cuándo usar SSG:
- Blogs, documentaciones, landings.
- Contenido que no cambia frecuentemente.
- SEO es importante, pero no es contenido dinámico.
Ejemplo:
🔄 ISR – Incremental Static Regeneration
Permite generar páginas como SSG pero revalidarlas automáticamente después de X segundos.
Cuándo usar ISR:
- Catálogos de productos, blogs que se actualizan a diario.
- Necesitás rendimiento + contenido actual.
- Querés evitar hacer SSR en cada request.
Ejemplo:
🔐 Seguridad y performance en llamadas a APIs
Llamada desde el servidor (SSR, SSG, ISR):
- Oculta la API Key.
- Ideal para tokens secretos, CMSs, etc.
Llamada desde el cliente (CSR):
- Se expone la API Key.
- Solo si no hay datos sensibles.
🔍 Comparativa SSR vs CSR
Supongamos una página que obtiene productos desde una API externa como Contentful.
SSR:
- fetch() se hace en el servidor.
- SEO listo, contenido visible al instante.
- Ideal para bots y usuarios reales.
CSR:
- El HTML llega vacío.
- useEffect() hace el fetch después.
- Google ve poco o nada de contenido (peor para SEO).
✅ ¿Cuándo usar cada uno?
- SSR: Contenido dinámico y con SEO.
- CSR: Contenido personalizado por usuario, sin necesidad de SEO.
- SSG: Contenido estático (blogs, landings).
- ISR: Contenido semi-estático que se actualiza cada tanto.
📊 Comparativa Final
| Modo | SEO | Performance | Datos actualizados | Ideal para |
|---|---|---|---|---|
| SSR | ✅ | 🟡 Medio | ✅ Siempre | Home, catálogo dinámico |
| CSR | ❌ | ⚠️ Bajo | ✅ Pero cliente-only | Dashboards, apps |
| SSG | ✅ | ✅ Muy alto | ❌ Solo al build | Landings, blogs estáticos |
| ISR | ✅ | ✅ Muy alto | ✅ cada X segundos | Ecommerce, listados |
📌 Glosario
- SEO: Search Engine Optimization.
- Tiempo inicial: Tiempo en mostrar contenido visible.
- Revalidación: Tiempo de espera hasta regenerar la página (ISR).
- CDN: Red de entrega de contenido que mejora el rendimiento.
- “Client-only”: Código que se ejecuta solo en el navegador (no en el server).