OpenAINext.jsMar 18, 2026, 8:00 PM

Next.js 16.2

A condensed section focused on the key takeaways first.

Original Post

Quick Digest

Summary

A condensed section focused on the key takeaways first.

openaienmodel: gpt-5-mini-2025-08-07

Next.js 16.2

Key Points

  • Dev startup up to ~4× faster
  • Server Function logs in dev terminal
  • Attach debugger with next start --inspect

Summary

Next.js 16.2 focuses on runtime and developer-experience improvements: much faster dev startup and Server Components rendering, better debugging for Server Functions and production processes, Turbopack fixes and speedups, AI/Agents tooling, a refreshed production error page, and several experimental APIs for finer-grained error and navigation control.

Key Points

  • Performance
    • Much faster time-to-URL in next dev (reported up to ~4× faster) and Server Components payload deserialization improvements that reduce server render time (real-world gains ~25–60%).
    • ImageResponse is significantly faster (2× for basic images, up to 20× for complex images) and gains broader CSS/SVG support; default font changed to Geist Sans.
  • Debugging & observability
    • Server Function logging in the dev terminal (function name, args, execution time, file).
    • Hydration diff indicator in the error overlay (+ Client / - Server) and Error.cause chains displayed up to 5 levels.
    • next start --inspect to attach a Node.js debugger to production servers for profiling and debugging.
  • Routing & UX
    • transitionTypes prop on <Link> (App Router only) to pass view transition types to React.addTransitionType.
    • Multiple icon formats (same base name) handled automatically in app directory for fallbacks.
  • Tooling & ecosystem
    • Adapters are now stable for platform-specific build customization.
    • Turbopack: faster builds, SRI support, postcss.config.ts, tree-shaking and 200+ fixes.
    • AI/Agents improvements: create-next-app AGENTS.md, browser log forwarding, and experimental next-browser.
  • Experimental APIs
    • unstable_catchError() for component-level error boundaries and unstable_retry() in error.tsx to refresh + retry.
    • experimental.prefetchInlining, experimental.cachedNavigations, experimental.appNewScrollHandler (opt-in via next.config.js).

How to upgrade

Use the automated upgrader: npx @next/codemod@canary upgrade latest Or upgrade manually: npm install next@latest react@latest react-dom@latest Or start a new app: npx create-next-app@latest

Notes for engineers

  • Check and opt into experimental flags (next.config.js) only after testing in staging.
  • Expect smaller RSC payload deserialization overhead and validate real-world rendering perf on your app workload.
  • Review Turbopack and ImageResponse changes if you rely on custom build plugins or server-side image generation.

Full Translation

Translations

A translation section that keeps the flow of the original article.

openaijamodel: gpt-5-mini-2025-08-07

Next.js 16.2 リリース

Back to Blog
Wednesday, March 18th 2026

投稿者: Jimmy Lai @feedthejim、Tim Neutkens @timneutkens

Next.js 16.2 にはパフォーマンス改善、デバッグの向上、Agents の改善、そして 200 件以上の Turbopack の修正と改善が含まれます。

主な内容

  • Faster Time-to-URL : 約 400% 速い next dev の起動
  • Faster Rendering : レンダリングが最大で約 50% 高速化
  • New Default Error Page : 再設計された組み込みの 500 ページ(デフォルトのエラーページ)
  • Server Function Logging : 開発中のターミナルに Server Function 実行ログを出力
  • Hydration Diff Indicator : エラーオーバーレイでサーバー/クライアントの差分を明示表示
  • --inspect for next start : 本番サーバーに Node.js デバッガをアタッチ可能

また、このリリースで特に重要な 2 つの領域について個別の深掘り記事を公開しました:

  • Turbopack : より高速なビルド、SRI サポート、postcss.config.ts、ツリーシェイキング改善、Server Fast Refresh、及び 200+ のバグ修正
  • AI Improvements : AGENTS.mdcreate-next-app に含まれるようになったこと、ブラウザログの転送、next-browser(実験的)など

今すぐアップグレードするか、新しいプロジェクトを始めてください:

# 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

Faster Time-to-URL in Development

next dev 実行時に localhost:3000 が使用可能になるまでの時間を大幅に短縮しました。同じマシンとプロジェクトで、デフォルトアプリケーションにおける Next.js 16.1 と比較してスタートアップが約 87% 速くなっています。

Faster Rendering

React 側への貢献により、Server Components のペイロードのデシリアライズが最大で 350% 高速化しました。従来の実装では JSON.parse の reviver コールバックを使っており、パースされた JSON の各キー・バリューごとに V8 の C++/JavaScript 境界を越えていました。わずかな no-op reviver でも JSON.parse は reviver なしに比べて約 4 倍遅くなります。

新しいアプローチでは二段階の処理を採用しています: まず通常の JSON.parse() を行い、その後純粋な JavaScript の再帰走査で変換を行います。これにより境界越えのオーバーヘッドがなくなり、変換の必要がないプレーンな文字列を短絡するなどの最適化が可能になります。

