Upgrade auf Version 15
Upgrade von Version 14 auf 15
Um auf Next.js Version 15 zu aktualisieren, können Sie den upgrade
-Codemod verwenden:
Wenn Sie es manuell durchführen möchten, stellen Sie sicher, dass Sie die neuesten Versionen von Next und React installieren:
Wissenswert:
- Falls Sie eine Warnung zu Peer-Abhängigkeiten sehen, müssen Sie möglicherweise
react
undreact-dom
auf die vorgeschlagenen Versionen aktualisieren oder das Flag--force
oder--legacy-peer-deps
verwenden, um die Warnung zu ignorieren. Dies wird nicht mehr notwendig sein, sobald sowohl Next.js 15 als auch React 19 stabil sind.
React 19
- Die Mindestversionen von
react
undreact-dom
sind nun 19. useFormState
wurde durchuseActionState
ersetzt. DeruseFormState
-Hook ist in React 19 noch verfügbar, jedoch als veraltet markiert und wird in einer zukünftigen Version entfernt.useActionState
wird empfohlen und enthält zusätzliche Eigenschaften wie das direkte Auslesen despending
-Status. Mehr erfahren.useFormStatus
enthält nun zusätzliche Schlüssel wiedata
,method
undaction
. Wenn Sie nicht React 19 verwenden, ist nur derpending
-Schlüssel verfügbar. Mehr erfahren.- Weitere Informationen finden Sie im React 19 Upgrade Guide.
Wissenswert: Wenn Sie TypeScript verwenden, stellen Sie sicher, dass Sie auch
@types/react
und@types/react-dom
auf ihre neuesten Versionen aktualisieren.
Asynchrone Request-APIs (Breaking Change)
Zuvor synchrone Dynamic-APIs, die auf Laufzeitinformationen basieren, sind nun asynchron:
cookies
headers
draftMode
params
inlayout.js
,page.js
,route.js
,default.js
,opengraph-image
,twitter-image
,icon
undapple-icon
.searchParams
inpage.js
Um die Migration zu erleichtern, steht ein Codemod zur Verfügung, der den Prozess automatisiert, und die APIs können vorübergehend synchron aufgerufen werden.
cookies
Empfohlene asynchrone Verwendung
Temporäre synchrone Verwendung
headers
Empfohlene asynchrone Verwendung
Temporäre synchrone Verwendung
draftMode
Empfohlene asynchrone Verwendung
Temporäre synchrone Verwendung
params
& searchParams
Asynchrones Layout
Synchrones Layout
Asynchrone Seite
Synchrone Seite
Route-Handler
runtime
-Konfiguration (Breaking Change)
Die runtime
-Segmentkonfiguration unterstützte zuvor einen Wert von experimental-edge
zusätzlich zu edge
. Beide Konfigurationen beziehen sich auf dasselbe, und um die Optionen zu vereinfachen, wird nun ein Fehler ausgegeben, wenn experimental-edge
verwendet wird. Um dies zu beheben, aktualisieren Sie Ihre runtime
-Konfiguration auf edge
. Ein Codemod steht zur Verfügung, um dies automatisch durchzuführen.
fetch
-Anfragen
fetch
-Anfragen werden standardmäßig nicht mehr zwischengespeichert.
Um bestimmte fetch
-Anfragen für das Caching zu aktivieren, können Sie die Option cache: 'force-cache'
übergeben.
Um alle fetch
-Anfragen in einem Layout oder einer Seite für das Caching zu aktivieren, können Sie die Segmentkonfigurationsoption export const fetchCache = 'default-cache'
verwenden. Wenn individuelle fetch
-Anfragen eine cache
-Option angeben, wird diese stattdessen verwendet.
Route-Handler
GET
-Funktionen in Route-Handlern werden standardmäßig nicht mehr zwischengespeichert. Um GET
-Methoden für das Caching zu aktivieren, können Sie eine Route-Konfigurationsoption wie export const dynamic = 'force-static'
in Ihrer Route-Handler-Datei verwenden.
Client-seitiger Router-Cache
Bei der Navigation zwischen Seiten über <Link>
oder useRouter
werden Seiten-Segmente nicht mehr aus dem client-seitigen Router-Cache wiederverwendet. Sie werden jedoch weiterhin während der Browser-Navigation vorwärts und rückwärts sowie für gemeinsame Layouts wiederverwendet.
Um Seiten-Segmente für das Caching zu aktivieren, können Sie die staleTimes
-Konfigurationsoption verwenden:
Layouts und Ladezustände werden weiterhin zwischengespeichert und bei der Navigation wiederverwendet.
next/font
Das @next/font
-Paket wurde zugunsten des integrierten next/font
entfernt. Ein Codemod steht zur Verfügung, um Ihre Importe sicher und automatisch umzubenennen.
bundlePagesRouterDependencies
experimental.bundlePagesExternals
ist nun stabil und wurde in bundlePagesRouterDependencies
umbenannt.
serverExternalPackages
experimental.serverComponentsExternalPackages
ist nun stabil und wurde in serverExternalPackages
umbenannt.
Speed Insights
Die automatische Instrumentierung für Speed Insights wurde in Next.js 15 entfernt.
Um Speed Insights weiterhin zu verwenden, folgen Sie dem Vercel Speed Insights Quickstart-Guide.
NextRequest
Geolocation
Die Eigenschaften geo
und ip
in NextRequest
wurden entfernt, da diese Werte von Ihrem Hosting-Provider bereitgestellt werden. Ein Codemod ist verfügbar, um diese Migration zu automatisieren.
Falls Sie Vercel verwenden, können Sie alternativ die Funktionen geolocation
und ipAddress
aus @vercel/functions
nutzen: