guias·7 min de lectura

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:

bash
# Ahora es el default
next build

Los 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:

bash
npm install react@latest react-dom@latest

React 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:

typescript
// ANTES (v15, todavia funcionaba con warning)
const cookieStore = cookies();
 
// AHORA (v16, obligatorio)
const cookieStore = await cookies();
typescript
// Params en page.tsx
export default async function Page({
  params,
}: {
  params: Promise<{ slug: string }>;
}) {
  const { slug } = await params;
  // ...
}

Pasos de migracion

1. Actualizar paquetes

bash
npm install next@latest react@latest react-dom@latest

Si usas TypeScript:

bash
npm install -D @types/react@latest @types/react-dom@latest

2. Correr el codemod

Next.js incluye codemods que automatizan los cambios mas comunes:

bash
npx @next/codemod@latest upgrade

Esto actualiza:

  • cookies() y headers() a sus versiones async
  • params y searchParams a Promise
  • Imports deprecados

3. Verificar tu next.config

typescript
// 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, removelo
  • experimental.serverActions -> estable desde v15, removelo
  • experimental.typedRoutes -> estable

4. Revisar middleware

Si tu middleware usaba APIs que cambiaron:

typescript
// 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

bash
npm run build
npm test

Revisa los warnings. Si algo falla, el error message de Next.js 16 generalmente te dice exactamente que cambiar.

Breaking changes importantes

CambioQue hacer
cookies() sincrono eliminadoAgregar await
headers() sincrono eliminadoAgregar await
params sincrono eliminadoTipar como Promise<> y agregar await
React 18 no soportadoActualizar a React 19
experimental.turbo eliminadoRemover de next.config
Webpack mode deprecadoMigrar 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.

#nextjs#migracion#react#typescript#actualizacion

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.