実際の Next.js アプリケーションでは、RSC ペイロードのサイズに依存しますが、HTML へのレンダリングが 25%〜60% 高速化します。

サーバーレンダリング時間の例

ケース改善率BeforeAfter
Server Component Table with 1000 items26% faster19ms15ms
Server Component with nested Suspense33% faster80ms60ms
Payload CMS homepage34% faster43ms32ms
Payload CMS with rich text60% faster52ms33ms

New Default Error Page

本番環境で表示されるデフォルトのエラーページを再設計しました。アプリケーションでカスタムの global-error.tsx または error.tsx を定義していない場合、Next.js は組み込みのフォールバックページをレンダリングします。このフォールバックページをよりクリーンでモダンなデザインに更新しました。

Server Function Logging

開発時にターミナルへ Server Function の実行ログを出すようになりました。各ログには関数名、引数、実行時間、関数が定義されたファイルが表示されます。

Hydration Diff Indicator

ハイドレーション不一致が発生した場合、エラーオーバーレイにおいてサーバー由来のコンテンツとクライアント由来のコンテンツが明確にラベル付けされます。差分は「+ Client / - Server」の凡例を使って、どこが差異を生じたか直感的に分かるようになっています。

--inspect for next start

Next.js 16.1 で next dev --inspect による開発時の Node.js デバッガ接続が導入されましたが、16.2 ではこれが next start にも拡張され、本番サーバーに Node.js デバッガをアタッチできるようになりました。

next start --inspect

これは問題のデバッグや CPU / メモリ使用状況のプロファイリングに有用です。Node.js デバッガの使い方については Chrome のドキュメントを参照してください。

transitionTypes Prop for next/link

<Link> コンポーネントは transitionTypes プロップ(ナビゲーション時に適用する View Transitions の種類を示す文字列配列)を受け取るようになりました。各タイプはナビゲーションの Transition 中に React.addTransitionType へ渡され、ナビゲーションの方向や文脈に基づいて異なるアニメーションをトリガーできます。

<Link href="/about" transitionTypes={[ 'slide' ]}>About</Link>

これは App Router でのみサポートされています。Pages Router はナビゲーションで React Transitions を使用しないためです。Pages Router のリンクに対する transitionTypes は無視されるため、共通のリンクコンポーネントを両ルーター間で共有できます。View transitions の詳細はドキュメントを参照してください。

Faster ImageResponse

ImageResponse が大幅に改善されました:

  • 基本的な画像で 2x、複雑な画像では最大 20x 速くなりました
  • インライン CSS 変数、text-indenttext-decoration-skip-inkbox-sizingdisplay: contentsposition: static、および gap のパーセンテージ値など、CSS と SVG のサポートが向上
  • デフォルトフォントが Noto Sans から Geist Sans に変更

ImageResponse の詳細についてはドキュメントを参照してください。

Error Causes in the Dev Overlay

エラーオーバーレイで Error.cause チェーンを表示するようになり、他のエラーを包んでいる(wrap している)エラーのデバッグが容易になりました。原因はトップレベルエラーの下にフラットなリストとして、最大 5 レベルまで表示されます。

Adapters

Adapters が安定化しました。これはプラットフォームがビルドプロセスをカスタマイズできる新しい API です。デプロイプラットフォームやカスタムビルド統合で Next.js の設定を変更したり、ビルド出力を処理したりする際に有用です。Adapters に関する詳細は来週共有予定です。

Multiple Icon Formats

同じベース名で拡張子が異なる複数のアイコンファイル(例: icon.pngicon.svg)を app ディレクトリで自動的に処理するようになりました。これによりブラウザのフォールバック対応が容易になります。モダンブラウザは SVG を使用し、古いブラウザは PNG にフォールバックします。両方のフォーマットは個別の <link> タグとしてレンダリングされます。

Experimental Features

unstable_catchError()

error.js の慣習によるエラー回復体験を拡張する unstable_catchError() は、コンポーネントレベルでより細かいエラーバウンダリ制御を提供します。unstable_catchError() を使ってカスタムエラーバウンダリを作成すると、コンポーネントツリー内の任意の場所に配置できます。unstable_catchError() で作成されるエラーバウンダリは、呼び出し側から渡される props と、第二引数として ErrorInfo を受け取ります。ErrorInfo の形状は error.js に渡される props と同じです。unstable_catchError() は Client Components からのみ呼び出せます。

例:

app/custom-error-boundary.tsx
'use client';
import { unstable_catchError, type ErrorInfo } from 'next/error';

function CustomErrorBoundary(
  props: { title: string },
  { error, unstable_retry }: ErrorInfo,
) {
  return (
    <div>
      <h2>{props.title}</h2>
      <p>{error.message}</p>
      <button onClick={() => unstable_retry()}>Try again</button>
    </div>
  );
}

export default unstable_catchError(CustomErrorBoundary);

app/page.tsx
import CustomErrorBoundary from './custom-error-boundary';

export default function Page() {
  return (
    <CustomErrorBoundary title="Oops! Something went wrong!">
      <Component />
    </CustomErrorBoundary>
  );
}

unstable_retry() in error.tsx

error.tsx コンポーネントで新たに unstable_retry() プロップが利用可能になりました。従来の reset() プロップはエラー状態をクリアして子を再レンダリングするだけで、一時的なレンダリングエラーには有効ですが、データ取得や RSC フェーズで発生するエラーには十分ではありません。

unstable_retry()startTransition() 内で router.refresh()reset() を呼び出し、データを再取得してセグメントを再レンダリングするビルトインのリトライロジックを提供します。多くのエラー回復シナリオでは reset() より unstable_retry() の使用が推奨されます。

例:

app/error.tsx
'use client';
import type { ErrorInfo } from 'next/error';

export default function Error({ error, unstable_retry }: ErrorInfo) {
  return (
    <div>
      <h2>Something went wrong</h2>
      <p>{error.message}</p>
      <button onClick={() => unstable_retry()}>Try again</button>
    </div>
  );
}

experimental.prefetchInlining

Next.js 16 で導入されたセグメントごとのプリフェッチングでは、クライアントがルートの各セグメントに対して個別にリクエストを発行します。これにより兄弟ルート間で共有されるレイアウトは一度だけフェッチされて再利用されるためキャッシュ効率は向上しますが、リクエスト数が増えます。

新しい experimental.prefetchInlining オプションは、ルートのすべてのセグメントデータを単一レスポンスにバンドルし、1 つのリンクあたりのプリフェッチ要求数を 1 件に減らします。トレードオフとして、共有レイアウトデータがインライン化されたレスポンス間で重複し、キャッシュと再利用の恩恵が減る場合があります。

next.config.ts
const nextConfig = {
  experimental: {
    prefetchInlining: true,
  },
};

export default nextConfig;

これは、サイズベースのヒューリスティック(小さなセグメントは自動的にインライン化し、大きなセグメントは分離する)に向けた中間段階です。

experimental.cachedNavigations

このフラグは Cached Navigations の挙動を独立して制御します。ナビゲーションや初回 HTML ロードからの静的・動的な Server Components のデータをキャッシュして、再訪問時に即時提供できるようにします。cacheComponents が有効である必要があります。

experimental.appNewScrollHandler

App Router 用のスクロールとフォーカス管理システムを React Fragment refs を使って再設計しました。新しいハンドラはナビゲーション後のフォーカス管理を改善します。セグメント内の最初のフォーカス可能な子要素に深くフォーカスする(コンテンツを飛ばしてしまう)代わりに、現在アクティブな要素を blur する挙動に変更し、ブラウザのナビゲーション動作に近づけています。

next.config.ts
const nextConfig = {
  experimental: {
    appNewScrollHandler: true,
  },
};

export default nextConfig;

フィードバックとコミュニティ

Next.js の今後を形作るためにフィードバックを共有してください:

  • GitHub Discussions
  • GitHub Issues
  • Discord
  • Community

コントリビューター

Next.js は 3,770 人以上の個々の開発者による共同作業の成果です。今回のリリースに関わった主な貢献者:

  • Next.js チーム: Andrew、Hendrik、Janka、Jiachi、Jimmy、Jiwon、JJ、Josh、Jude、Sam、Sebbie、Tim、Zack
  • Turbopack チーム: Benjamin、Andrew、Luke、Niklas、Tobias、Will
  • Next.js Docs チーム: Delba、Rich、Ismael、Joseph、Aurora

また、大変多くのコミュニティメンバーに感謝します: @acdlite、@unstubbable、@mischnic、@sokra、@ztanner、@mmastrac、@bgw、@lukesandberg、@wyattjoh、@huozhi、@eps1lon、@jwueller、@brookemosby、@delbaoliveira、@icyJoseph、@gaojude、@hanzala-sohrab、@dango0812、@ijjk、@msmx-mnakagawa、@Juneezee、@davidgolden、@LucianBuzzo、@devjiwonchoi、@alexcarpenter、@jaffarkeikei、@BradErz、@mintydev789、@naaa760、@Suhaib3100、@pavan-sh、@amannn、@fireairforce、@JamBalaya56562、@wheresrhys、@ericrav、@lubieowoce、@Thomas465xd、@bgub、@wbinnssmith、@Netail、@robert-j-webb、@bencmbrook、@shadcn、@sigmachirality、@abhishekmardiya、@vvscode、@feedthejim、@freek-boon-greenberry、@andrewimm、@alubbe、@FurryR、@01-binary、@andrewdamelio、@swarnava、@gnoff、@kristiyan-velkov、@styfle、@haydenbleasel、@rishishanbhag、@tdarthur、@lavanitha、@karlhorky 他多数

ご協力ありがとうございました!