概要

VercelはNext.js 16.2を正式リリースした。本バージョンの最大の見どころは開発サーバー(next dev)の起動速度で、同一マシン・同一プロジェクトでの計測でNext.js 16.1比約87%短縮、前世代からは約400%の高速化を実現した。加えてServer Componentsのレンダリング速度が最大60%向上し、大規模アプリケーションの日常的な開発体験が大きく改善されている。AIエージェントによるコード生成支援に向けたツーリング、Turbopackの大幅強化も今回リリースの柱となっている。なお最低動作要件はNode.js 20.9以上、TypeScript 5.1以上に引き上げられた。

開発パフォーマンスの大幅改善

レンダリング高速化の核心は、Reactに取り込まれたServer Componentsペイロードのデシリアライズ処理の刷新にある。従来実装はJSON.parseのreviverコールバックを使用しており、パース中のすべてのキー・バリューペア処理でV8エンジン内のC++/JavaScript境界越えが発生し、引数なしreviverでさえ約4倍の速度低下をもたらしていた。Next.jsチームはReact本体へのコントリビューション(PR #35776)として、まず通常のJSON.parse()でパースしたのちに純粋なJavaScriptで再帰走査する2ステップ方式に切り替えた。実測ではServer Componentテーブル(1000アイテム)で26%、ネストしたSuspenseを持つServer Componentで33%、Payload CMSのホームページで34%、リッチテキストを含むPayload CMSページでは60%のサーバーレンダリング時間短縮が確認されている。

AIエージェント向けツーリングの強化

create-next-appで生成されるプロジェクトにAGENTS.mdファイルが標準搭載された。このファイルにはプロジェクト構造や慣習が記述されており、CopilotやCursorなどのAIコーディングエージェントがコンテキストを即座に把握できるようになる。あわせてバージョンに対応したドキュメントをMarkdown形式でバンドルし、ローカルエージェントが参照できる仕組みも整備された。さらにlogging.browserToTerminal設定でブラウザのエラーやconsole.logを開発ターミナルへ転送する機能がデフォルト有効になり、実験的CLIである@vercel/next-browserによるターミナルからのアプリ検査もサポートされている。

Turbopackの強化

Turbopackではサーバー向けFast Refreshが大幅に改善された。従来は変更したモジュールに関係するインポートチェーン全体を再ロードしていたが、変更モジュールのみを再ロードする方式に改めた結果、アプリリフレッシュで67〜100%、コンパイル時間で400〜900%の高速化が報告されている。機能面ではサブリソース整合性(SRI)のJavaScriptファイル対応、分割代入した動的インポートのツリーシェイキング、postcss.config.tsのサポートが追加された。200件超のバグ修正も含まれており、安定性も向上している。

デバッグ体験と新機能

デバッグ支援として複数の改善が加わった。開発中のターミナルにServer Functionの実行ログ(関数名・引数・実行時間・定義ファイル)が表示されるようになり、ハイドレーションミスマッチ発生時のエラーオーバーレイには+ Client / - Serverの凡例でサーバーとクライアントの差分が明示される。next dev --inspectに続きnext start --inspectでも本番サーバーへのNode.jsデバッガ接続が可能となった。ImageResponseは基本的な画像で2倍、複雑な画像では最大20倍の高速化を果たし、デフォルトフォントもNoto SansからGeist Sansに変更された。<Link>コンポーネントにはtransitionTypesプロパティが追加され、View Transitionsを使ったナビゲーションアニメーションを柔軟に制御できる。Adaptersは今回から安定版(stable)に昇格し、デプロイプラットフォームやカスタムビルド統合がNext.jsのビルドプロセスをカスタマイズできるようになった。実験的機能としてはunstable_catchError()によるコンポーネントレベルのエラーバウンダリ、unstable_retry()によるデータ再フェッチを伴う再試行、experimental.prefetchInliningによるプリフェッチリクエスト削減なども提供されている。