Next.js 16: Guia de Migracion y Novedades
Migra tu proyecto de Next.js 15 a 16. Novedades principales, breaking changes, y pasos para actualizar sin romper tu app.
Next.js 16: Guia de Migracion y Novedades
Next.js 16 consolida lo que empezo en la v15: React 19, Turbopack estable, y el App Router como el camino definitivo. Si tu proyecto ya estaba en la v15 con App Router, la migracion es manejable. Si todavia usabas APIs sincronas, aqui hay mas trabajo.
Novedades principales
Turbopack estable para builds
En Next.js 15, Turbopack era estable solo para dev. En la v16, tambien lo es para build:
# Ahora es el default
next buildLos tiempos de build bajan significativamente, especialmente en proyectos grandes. No necesitas configurar nada -- es el default.
React 19 obligatorio
Next.js 16 requiere React 19. Si tu proyecto todavia usaba React 18, necesitas actualizar:
npm install react@latest react-dom@latestReact 19 trae use(), useFormStatus(), useOptimistic() y Server Actions estables. Si ya los usabas en Next.js 15, todo sigue igual.
APIs async (cookies, headers, params)
En Next.js 15, cookies(), headers() y params ya eran async pero las versiones sincronas todavia funcionaban con deprecation warnings. En la v16, las sincronas se eliminaron:
// ANTES (v15, todavia funcionaba con warning)
const cookieStore = cookies();
// AHORA (v16, obligatorio)
const cookieStore = await cookies();// Params en page.tsx
export default async function Page({
params,
}: {
params: Promise<{ slug: string }>;
}) {
const { slug } = await params;
// ...
}Pasos de migracion
1. Actualizar paquetes
npm install next@latest react@latest react-dom@latestSi usas TypeScript:
npm install -D @types/react@latest @types/react-dom@latest2. Correr el codemod
Next.js incluye codemods que automatizan los cambios mas comunes:
npx @next/codemod@latest upgradeEsto actualiza:
cookies()yheaders()a sus versiones asyncparamsysearchParamsa Promise- Imports deprecados
3. Verificar tu next.config
// next.config.ts (v16)
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
// Turbopack es default, no necesitas habilitarlo
// Si tenias experimental.turbo, removelo
};
export default nextConfig;Opciones experimentales que se graduaron a estables en v16:
experimental.turbo-> ya es default, removeloexperimental.serverActions-> estable desde v15, removeloexperimental.typedRoutes-> estable
4. Revisar middleware
Si tu middleware usaba APIs que cambiaron:
// middleware.ts
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
export function middleware(request: NextRequest) {
// cookies() en middleware sigue siendo sincrono (caso especial)
const token = request.cookies.get("token");
if (!token) {
return NextResponse.redirect(new URL("/login", request.url));
}
return NextResponse.next();
}5. Correr build y tests
npm run build
npm testRevisa los warnings. Si algo falla, el error message de Next.js 16 generalmente te dice exactamente que cambiar.
Breaking changes importantes
| Cambio | Que hacer |
|---|---|
cookies() sincrono eliminado | Agregar await |
headers() sincrono eliminado | Agregar await |
params sincrono eliminado | Tipar como Promise<> y agregar await |
| React 18 no soportado | Actualizar a React 19 |
experimental.turbo eliminado | Remover de next.config |
| Webpack mode deprecado | Migrar custom webpack config a Turbopack |
Si todavia usas Pages Router
Pages Router sigue funcionando en Next.js 16. No esta deprecado, pero no recibe funcionalidades nuevas. Si tu proyecto es 100% Pages Router, la migracion a v16 es minima -- basicamente actualizar paquetes y React.
Pero si planeas usar features nuevas (Server Components, streaming, Server Actions), necesitas migrar a App Router. Puedes hacerlo gradualmente -- ambos routers coexisten en el mismo proyecto.
Para entender las diferencias, revisa la comparativa App Router vs Pages Router.
Siguiente paso
Con Next.js 16 actualizado, revisa que tu CI/CD siga funcionando. La guia de GitHub Actions tiene el pipeline completo. Y si deployeas con Docker, actualiza tu Dockerfile con la guia de Docker para Next.js.
Preguntas frecuentes
Cuales son las novedades principales de Next.js 16?
Las mas importantes: React 19 como dependencia por default, Turbopack estable para dev y build, mejoras en caching, y APIs async para cookies/headers ya son el unico camino (las sincronas se eliminaron).
Es dificil migrar de Next.js 15 a 16?
Si tu proyecto ya usaba App Router y las APIs async de Next.js 15, la migracion es relativamente simple. Los codemods automaticos manejan la mayoria de cambios. Si todavia usabas Pages Router o APIs sincronas, hay mas trabajo manual.
Next.js 16 es mas rapido?
Si, especialmente en desarrollo. Turbopack estable para builds reduce los tiempos significativamente. En produccion, las mejoras de caching y la optimizacion del streaming hacen que las paginas carguen mas rapido.
Puedo seguir usando Pages Router en Next.js 16?
Si, Pages Router sigue siendo soportado. Pero no recibe funcionalidades nuevas. Todo el desarrollo activo esta en App Router. Si empiezas un proyecto nuevo, usa App Router.
Articulos relacionados
Testing en Next.js con Vitest y Playwright
Configura testing en tu proyecto Next.js. Unit tests con Vitest, E2E con Playwright, y como integrarlos en tu pipeline de CI/CD.
Tailwind CSS 4: Migracion desde v3
Migra tu proyecto de Tailwind CSS 3 a 4. Cambios principales, nuevo sistema de configuracion, CSS-first config y como actualizar sin romper tu app.
React Server Components: Guia Practica y Patrones
Guia practica de React Server Components. Cuando usarlos, patrones de composicion, data fetching, y como combinar Server y Client Components en Next.js.