Next.js 15 リリース候補版(RC)が利用可能になりました。この早期バージョンでは、今後の安定版リリース前に最新機能をテストできます。
- React: React 19 RC、React Compiler(実験的機能)、ハイドレーションエラー改善のサポート
- キャッシュ:
fetch
リクエスト、GET
Route Handlers、クライアントナビゲーションがデフォルトでキャッシュされなくなりました - 部分プリレンダリング(実験的機能): 段階的導入のための新しいLayoutとPage設定オプション
next/after
(実験的機能): レスポンスのストリーミング完了後にコードを実行する新しいAPIcreate-next-app
: デザインの更新と、ローカル開発でTurbopackを有効化する新しいフラグ- 外部パッケージのバンドリング(安定版): App RouterとPages Router向けの新しい設定オプション
今すぐNext.js 15 RCをお試しください:
React 19 RC
Next.jsのApp Routerは、Reactのcanaryチャンネル上に構築されており、開発者はv19リリース前にこれらの新しいReact APIを使用してフィードバックを提供できます。
Next.js 15 RCではReact 19 RCをサポートしており、Actionsなどのクライアントとサーバー両方の新機能が含まれています。
詳細については、Next.js 15アップグレードガイド、React 19アップグレードガイド、およびReact Conf基調講演をご覧ください。
注: 一部のサードパーティライブラリはReact 19と互換性がない場合があります。
React Compiler(実験的機能)
React Compilerは、MetaのReactチームが作成した新しい実験的コンパイラです。このコンパイラはプレーンなJavaScriptセマンティクスとReactのルールを深く理解することで、コードに自動最適化を追加します。コンパイラはuseMemo
やuseCallback
などのAPIを通じて開発者が手動で行うメモ化の量を減らし、コードをよりシンプルでメンテナンスしやすく、エラーが発生しにくくします。
Next.js 15では、React Compilerのサポートを追加しました。
babel-plugin-react-compiler
をインストール:
次に、next.config.js
にexperimental.reactCompiler
オプションを追加:
オプションで、コンパイラを「オプトイン」モードで実行するように設定できます:
注: React Compilerは現在、Next.jsではBabelプラグインを通じてのみ使用可能で、ビルド時間が遅くなる可能性があります。
React Compilerと利用可能なNext.js設定オプションについて詳しく学べます。
ハイドレーションエラーの改善
Next.js 14.1ではエラーメッセージとハイドレーションエラーの改善が行われました。Next.js 15では、さらに改善されたハイドレーションエラービューを追加しています。ハイドレーションエラーでは、問題のソースコードと解決方法の提案が表示されるようになりました。
例えば、これはNext.js 14.1での以前のハイドレーションエラーメッセージです:

Next.js 15 RCでは以下のように改善されました:

キャッシュの更新
Next.js App Routerは、意見のあるキャッシュのデフォルト設定でリリースされました。これらは、必要に応じてオプトアウトできるようにしながら、デフォルトで最もパフォーマンスの高いオプションを提供するように設計されていました。
皆様のフィードバックに基づき、キャッシュヒューリスティックと、部分プリレンダリング(PPR)やfetch
を使用するサードパーティライブラリとの相互作用を再評価しました。
Next.js 15では、fetch
リクエスト、GET
Route Handlers、およびClient Router Cacheのキャッシュデフォルトを、キャッシュありからキャッシュなしに変更します。以前の動作を維持したい場合は、引き続きキャッシュをオプトインできます。
今後数ヶ月でNext.jsのキャッシュをさらに改善していく予定です。詳細はNext.js 15 GA発表で共有します。
fetch
リクエストはデフォルトでキャッシュされなくなりました
Next.jsはWeb fetch
APIのcache
オプションを使用して、サーバーサイドのfetchリクエストがフレームワークの永続的なHTTPキャッシュとどのように相互作用するかを設定します:
no-store
- リモートサーバーからリソースを毎回取得し、キャッシュを更新しませんforce-cache
- キャッシュからリソースを取得(存在する場合)またはリモートサーバーから取得してキャッシュを更新します
Next.js 14では、cache
オプションが提供されていない場合、動的関数または動的設定オプションが使用されていない限り、デフォルトでforce-cache
が使用されていました。
Next.js 15では、cache
オプションが提供されていない場合、デフォルトでno-store
が使用されます。つまり、fetchリクエストはデフォルトでキャッシュされません。
以下の方法でfetch
リクエストのキャッシュをオプトインできます:
- 単一の
fetch
呼び出しでcache
オプションをforce-cache
に設定 - 単一のルートで
dynamic
ルート設定オプションを'force-static'
に設定 - LayoutまたはPage内のすべての
fetch
リクエストをforce-cache
を使用するようにオーバーライドするためにfetchCache
ルート設定オプションを'default-cache'
に設定(明示的に独自のcache
オプションを指定している場合を除く)
GET
Route Handlersはデフォルトでキャッシュされなくなりました
Next.js 14では、GET
HTTPメソッドを使用するRoute Handlersは、動的関数または動的設定オプションを使用しない限り、デフォルトでキャッシュされていました。Next.js 15では、GET
関数はデフォルトでキャッシュされません。
export dynamic = 'force-static'
などの静的ルート設定オプションを使用して、引き続きキャッシュをオプトインできます。
sitemap.ts
、opengraph-image.tsx
、icon.tsx
などの特別なRoute Handlersやその他のメタデータファイルは、動的関数または動的設定オプションを使用しない限り、デフォルトで静的のままです。
クライアントルーターキャッシュがデフォルトでページコンポーネントをキャッシュしなくなりました
Next.js 14.2.0で、ルーターキャッシュのカスタム設定を可能にする実験的なstaleTimes
フラグを導入しました。
Next.js 15ではこのフラグは引き続き利用可能ですが、ページセグメントのstaleTime
を0
にするデフォルト動作に変更します。これにより、アプリ内を移動する際、クライアントは常にナビゲーションの一部としてアクティブになるページコンポーネントからの最新データを反映します。ただし、以下の重要な動作は変更されません:
- 部分レンダリングをサポートするため、共有レイアウトデータはサーバーから再取得されません
- ブラウザがスクロール位置を復元できるよう、戻る/進むナビゲーションは引き続きキャッシュから復元されます
- loading.jsは5分間(または
staleTimes.static
設定値)キャッシュされます
以下の設定で以前のクライアントルーターキャッシュ動作を選択できます:
部分プリレンダリング(PPR)の段階的導入(実験的)
Next.js 14では部分プリレンダリング(PPR)を導入しました - これは静的レンダリングと動的レンダリングを同じページで組み合わせる最適化です。
現在Next.jsは、cookies()
、headers()
、キャッシュされていないデータリクエストなどの動的関数を使用しない限り、デフォルトで静的レンダリングを行います。これらのAPIはルート全体を動的レンダリングに切り替えます。PPRでは、動的UIをSuspenseバウンダリでラップできます。新しいリクエストが来ると、Next.jsはすぐに静的なHTMLシェルを提供し、同じHTTPリクエスト内で動的部分をレンダリングしてストリーミングします。
段階的な導入を可能にするため、特定のレイアウトとページをPPRに選択するexperimental_ppr
ルート設定オプションを追加しました:
この新しいオプションを使用するには、next.config.js
ファイルでexperimental.ppr
設定を'incremental'
に設定する必要があります:
すべてのセグメントでPPRが有効になると、ppr
値をtrue
に設定してアプリ全体と将来のすべてのルートで有効にすることが安全とみなされます。
PPRのロードマップについては、Next.js 15 GAブログ投稿で詳しく説明します。
部分プリレンダリングの詳細をご覧ください。
レスポンス後のコード実行 with next/after
(実験的)
ユーザーリクエストを処理する際、サーバーは通常レスポンスの計算に直接関連するタスクを実行します。しかし、ロギング、分析、その他の外部システム同期などのタスクが必要になる場合があります。
これらのタスクはレスポンスに直接関係ないため、ユーザーが完了を待つ必要はありません。ユーザーへのレスポンス後に作業を延期することは、サーバーレス関数がレスポンス終了後すぐに計算を停止するため課題があります。
after()
はこの問題を解決する新しい実験的APIで、レスポンスのストリーミング終了後に処理される作業をスケジュールでき、プライマリレスポンスをブロックせずにセカンダリタスクを実行できます。
使用するには、next.config.js
にexperimental.after
を追加します:
次に、Server Components、Server Actions、Route Handlers、またはMiddlewareで関数をインポートします。
next/after
の詳細をご覧ください。
create-next-app
の更新
Next.js 15では、create-next-app
を新しいデザインで更新しました。

