如何升級至版本 15
從 14 升級至 15
要更新至 Next.js 版本 15,您可以使用 upgrade
codemod:
如果您偏好手動升級,請確保安裝最新的 Next 和 React 版本:
須知事項:
- 如果您看到 peer dependencies 警告,可能需要將
react
和react-dom
更新至建議版本,或使用--force
或--legacy-peer-deps
標記忽略警告。當 Next.js 15 和 React 19 都穩定後,此步驟將不再需要。
React 19
react
和react-dom
的最低版本現在為 19。useFormState
已被useActionState
取代。useFormState
鉤子在 React 19 中仍然可用,但已被棄用並將在未來版本中移除。建議使用useActionState
,它包含如直接讀取pending
狀態等額外屬性。了解更多。useFormStatus
現在包含如data
、method
和action
等額外鍵值。如果您未使用 React 19,則僅有pending
鍵值可用。了解更多。- 詳情請參閱 React 19 升級指南。
須知事項: 如果您使用 TypeScript,請確保同時升級
@types/react
和@types/react-dom
至最新版本。
非同步請求 API (重大變更)
先前依賴運行時資訊的同步動態 API 現在改為非同步:
cookies
headers
draftMode
layout.js
、page.js
、route.js
、default.js
、opengraph-image
、twitter-image
、icon
和apple-icon
中的params
page.js
中的searchParams
為減輕遷移負擔,我們提供了 codemod 來自動化此過程,且這些 API 可暫時以同步方式存取。
cookies
建議的非同步用法
暫時的同步用法
headers
建議的非同步用法
暫時的同步用法
draftMode
建議的非同步用法
暫時的同步用法
params
與 searchParams
非同步版面配置
同步版面配置
非同步頁面
同步頁面
路由處理器
runtime
配置 (重大變更)
runtime
區段配置 先前支援 experimental-edge
和 edge
值。這兩種配置指的是同一件事,為簡化選項,現在如果使用 experimental-edge
將會報錯。要解決此問題,請將您的 runtime
配置更新為 edge
。我們提供了 codemod 來自動執行此操作。
fetch
請求
fetch
請求 預設不再快取。
若要為特定 fetch
請求啟用快取,可以傳遞 cache: 'force-cache'
選項。
若要為版面配置或頁面中的所有 fetch
請求啟用快取,可以使用 export const fetchCache = 'default-cache'
區段配置選項。如果個別 fetch
請求指定了 cache
選項,則會優先使用該選項。
路由處理器
路由處理器 中的 GET
函數預設不再快取。若要為 GET
方法啟用快取,可以在路由處理器檔案中使用 路由配置選項,例如 export const dynamic = 'force-static'
。
客戶端路由快取
透過 <Link>
或 useRouter
在頁面之間導航時,頁面 區段不再從客戶端路由快取中重複使用。然而,在瀏覽器前進和後退導航以及共享版面配置時仍會重複使用。
若要為頁面區段啟用快取,可以使用 staleTimes
配置選項:
next/font
@next/font
套件已被移除,改用內建的 next/font
。我們提供了 codemod 來安全且自動地重新命名您的導入。
bundlePagesRouterDependencies
experimental.bundlePagesExternals
現已穩定並更名為 bundlePagesRouterDependencies
。
serverExternalPackages
experimental.serverComponentsExternalPackages
現已穩定並更名為 serverExternalPackages
。
速度洞察
Next.js 15 中移除了速度洞察的自動檢測功能。
若要繼續使用速度洞察,請遵循 Vercel 速度洞察快速入門 指南。
NextRequest
地理位置功能
NextRequest
上的 geo
和 ip
屬性已被移除,因為這些值現在由您的託管服務提供商提供。我們提供了一個 codemod 工具 來自動化此遷移過程。
如果您使用 Vercel,可以改用 @vercel/functions
中的 geolocation
和 ipAddress
函數: