Cómo actualizar a la versión 15
Actualización de la versión 14 a la 15
Para actualizar a Next.js versión 15, puedes usar el codemod upgrade
:
Si prefieres hacerlo manualmente, asegúrate de instalar las últimas versiones de Next y React:
Nota importante:
- Si ves una advertencia de dependencias peer, puede que necesites actualizar
react
yreact-dom
a las versiones sugeridas, o usar los flags--force
o--legacy-peer-deps
para ignorar la advertencia. Esto no será necesario una vez que tanto Next.js 15 como React 19 sean estables.
React 19
- Las versiones mínimas de
react
yreact-dom
son ahora la 19. useFormState
ha sido reemplazado poruseActionState
. El hookuseFormState
sigue disponible en React 19, pero está obsoleto y se eliminará en una futura versión. Se recomienda usaruseActionState
, que incluye propiedades adicionales como leer directamente el estadopending
. Más información.useFormStatus
ahora incluye claves adicionales comodata
,method
yaction
. Si no estás usando React 19, solo estará disponible la clavepending
. Más información.- Lee más en la guía de actualización a React 19.
Nota importante: Si estás usando TypeScript, asegúrate de actualizar también
@types/react
y@types/react-dom
a sus últimas versiones.
APIs de solicitud asíncrona (Cambio importante)
Las APIs dinámicas que antes eran síncronas y dependían de información en tiempo de ejecución ahora son asíncronas:
cookies
headers
draftMode
params
enlayout.js
,page.js
,route.js
,default.js
,opengraph-image
,twitter-image
,icon
, yapple-icon
.searchParams
enpage.js
Para facilitar la migración, hay disponible un codemod que automatiza el proceso y las APIs pueden accederse temporalmente de forma síncrona.
cookies
Uso asíncrono recomendado
Uso síncrono temporal
headers
Uso asíncrono recomendado
Uso síncrono temporal
draftMode
Uso asíncrono recomendado
Uso síncrono temporal
params
y searchParams
Layout asíncrono
Layout síncrono
Página asíncrona
Página síncrona
Manejadores de ruta
Configuración runtime
(Cambio importante)
La configuración runtime
de segmento de ruta admitía anteriormente un valor experimental-edge
además de edge
. Ambas configuraciones se refieren a lo mismo, y para simplificar las opciones, ahora mostraremos un error si se usa experimental-edge
. Para solucionarlo, actualiza tu configuración runtime
a edge
. Hay disponible un codemod para hacer esto automáticamente.
Solicitudes fetch
Las solicitudes fetch
ya no se almacenan en caché por defecto.
Para activar el almacenamiento en caché para solicitudes fetch
específicas, puedes pasar la opción cache: 'force-cache'
.
Para activar el almacenamiento en caché para todas las solicitudes fetch
en un layout o página, puedes usar la opción de configuración de segmento export const fetchCache = 'default-cache'
segment config option. Si solicitudes fetch
individuales especifican una opción cache
, se usará esa en su lugar.
Manejadores de ruta
Las funciones GET
en Manejadores de ruta ya no se almacenan en caché por defecto. Para activar el almacenamiento en caché para métodos GET
, puedes usar una opción de configuración de ruta como export const dynamic = 'force-static'
en tu archivo de Manejador de ruta.
Caché del enrutador del lado del cliente
Al navegar entre páginas mediante <Link>
o useRouter
, los segmentos de página ya no se reutilizan desde la caché del enrutador del lado del cliente. Sin embargo, todavía se reutilizan durante la navegación hacia atrás y adelante del navegador y para diseños compartidos.
Para activar el almacenamiento en caché de segmentos de página, puedes usar la opción de configuración staleTimes
:
Los diseños y estados de carga todavía se almacenan en caché y se reutilizan en la navegación.
next/font
El paquete @next/font
ha sido eliminado en favor del next/font
incorporado. Hay disponible un codemod para renombrar tus importaciones de forma segura y automática.
bundlePagesRouterDependencies
experimental.bundlePagesExternals
ahora es estable y se ha renombrado a bundlePagesRouterDependencies
.
serverExternalPackages
experimental.serverComponentsExternalPackages
ahora es estable y se ha renombrado a serverExternalPackages
.
Speed Insights
La instrumentación automática para Speed Insights se eliminó en Next.js 15.
Para seguir usando Speed Insights, sigue la guía rápida de Vercel Speed Insights.
Geolocalización en NextRequest
Las propiedades geo
e ip
en NextRequest
han sido eliminadas ya que estos valores son proporcionados por su proveedor de alojamiento. Existe un codemod disponible para automatizar esta migración.
Si está utilizando Vercel, puede usar alternativamente las funciones geolocation
e ipAddress
de @vercel/functions
: