コンテンツにスキップ
ブログに戻る

2025年7月14日月曜日

Next.js 15.4

投稿者

Next.js 15.4 には、パフォーマンス、安定性、Turbopack 互換性のアップデートが含まれています。今回のリリースでの主な変更点は以下の通りです。

  • Turbopack Builds: next build --turbopack の統合テスト互換性が 100% になりました。
  • 安定性の向上: Next.js と Turbopack の安定性およびパフォーマンスが大幅に改善されました。

本ブログ投稿では、次期メジャーリリースである Next.js 16 で導入される新機能のプレビューも紹介しています。

今すぐアップグレードするか、以下で始めましょう

ターミナル
# Use the automated upgrade CLI
npx @next/codemod@canary upgrade latest
 
# ...or upgrade manually
npm install next@latest react@latest react-dom@latest
 
# ...or start a new project
npx create-next-app@latest

Turbopack Builds

next build --turbopack が、本番ビルド向けの 全 8298 個の統合テストをパス し、vercel.com を強化しました。これは Next.js における Turbopack を安定版とするための重要なマイルストーンです。

チームの現在の最優先事項は、本番チャンク処理によるバンドル最適化の完了と、アルファ版の早期採用者からのバグ修正です。また、内部的には Turbopack の安定性およびパフォーマンスの改善も数多く行いました。

Turbopack がまもなく本番環境での利用に耐えうるようになると確信しており、Next.js 16 でのベータ版リリースを目指して開発を進めています。以前 Turbopack を試された方も、今なら再試行するのに良い時期です。問題が発生した場合は、GitHub Issues にてお知らせください。

Looking Ahead: Next.js 16

過去数ヶ月間、Turbopack による開発者体験と、PPR および use cache による App Router のコア機能の両方で、メジャーな改善を繰り返してきました。これらの機能をデフォルトで有効にする準備はまだできていませんが、この夏に Next.js 16 でユーザーが試せるように基盤を整える予定です。

Next.js 16 で導入される新機能のプレビューを以下に示します。

  • Cache Components (beta): 実験的なキャッシング機能(Dynamic IO、use cache、Partial Prerendering)を統一された cacheComponents フラグに統合し、パフォーマンス最適化戦略を簡素化します。Next.js 16 のブログ投稿で、我々のビジョンを詳しく説明します。
  • Turbopack Builds (beta): next build --turbopack を導入し、統合テストを完全にパスさせ、vercel.com のような高トラフィックサイトで内部的に検証済みです。Next.js 16 で、より広範なパブリックベータ版での利用が可能になります。
  • Optimized Client-Side Routing: よりスマートなプリフェッチ、改善されたキャッシュ無効化戦略、帯域幅使用量の削減により App Router のナビゲーションを強化し、より高速で応答性の高いナビゲーションを実現します。
  • DevTools & Debugging: アプリケーション構造を検査し、loading.tsx のようなコンポーネントを切り替えるための Route Info を追加します。AI を活用したデバッグワークフローをサポートするために、実験的なブラウザログ転送をターミナルに追加します。
  • Node.js Middleware (stable): Next.js 15.2 で最初に導入された、Middleware のための Node.js ランタイムサポートを実験的なステータスから安定版に昇格させます。
  • Deployment Adapters (alpha): 開発者がビルドおよびデプロイターゲットをより細かく制御するためのカスタムデプロイメントアダプターを作成できるようにします。
  • Minor Deprecations and Changes: Node.js 18 サポート、AMP を非推奨とし、適切な移行ガイドとともに next/image API の一部を変更します。

私たちの目標は、このアップデートを可能な限りスムーズかつシンプルにすることです。変更は注意深く管理し、混乱を最小限に抑えるとともに、Next.js 16 への移行をサポートするための明確なガイダンスとツールを提供します。

Preview Upcoming Features

canary チャネルを使用し、next.config.js で以下のフラグを有効にすることで、これらの機能の多くを本日より実験的に試すことができます。

next.config.ts
import type { NextConfig } from 'next';
 
const nextConfig: NextConfig = {
  experimental: {
    // Forward browser logs to the terminal for easier debugging
    browserDebugInfoInTerminal: true,
 
    // Enable new caching and pre-rendering behavior
    dynamicIO: true, // will be renamed to cacheComponents in Next.js 16
 
    // Activate new client-side router improvements
    clientSegmentCache: true,
 
    // Explore route composition and segment overrides via DevTools
    devtoolSegmentExplorer: true,
 
    // Enable support for `global-not-found`, which allows you to more easily define a global 404 page.
    globalNotFound: true,
 
    // Enable persistent caching for the turbopack dev server and build.
    turbopackPersistentCaching: true,
  },
};
 
