Next.js 16: Novedades y Nuevas Funcionalidades
Descubre todas las nuevas características de Next.js 16: desde mejoras en el App Router hasta optimizaciones de rendimiento.
Next.js 16 está disponible con mejoras significativas en Turbopack, caching y arquitectura. Esta versión marca un antes y después en el desarrollo con Next.js, introduciendo Cache Components, mejor DX y un rendimiento excepcional.
Turbopack ahora es estable y por defecto
Turbopack ha alcanzado estabilidad completa y ahora es el bundler por defecto en todos los proyectos nuevos de Next.js. Más del 50% de las sesiones de desarrollo y 20% de los builds en producción ya lo están usando.
- 2-5× builds de producción más rápidos
- Hasta 10× Fast Refresh más rápido
- Sin configuración necesaria - funciona automáticamente
- Soporte para filesystem caching en desarrollo
- Mejor manejo de errores y debugging
1# Turbopack es ahora el default, no necesitas hacer nada
2npm run dev
3
4# Si necesitas volver a webpack temporalmente
5next dev --webpack
6next build --webpackCache Components: Nueva forma de cachear
Cache Components es el cambio más importante de Next.js 16. A diferencia del caching implícito de versiones anteriores, ahora todo es opt-in y explícito, dándote control total sobre qué cachear.
Por defecto, todo el código dinámico se ejecuta en tiempo de request, alineándose mejor con lo que los desarrolladores esperan de un framework full-stack.
1// Habilitar Cache Components en next.config.ts
2const nextConfig = {
3 cacheComponents: true,
4};
5
6export default nextConfig;Usa la nueva directiva 'use cache' para cachear páginas, componentes o funciones:
1'use cache';
2
3export async function getProducts() {
4 // Esta función se ejecuta y cachea automáticamente
5 const products = await db.product.findMany();
6 return products;
7}
8
9// Las siguientes llamadas usarán el cache
10// Next.js genera las cache keys automáticamentePartial Pre-Rendering (PPR) completo
Cache Components completa la historia de PPR, que fue introducido en 2023. Ahora puedes combinar contenido estático y dinámico en la misma página sin sacrificar rendimiento.
1import { Suspense } from 'react';
2
3export default async function ProductPage() {
4 return (
5 <div>
6 {/* Contenido estático - renderizado instantáneamente */}
7 <header>
8 <h1>Mi Tienda</h1>
9 <nav>Navegación estática</nav>
10 </header>
11
12 {/* Contenido dinámico - se carga progresivamente */}
13 <Suspense fallback={<ProductSkeleton />}>
14 <ProductList />
15 </Suspense>
16
17 {/* Footer estático */}
18 <footer>Footer estático</footer>
19 </div>
20 );
21}proxy.ts reemplaza middleware.ts
Para hacer más explícito el boundary de red de tu aplicación, middleware.ts ahora se llama proxy.ts y se ejecuta en el runtime de Node.js.
1// Antes: middleware.ts
2export function middleware(request: NextRequest) {
3 return NextResponse.redirect(new URL('/home', request.url));
4}
5
6// Ahora: proxy.ts
7export default function proxy(request: NextRequest) {
8 return NextResponse.redirect(new URL('/home', request.url));
9}"middleware.ts aún funciona para casos de uso con Edge runtime, pero está deprecado y se eliminará en futuras versiones."
Nuevas APIs de caching mejoradas
Next.js 16 introduce APIs de caching más explícitas para mejor control:
revalidateTag() actualizado
Ahora requiere un cacheLife profile como segundo argumento para habilitar stale-while-revalidate:
1import { revalidateTag } from 'next/cache';
2
3// ✅ Usa un profile de cacheLife (recomendamos 'max' para la mayoría de casos)
4revalidateTag('blog-posts', 'max');
5
6// Otros profiles disponibles
7revalidateTag('news-feed', 'hours');
8revalidateTag('analytics', 'days');
9
10// O usa un objeto inline con tiempo personalizado
11revalidateTag('products', { expire: 3600 });
12
13// ⚠️ Deprecado - forma con un solo argumento
14revalidateTag('blog-posts');updateTag() - Nueva API
Nueva API exclusiva para Server Actions que provee semántica read-your-writes, expirando y leyendo datos frescos inmediatamente:
1'use server';
2
3import { updateTag } from 'next/cache';
4
5export async function updateUserProfile(userId: string, profile: Profile) {
6 await db.users.update(userId, profile);
7
8 // Expira el cache y refresca inmediatamente
9 // El usuario ve sus cambios instantáneamente
10 updateTag(`user-${userId}`);
11}refresh() - Nueva API
API para refrescar solo datos no cacheados, sin tocar el cache:
1'use server';
2
3import { refresh } from 'next/cache';
4
5export async function markNotificationAsRead(notificationId: string) {
6 await db.notifications.markAsRead(notificationId);
7
8 // Refresca el contador de notificaciones
9 // (que no está cacheado)
10 refresh();
11}Routing y navegación mejorados
Next.js 16 incluye una revisión completa del sistema de routing y navegación:
- Layout deduplication: Cuando precargas múltiples URLs con un layout compartido, el layout se descarga una sola vez
- Incremental prefetching: Solo precarga partes que no están en cache
- Cancela requests cuando el link sale del viewport
- Prioriza prefetch al hacer hover o re-entrar al viewport
- Re-precarga links cuando sus datos se invalidan
Next.js Devtools MCP
Nueva integración con Model Context Protocol para debugging asistido por IA con conocimiento contextual de tu aplicación.
- Conocimiento de Next.js: Routing, caching y renderizado
- Logs unificados: Browser y servidor sin cambiar contextos
- Acceso automático a errores: Stack traces detallados
- Contexto de página: Entendimiento de la ruta activa
React Compiler estable
El soporte para React Compiler ahora es estable. Memoiza componentes automáticamente, reduciendo re-renders innecesarios sin cambios manuales.
1// next.config.ts
2const nextConfig = {
3 reactCompiler: true,
4};
5
6export default nextConfig;1# Instalar el plugin
2npm install babel-plugin-react-compiler@latestReact 19.2 y Canary Features
El App Router usa el último release Canary de React, incluyendo React 19.2:
- View Transitions: Anima elementos que se actualizan dentro de Transitions
- useEffectEvent(): Extrae lógica no-reactiva de Effects
- <Activity/>: Renderiza actividad de fondo manteniendo el estado
Mejoras en logging
Los logs de desarrollo ahora muestran dónde se gasta el tiempo:
1 ▲ Next.js 16 (Turbopack)
2
3 ✓ Compiled successfully in 615ms
4 ✓ Finished TypeScript in 1114ms
5 ✓ Collecting page data in 208ms
6 ✓ Generating static pages in 239ms
7 ✓ Finalizing page optimization in 5msCómo actualizar a Next.js 16
1# Usar el CLI de upgrade automático (recomendado)
2npx @next/codemod@canary upgrade latest
3
4# O actualizar manualmente
5npm install next@latest react@latest react-dom@latest
6
7# O iniciar un proyecto nuevo
8npx create-next-app@latestBreaking Changes importantes
- Node.js 20.9+ es ahora el mínimo requerido
- TypeScript 5.1+ es el mínimo
- params y searchParams ahora deben ser async
- cookies(), headers(), draftMode() ahora deben ser async
- Turbopack es el bundler por defecto
- AMP support ha sido removido
- Comando next lint removido
"Next.js 16 representa el mayor salto en rendimiento y experiencia del desarrollador hasta la fecha. El equipo ha escuchado el feedback y entregado características que hacen el desarrollo más predecible y explícito."