Todo tutorial de Next.js que guardaste antes de octubre de 2023 enseña ya un framework legacy
El relato dominante dice que Next.js es la apuesta segura. Mayor pool de contratación de React. La mejor documentación. El respaldo de Vercel. Elegir al líder del mercado es elegir bajo riesgo.
*El problema: eso dejó de ser cierto en octubre de 2022. *
Tres años. Cuatro versiones mayores. Next.js 13, 14, 15 y 16 rompieron sus propios defaults cada ~12 meses. Renombró su fichero de middleware a proxy.ts. Eliminó caches que venían activadas por defecto. Movió todo el modelo de renderizado —de "server-side rendering para SEO" a React Server Components ejecutándose en el servidor por defecto. Y el "safe choice" sigue ahí: tu app compila, tus tests pasan, todo funciona.
Hasta que un tutorial de 2023 ya no cuadra con tu versión y no sabes por qué.
El verdadero Next.js actual no es el framework conservador que elegiste en 2022. *Es la apuesta más radical y con más velocidad de cambio de toda la infraestructura front-end de React. *
El mito de la página: tu código de 2022 ya es legacy
Cuando Next.js se lanzó en 2016 dentro de ZEIT (ahora Vercel), la arquitectura se estabilizó alrededor del Pages Router. El directorio pages/, con getStaticProps y getServerSideProps. Esa arquitectura fue la identidad del framework durante las versiones 7 a 12.
El modelo mental era una elección triple por página: <b>estática</b> (getStaticProps), server-rendered (getServerSideProps) o client-side. SEO. SSR. Rendimiento. Cada página elegía su camino.
En Next.js 13 (octubre 2022), Vercel introdujo el App Router como beta. En Next.js 14 (octubre 2023), lo convirtió en el default estable y recomendado. Y con él llegó React Server Components, convenciones de fichero nuevas (layout.tsx, page.tsx, loading.tsx, error.tsx) y un cambio conceptual: ya no eliges entre estático y dinámico por página.
Ahora un componente simplemente se ejecuta en el servidor a menos que optes por salir con 'use client'.
Traducido: una base de código escrita en el idioma dominante de 2022 —Pages Router + getServerSideProps— es hoy técnicamente legacy. No puede usar Server Components. Requiere una reescritura completa para el App Router. Y la comunidad, los cursos y mil tutoriales de hace dos años enseñan exactamente esa arquitectura obsoleta.
❌ Enfoque incorrecto: "Tenemos SSR para SEO, buscamos una migración incremental del Pages al App Router."
✅ Enfoque correcto: "El App Router no es una versión mejorada del Pages Router. Son dos mundos distintos que comparten React debajo."
Mira la misma página de blog en los dos mundos. Pages Router, 2022:
App Router, hoy:
No es una refactorización cosmética. El modelo mental completo —"el servidor existe para SEO, el cliente para interactividad"— se ha colapsado. En el App Router, el servidor es el punto de partida. El cliente es la excepción declarada con 'use client', que no es un toggle de hidratación: *es una directiva de frontera de módulo. *
El golpe silencioso: el culebrón del cacheo entre v13/v14 y v15
Aquí es donde los tutoriales viejos son más peligrosos.
El App Router temprano (v13/v14) era estático-por-defecto. Las llamadas fetch quedaban cacheadas implícitamente. Los GET Route Handlers se cacheaban. El Router Cache del cliente guardaba resultados. Código escrito en 2023 era instantáneo — no porque fuera rápido, sino porque todo estaba en cache.
Next.js 15 (octubre 2024) dio la vuelta a esos defaults. Los GET Route Handlers ya no se cachean por defecto. El Router Cache del cliente, tampoco. Y las request APIs (cookies, headers, params) se volvieron async.
Mira lo que eso significa con un ejemplo concreto. Un GET Route Handler escrito en el estilo v14:
En v13/v14, ese handler se cacheaba automáticamente. En v15 y v16, determinará el renderizado dinámico de la ruta porque un componente que depende de esa respuesta ya no puede cachearse. Para recuperar salida estática, tienes que optar explícitamente:
Página instantánea en 2023 porque estaba cacheada. Round trip de red en 2025 porque nadie leyó las release notes. *La regresión silenciosa de rendimiento es el coste real de "semver majors con defaults cambiados". *
Y esto afecta a otro patrón que la mayoría lleva en producción: los Server Actions. La mutación de datos ya no necesita un Route Handler de API. Un formulario en un Server Component puede mutar directamente con una función async:
Nada de esto existía en 2022. Y reescribe cómo piensas sobre APIs y endpoints.
Next.js 16: Turbopack, proxy.ts y el cinturón que se aprieta otra vez
La cadencia no se ha detenido. Next.js 16 (octubre 2025) hizo estable a Turbopack como bundler para dev y producción, renombró middleware.ts a `proxy.ts` y eliminó el acceso síncrono a params.
Un middleware que en v13–v15 protegía rutas con auth:
Su equivalente en v16, renombrado y con API async:
Cuatro majors en tres años. 13→14→15→16. La app mediana de producción está uno o dos majors por detrás. Y cada hueco se agranda: params/headers síncronos → async, middleware → proxy, Pages → App, webpack → Turbopack.
No solo eso: Next.js absorbe los cambios ascendentes de React. La v13 ya ship-eó Server Components antes de que React 19 los estabilizara oficialmente. El framework lidera la curva, y luego rompe sus propias APIs encima.
Para managers técnicos, esto tiene una consecuencia dura: *"Senior React Developer" ya no es suficiente. Necesitas gente que lea las release notes de Next.js cada año. *
El Patrón del Impuesto de Versión: cómo no quedarte en la cola
Aquí va mi método para operar bajo esta cadencia. Lo llamo el El Patrón del Impuesto de Versión. Cinco pasos, cada vez que toques un proyecto Next.js:
Paso 1 — Fija tu versión y presupuesta el impuesto. Trata cada release mayor (anual desde 2022) como un proyecto de migración, no como una actualización de rutina. Antes de tocar tu código de app, lee el Upgrade Guide oficial y ejecuta los codemods:
Paso 2 — Decide tu identidad de Router hoy. Si estás en Pages Router, asume una reescritura completa hacia App Router, no un retro-portado incremental. Lista qué rutas son interactivas vs de contenido para conocer tu frontera servidor/cliente.
Paso 3 — Toma una decisión de hosting explícita en el mes uno. Vercel-first frente a self-hosting con output Node.js standalone (output: 'standalone', Docker). Muchas capacidades del App Router —ISR bajo demanda, optimización de imagen en el edge, soporte a PPR— tienen implementaciones de primera clase en Vercel y costes operativos distintos si te auto-alojas. Retrofitar esto después es de donde nacen las reescrituras.
Paso 4 — Audita tus asunciones de cacheo contra la versión actual. Ejecuta next build e inspecciona la tabla de rutas. Mira qué rutas son estáticas, dinámicas o ISR. Re-añade generateStaticParams, force-static o la revalidación con semántica 'use cache' donde de verdad quieras salida estática. *No copies ejemplos v13/v14 verbatim. *
Paso 5 — Añade observabilidad y una página de pruebas canary para RSC. La gestión de datos ahora ocurre en el servidor, dentro de componentes. Los waterfalls y los error boundaries (error.tsx, global-error.tsx) hay que probarlos en producción, no solo en dev.
¿Y el argumento del SEO?
La frase "SSR para SEO" —la razón clásica para elegir Next.js— es un modelo mental muerto. En 2026, SSR ya no es la feature titular. Lo que determina el rendimiento es el split compilación/request: salida estática, ISR, dinámico y el PPR experimental (Partial Prerendering). Para sitios dominados por contenido, una estrategia estática/ISR gana a renderizar cada petición en el servidor.
SSR es una capacidad y un coste. No una garantía de rendimiento. El propio Next.js 15 osciló hacia render dinámico precisamente porque cachear no es gratis.
Dónde queda el lock-in
El lock-in no es binario. No es cierto que App Router requiera Vercel: con output: 'standalone' te auto-alojas en Node.js o Docker, y RSC/Server Actions son HTTP plano. El lock-in práctico es la completitud de features —on-demand ISR, optimización de imagen en el edge, soporte tight de PPR— que están productivizadas en Vercel y que en self-hosting tienes que ensamblar tú mismo o aceptar estático puro.
La competencia real de Next.js no son "otros frameworks React". Es la asunción por defecto de que una app React tiene que ser una Next.js app. React Router (framework mode) y Astro atienden a la misma audiencia con tradeoffs distintos: React Router mantiene un modelo request/response más cercano al SSR clásico; Astro empuja server-first con islas y envía cero JavaScript por defecto.
Next.js aporta una gravedad de ecosistema inigualable y la madurez de Server Components más grande del mercado. *A cambio, cobra el impuesto de migración anual más alto y ejerce la atracción más fuerte hacia un único vendor de hosting. *
Conclusiones
El relato de la "apuesta segura" te lo venden desde 2016. Desde 2022, la evidencia es la contraria:
→ Los defaults se rompen cada ~12 meses. V13, v14, v15, v16. Caches, middleware, request APIs, bundler. Todo ha cambiado en tres años.
→ El código de hace dos años es legacy. Pages Router, getServerSideProps, fetch cacheado implícitamente — toda esa arquitectura es historia.
→ Migrar no es un evento. Es un ritmo. Dentro del propio App Router, v14→v15 cambió defaults de cacheo y v15→v16 renombró middleware y forzó params async. Tu código App Router de 2023 necesita reescritura en 2026.
La pregunta no es si Next.js es "seguro". Es si estás presupuestando el impuesto de versión que cobra cada octubre. Los equipos que lo hacen —apiñando el upgrade, auditando cacheo contra la versión actual, decidiendo su hosting en el mes uno— siguen operando a toda velocidad. Los que esperaban estabilidad llevan tres años de retraso sin darse cuenta.
Next.js no es el default aburrido que eligiste por seguridad. Es la base tecnológica más veloz de React, y la única forma de sobrevivirla es tratarla como lo que es: un framework que te obliga a migrar cada año.
La próxima vez que alguien diga "Next.js es lo seguro", pregúntale qué versión tiene en producción. Esa respuesta te dirá más que mil debates de arquitectura.
Artículos relacionados
- Next.js 16 New Features: Las 5 Que Multiplican tu Velocidad de Deploy (y las 3 Trampas que Nadie Cuenta)
- Next.js 16 New Features: Las 3 que Sí Importan y el Framework Que Olvidaste Aprender
- Next.js 16 New Features: Las 3 que Ponen Tu Proyecto en Riesgo (y Cómo Sortearlas)
- Next.js se Ha Vuelto Peligrosamente Sobrediseñado: El App Router Te Cuesta Más de lo que Aporta
- Next.js 16 New Features: Las 3 que Sí Importan y el Framework Que Olvidaste Aprender
---
¿Quieres recibir contenido como este cada semana? Suscríbete a mi newsletter