export default nextConfig;

Notable Changes

  • [Improvement] Preserve RSC query during redirects (#77963)
  • [Improvement] Graceful error fallback for bots (#77916)
  • [Improvement] Disallow unstable_rootParams in client components (#79471)
  • [Improvement] Fix bodySizeLimit errors and non-multipart actions (#77746)
  • [Improvement] Respond with 404 for unknown action IDs (#77012)
  • [Improvement] Check cache-busting params on RSC requests (#80669)
  • [Improvement] Upgrade Vercel OG to 0.7.2 (#81447)
  • [Improvement] List assert/strict as external (#80884)
  • [Improvement] Omit searchParam data from FlightRouterState before transport (#80734)
  • [Improvement] Render streaming metadata on the top level (#80566)
  • [Fix] Clone the config module to avoid mutation (#80573)
  • [Fix] Bugfix: Propagate staleTime to seeded prefetch entry (#81263)
  • [Fix] Reinstate vary (#79939)
  • [Fix] Fix interestingness detection for React Compiler (#79558)
  • [Fix] Fix react compiler usefulness detector (#79480)
  • [Fix] Better handle edge-case file paths in launchEditor (#79526)
  • [Fix] Client router should discard stale prefetch entries for static pages (#79362)
  • [Feature] Add onInvalidate to router.prefetch (#77880)
  • [Feature] Add prefetch="auto" as an alias to prefetch={undefined} to Link (#78689)
  • [Feature] Support metadata in global-not-found (#78961)
  • [Feature] Restart dev server from error overlay (#80060)
  • [Feature] Restart dev server from indicator preferences (#80072)
  • [Feature] Add --debug-prerender option for next build (#80667)
  • [Feature] Add htmlrewriter to server externals (#80819)
  • [Feature] Allow partially prerendering intercepted dynamic routes (#80851)
  • [Performance] Check files with SWC before React Compiler (#75605)
  • [Performance] Improve static path generation performance and parameter handling (#81254)
  • [Misc] Fix NEXT_CPU_PROF usage during development to allow capturing CPU traces (#81248)

フィードバックを共有して、Next.js の未来を形作りましょう。

コントリビューター

Next.js は、3,000 人以上の個人開発者による共同作業の結果です。このリリースは、以下によって提供されました。

Huge thanks to @sokra, @huozhi, @Marukome0743, @mischnic, @wbinnssmith, @eps1lon, @razzeee, @delbaoliveira, @kdy1, @wyattjoh, @acdlite, @ztanner, @bgw, @jantimon, @lubieowoce, @Fonger, @ospira, @gnoff, @styfle, @Cy-Tek, @timneutkens, @raunofreiberg, @devchaudhary24k, @Neschadin, @OreQr, @drewlong314, @ijjk, @praizjosh, @unstubbable, @lukesandberg, @ScriptedAlchemy, @sqidermad, @Juneezee, @devjiwonchoi, @Kamitenshi, @feedthejim, @leerob, @mauerbac, @miki-tebe, @gaearon, @mrbadri, @luwes, @lucacasonato, @M4xymm, @jirihofman, @vicb, @jackwilson323, @SyMind, @kevva, @xyf7, @gaojude, @dario-piotrowicz, @mastoj, @nicole0707, @lourd, @Karibash, @chipit24, @icyJoseph, @xusd320, @fireairforce, @GenhaoLi, @igas, @Macw07, @amannn, @bcdipesh, @r34son, @ivasilov, @lpalmes, @imskyleen, @teamleaderleo, @vitaliemiron, @agadzik, @chdeskur, @nakanoh, @luiscobot, @GameRoMan, @dferber90, @maurobonfietti, @navandstokes, @sajadtorkamani, @bobziroll, @lumirlumir, @KkOoSsTtAa, @msabramo, @sommeeeer, @schoenwaldnils, @remcohaszing, @HerringtonDarkholme, @bgub, @RobPruzan, @lmammino, @MohammedYehia, @extoci, @padmaia, @aacosta11, @vercel-release-bot, @maral, @ethanniser, @MichalMoravik, @rajrawat37, @kidonng, @dnhn, @kristian240, @rachnac-emeritus, @rortan134, and @nick20name17 for helping!