バージョン15へのアップグレード方法
バージョン14から15へのアップグレード
Next.jsバージョン15に更新するには、upgrade
コードモッドを使用できます:
手動で行う場合は、最新のNext.jsとReactバージョンをインストールしてください:
知っておくと良いこと:
- ピア依存関係の警告が表示された場合、
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(破壊的変更)
以前は同期処理だったランタイム情報に依存するDynamic APIが非同期になりました:
cookies
headers
draftMode
layout.js
、page.js
、route.js
、default.js
、opengraph-image
、twitter-image
、icon
、apple-icon
のparams
page.js
のsearchParams
移行負担を軽減するため、コードモッドが利用可能で、一時的にAPIを同期的にアクセスすることもできます。
cookies
推奨される非同期使用法
一時的な同期使用法
headers
推奨される非同期使用法
一時的な同期使用法
draftMode
推奨される非同期使用法
一時的な同期使用法
params
& searchParams
非同期レイアウト
同期レイアウト
非同期ページ
同期ページ
ルートハンドラー
runtime
設定(破壊的変更)
runtime
セグメント設定では、以前はedge
に加えてexperimental-edge
値がサポートされていました。両方の設定は同じものを指しており、オプションを簡素化するため、experimental-edge
を使用するとエラーになります。修正するには、runtime
設定をedge
に更新してください。コードモッドが自動的に行うことができます。
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
に置き換えられました。コードモッドを使用してインポートを安全かつ自動的にリネームできます。
bundlePagesRouterDependencies
experimental.bundlePagesExternals
が安定版になり、bundlePagesRouterDependencies
に名称変更されました。
serverExternalPackages
experimental.serverComponentsExternalPackages
が安定版になり、serverExternalPackages
に名称変更されました。
Speed Insights
Next.js 15でSpeed Insightsの自動計測が削除されました。
Speed Insightsを引き続き使用するには、Vercel Speed Insightsクイックスタートガイドに従ってください。
NextRequest
のジオロケーション (Geolocation)
NextRequest
の geo
および ip
プロパティは削除されました。これらの値はホスティングプロバイダーによって提供されるためです。この移行を自動化するための codemod が利用可能です。
Vercel を使用している場合、代わりに @vercel/functions
から geolocation
と ipAddress
関数を使用できます: