ブログに戻る — 2025年12月18日(木)
投稿者: Luke Sandberg (@lukeisandberg)、Tim Neutkens (@timneutkens)
Next.js 16.1
Next.js 16.1 は、開発ワークフローの高速化と安定性向上に注力したリリースです。Turbopack とツール周りに大きな更新が含まれています。
主なハイライト
- Turbopack ファイルシステムキャッシュ(
next dev 向け、stable): デフォルトで有効になり、コンパイル時間が改善されます。
- Next.js Bundle Analyzer(experimental): 新しいインタラクティブツールでコードを最適化できます。
- デバッグが簡単に:
next dev --inspect で Next.js アプリをデバッグ可能に。
- 推移的な外部依存関係: Turbopack が推移的な外部依存関係を自動で処理し、警告が出ません。
今すぐアップグレード
- 自動アップグレード CLI を使用:
npx @next/codemod@canary upgrade latest
- あるいは手動でアップグレード:
npm install next@latest react@latest react-dom@latest
- 新規プロジェクトを開始する場合:
npx create-next-app@latest
Turbopack ファイルシステムキャッシュ(next dev)
Turbopack のファイルシステムキャッシュが next dev 向けに安定化し、デフォルトで有効になりました。コンパイラの成果物をディスクに保存するため、開発サーバーの再起動時に特に大規模プロジェクトでコンパイル時間が大幅に短縮されます。
以下は「最初のルートのコンパイル時間」の例です(Cold = キャッシュなし、Cached = キャッシュあり):
| 対象 | 改善率 | Cold | Cached |
|---|
| react.dev | ~10× faster | 3.7s | 380ms |
| nextjs.org | ~5× faster | 3.5s | 700ms |
| 大規模な Vercel 内部アプリ | ~14× faster | 15s | 1.1s |
Vercel 内部のアプリケーションでは過去一年間この機能を運用してきました。Turbopack のファイルシステムキャッシュの実装方法については、Luke Sandberg の Next.js Conf 講演をご覧ください。今後は next build に対してもファイルシステムキャッシュの安定化を進めます。詳細はドキュメントを参照し、専用の GitHub Discussion でフィードバックを共有してください。
Next.js Bundle Analyzer(experimental)
Next.js 16.1 には Turbopack に対応した実験的な Bundle Analyzer が含まれます。サーバー・クライアント双方のバンドルサイズ最適化が容易になり、Core Web Vitals の改善、Lambda のコールドスタート時間短縮、肥大化した依存関係の特定に役立ちます。
コマンド:
next experimental-analyze
このコマンドを実行すると、プロダクションバンドルを検査するインタラクティブ UI が起動します。大きなモジュールを特定したり、そのモジュールが含まれる理由(インポートチェーン)を確認できます。
機能例:
- ルートごとにバンドルをフィルタ
- モジュールが含まれる理由をフルで表示(インポートチェーン)
- サーバー→クライアント境界や動的インポートを跨いだインポートのトレース
- CSS やその他のインポート資産のサイズ表示
- クライアント / サーバー表示の切替
Bundle Analyzer は開発初期段階にあり、今後のリリースでさらに改善されます。専用の GitHub Discussion にフィードバックをお寄せください。
next dev --inspect でのデバッグが簡単に
next dev に --inspect を渡すことで Node.js デバッガーを有効化できるようになりました。従来は NODE_OPTIONS=--inspect を渡す必要があり、Next.js が起動するすべてのプロセスにインスペクタがアタッチされていましたが、今回の変更により自分のコードを実行しているプロセスのみにインスペクタをアタッチできます。
serverExternalPackages の改善(推移的外部依存の取り扱い)
serverExternalPackages を使うと依存関係をバンドルせずに保持できますが、以前は直接の依存関係に対してしか安定して動作しませんでした。たとえば、あなたの使用するライブラリが内部で sqlite に依存していて、sqlite を外部化したい場合、sqlite を自分の package.json に追加する必要がありました—直接の依存ではないのにです。
この回避策は内部実装の漏洩やメンテナンス負担、複数パッケージが同一依存の異なるバージョンを要求する場合の競合を招いていました。Next.js 16.1 では Turbopack 側でこの問題を修正し、serverExternalPackages に対して推移的依存を正しく解決して外部化できるようになりました。追加設定は不要です。
その他のアップデート
- 20MB 小さくなったインストール: Turbopack のファイルシステムキャッシュ層の簡素化により、Next.js のインストールサイズが約20MB削減されました。
- 新しい
next upgrade コマンド: 今後はこのコマンドを実行するだけで Next.js のバージョンアップが簡単になります。
- MCP
get_routes ツール: Next.js DevTools の MCP サーバーにアプリケーション内のルート一覧を取得する get_routes ツールが追加されました。
generateStaticParams のタイミング計測: 開発時のリクエストに表示されるタイミング情報に generateStaticParams に要した時間が記録されるようになりました。
- ビルドワーカーロギング:
next build の「Collecting page data」や「Generating static pages」で使用しているワーカースレッド数がログに出力されます。
- 非同期インポートのバンドリング改善: 開発時の非同期インポートのバンドリングが改善され、生成されるチャンク数を減らし、一部の現実のケースでの病的な動作を回避します。
- 相対パスのソースマップ: Turbopack がサーバーサイドコード用に相対ファイルパスを持つソースマップを出力するようになり、Node.js や他のエコシステムツールとの互換性が向上しました。
フィードバックとコミュニティ
フィードバックを共有して Next.js の将来を形作る手助けをしてください:
- GitHub Discussions
- GitHub Issues
- Discord Community
コントリビューター
Next.js は3,700人以上の開発者による共同作業の成果です。本リリースに貢献してくれた皆さん:
チーム:
- Next.js チーム: Andrew、Hendrik、Janka、Jiachi、Jimmy、Jiwon、JJ、Josh、Jude、Sam、Sebastian、Sebbie、Wyatt、Zack
- Turbopack チーム: Benjamin、Luke、Niklas、Tim、Tobias、Will
- Next.js ドキュメントチーム: Delba、Rich、Ismael、Joseph
特に感謝: @kdy1、@eps1lon、@SyMind、@bgw、@swarnava、@devjiwonchoi、@ztanner、@ijjk、@huozhi、@icyJoseph、@acdlite、@unstubbable、@gnoff、@gusfune、@lukesandberg、@sokra、@hayes、@shuding、@wyattjoh、@marjan-ahmed、@timneutkens、@ajstrongdev、@zigang93、@mischnic、@Nayeem-XTREME、@hamirmahal、@eli0shin、@tessamero、@gaojude、@jamesdaniels、@georgesfarah、@timeyoutakeit、@sequencerr、@Strernd、@lucasadrianof、@wbinnssmith、@hamidreza-nateghi、@jokokoloko、@dijonmusters、@H01001000、@xusd320、@lubieowoce、@KaziMahbuburRahman、@zhiyanzhaijie、@feedthejim、@that-one-arab、@JamBalaya56562、@shrink、@florianliebig、@allenzhou101、@benmerckx、@ymc9、@Marukome0743、@pyrytakala、@danpeleg4、@gaearon、@styfle、@jhuleatt、@muhammadsyaddad、@roelvan、@SukkaW
ご協力ありがとうございました!