create-next-app
を実行すると、ローカル開発でTurbopackを有効にするかどうかを尋ねる新しいプロンプトが表示されます(デフォルトはNo
)。
--turbo
フラグでTurbopackを有効にできます。
新しいプロジェクトの開始をさらに簡単にするため、CLIに新しい--empty
フラグが追加されました。これにより余分なファイルやスタイルが削除され、最小限の「hello world」ページが作成されます。
外部パッケージのバンドル最適化(安定版)
外部パッケージのバンドルはアプリケーションのコールドスタートパフォーマンスを向上させます。App Routerでは、外部パッケージはデフォルトでバンドルされ、新しいserverExternalPackages
設定オプションで特定のパッケージを除外できます。
Pages Routerでは、外部パッケージはデフォルトでバンドルされませんが、既存のtranspilePackages
オプションでバンドルするパッケージリストを提供できます。この設定オプションでは、各パッケージを指定する必要があります。
App RouterとPages Routerの設定を統一するため、App Routerのデフォルト自動バンドルに合わせた新しいオプションbundlePagesRouterDependencies
を導入します。必要に応じてserverExternalPackages
で特定のパッケージを除外できます。
外部パッケージの最適化の詳細をご覧ください。
その他の変更
- 【破壊的変更】 Reactの最低バージョンが19 RCになりました
- 【破壊的変更】 next/image:
squoosh
を削除し、オプション依存関係としてsharp
を採用(PR) - 【破壊的変更】 next/image: デフォルトの
Content-Disposition
をattachment
に変更(PR) - 【破壊的変更】 next/image:
src
に先頭または末尾のスペースがある場合にエラー(PR) - 【破壊的変更】 Middleware: 推奨されないReact APIインポートを制限するため
react-server
条件を適用(PR) - 【破壊的変更】 next/font: 外部
@next/font
パッケージのサポートを削除(PR) - 【破壊的変更】 next/font:
font-family
ハッシュを削除(PR) - 【破壊的変更】 キャッシュ:
force-dynamic
がfetchキャッシュにno-store
デフォルトを設定(PR) - 【破壊的変更】 設定:
swcMinify
(PR)、missingSuspenseWithCSRBailout
(PR)、outputFileTracing
(PR)の動作をデフォルトで有効化し、非推奨オプションを削除 - 【破壊的変更】 Speed Insightsの自動計測を削除(専用の@vercel/speed-insightsパッケージを使用する必要あり)(PR)
- 【破壊的変更】 動的サイトマップルートの
.xml
拡張子を削除し、開発と本番間のサイトマップURLを統一(PR) - 【改善】 Metadata: Vercelホスティング時の
metadataBase
環境変数フォールバックを更新(PR) - 【改善】
optimizePackageImports
での名前空間と名前付きインポートの混在時のツリーシェイキングを修正(PR) - 【改善】 並列ルート: マッチしないキャッチオールルートに既知のパラメータを提供(PR)
- 【改善】 設定
bundlePagesExternals
が安定版になり、bundlePagesRouterDependencies
に改名 - 【改善】 設定
serverComponentsExternalPackages
が安定版になり、serverExternalPackages
に改名 - 【改善】 create-next-app: 新しいプロジェクトはデフォルトで全ての
.env
ファイルを無視(PR) - 【ドキュメント】 認証ドキュメントを改善(PR)
- 【ドキュメント】
@next/env
パッケージ(PR)
詳細は、アップグレードガイドをご覧ください。
コントリビューター
Next.jsは、3,000人以上の個人開発者、GoogleやMetaなどの業界パートナー、そしてVercelのコアチームの共同作業の結果です。このリリースは以下の方々によってもたらされました:
- Next.jsチーム: Andrew, Balazs, Ethan, Janka, Jiachi, Jimmy, JJ, Josh, Sam, Sebastian, Sebbie, Shu, Steven, Tim, Wyatt, Zack
- Turbopackチーム: Alex, Benjamin, Donny, Leah, Maia, OJ, Tobias, Will
- Next.jsドキュメント: Delba, Steph, Michael, Anthony, Lee
@devjiwonchoi, @ijjk, @Ethan-Arrowood, @sokra, @kenji-webdev, @wbinnssmith, @huozhi, @domdomegg, @samcx, @Jaaneek, @evanwinter, @wyattjoh, @kdy1, @balazsorban44, @feedthejim, @ztanner, @ForsakenHarmony, @kwonoj, @delbaoliveira, @stipsan, @leerob, @shuding, @xiaohanyu, @timneutkens, @dvoytenko, @bobaaaaa, @bgw, @gaspar09, @souporserious, @unflxw, @kiner-tang, @Ehren12, @EffectDoplera, @IAmKushagraSharma, @Auxdible, @sean-rallycry, @Jeffrey-Zutt, @eps1lon, @jeanmax1me, @unstubbable, @NilsJacobsen, @PaulAsjes, @adiguno, @ryan-nauman, @zsh77, @KagamiChan, @steveluscher, @MehfoozurRehman, @vkryachko, @chentsulin, @samijaber, @begalinsaf, @FluxCapacitor2, @lukahartwig, @brianshano, @pavelglac, @styfle, @symant233, @HristovCodes, @karlhorky, @jonluca, @jonathan-ingram, @mknichel, @sopranopillow, @Gomah, @imddc, @notrab, @gabrielrolfsen, @remorses, @AbhiShake1, @agadzik, @ryota-murakami, @rishabhpoddar, @rezamauliadi, @IncognitoTGT, @webtinax, @BunsDev, @nisabmohd, @z0n, @bennettdams, @joeshub, @n1ckoates, @srkirkland, @RiskyMH, @coopbri, @okoyecharles, @diogocapela, @dnhn, @typeofweb, @davidsa03, @imranolas, @lubieowoce, @maxhaomh, @mirasayon, @blvdmitry, @hwangstar156, @lforst, @emmerich, @christian-bromann, @Lsnsh, @datner, @hiro0218, @flybayer, @ianmacartney, @ypessoa, @ryohidaka, @icyJoseph, @Arinji2, @lovell, @nsams, @Nayeem-XTREME, @JamBalaya56562, @Arindam200, @gaojude, @qqww08, @todor0v, @coltonehrman, @wiessonの皆様にも協力いただきました!