Next.js 16.4リリース、Cache Componentsを全アプリの推奨モデルに——新規アプリはデフォルト有効化
概要 Vercelは10月6日、Next.js 16.4を正式リリースした。最大のトピックは、App Routerの新しいプログラミングモデルである「Cache Components」を、すべてのNext.jsアプリに推奨する段階に達したことだ。これまでコストやパフォーマンス面で既存モデルと同等の保証ができないケースがあったが、今回のリリースでそのギャップを埋める機能が追加され、create-next-appで作成する新規アプリではCache Componentsがデフォルトで有効になった。Cache Componentsはすでに次期メジャーバージョンのNext.js 17でデフォルト化が予定されており、16.4はその移行を本格的に進める位置づけのリリースとなる。既存アプリ向けには、AIエージェントによる移行を支援するnext upgrade --agentコマンドや専用Skillも新たに提供される。 Cache Componentsの機能強化 Cache Componentsは、コンポーネント単位で'use cache'を付与し、HTTPのCache-Controlヘッダーのようにキャッシュ可否を宣言的に制御する仕組みで、クライアント側のナビゲーションキャッシュとサーバー側キャッシュ、リクエスト時レンダリングを1つのページ内で組み合わせられる。next.config.tsでcacheComponents: trueとpartialPrefetching: trueを設定することで有効化できる。 16.4では主に2つの機能が追加された。1つはensureStaticで、ページやレイアウトに設定することで、意図しない動的コンポーネントの混入をビルド時に検出してビルドを失敗させられる。「navigation」「prefetch」「shell」の3段階で制御範囲を指定でき、ECサイトやマーケティングページなど静的性を重視するアプリでサーバーコストの肥大化を防ぐ。もう1つはnext/cacheから提供されるnavigation()・prefetch()関数で、これをawaitすることでプリフェッチ時に読み込む内容を明示的に除外し、必要なデータのみを事前取得できるようになった。メールアプリのスレッド全文のように、重いデータをリンクのプリフェッチ対象から外し、実際のナビゲーション時にのみ取得する、といった使い分けが可能になる。 AIエージェント向けツールの拡充 Next.jsチームはエージェントによる開発・保守の支援にも力を入れている。新しいnext upgrade --agentオプションは、インストール済みバージョンの確認、移行先バージョンの選定、コードモッドや検証手順の準備までをエージェントに提示し、npx next@canary upgrade --agent=latestで実行できる。さらにexperimental.agentUpgradeを設定すると、next devやnext build実行時に利用可能なアップデートをエージェントや開発者に通知する機能も追加された。デフォルトの'security'では既知の脆弱性に関するアップデートのみ通知し、'latest'では最新のメジャー・マイナーリリースへの追従を促す。加えて、experimental.agentFeedbackを有効にすると、開発中にエージェントが遭遇したフレームワークのエラーや不明瞭なドキュメントについて報告ドラフトを作成し、開発者が内容を確認・編集した上でNext.jsチームに送信できる仕組みも実験的に導入された。 パフォーマンス改善と実験的機能 Turbopack関連では、ディスクキャッシュの容量が設定変更なしで20〜25%削減された。データ本体にはZstandard圧縮を採用しつつ、メタデータは高速な参照を保つためLZ4を維持し、コンパクション処理も効率化した。また開発時は、サーバーモジュールの変更があっても表示中でないページの再コンパイルを遅延させる「Lazy server HMR」や、ランタイムを全ルートで共有する単一チャンク化により、ダウンロードサイズとキャッシュ効率が改善された。本番ビルドでもCSS Modulesのクラス名短縮やエクスポート名のマングリングにより、バンドルサイズが縮小している。さらにReact 19.3への対応により、安定版のView TransitionsやFragment Refs、新しいbrowser() APIなども利用可能になった。実験的機能としては、Rust版React Compilerの最適化対象ファイルの事前判定によるビルド高速化(Turbopack側の改善と合わせてメモリ使用量30%減・コンパイル時間15%減)、未使用の不要なコンパイル結果を削除するディスクキャッシュのガベージコレクション、クライアント側動的importの遅延コンパイル、ワーカースレッドによるツール実行の統合、シンボリックリンクされた依存関係向けの追加ルート設定、Turbopack Bundle Analyzerへのルート別サマリーやスナップショット比較機能の追加などが挙げられている。