---
title: "Next.js 16.3 調査レポート"
---

## 概要
Next.js 16.3 (v16.3.0-canary.7) における変更点と、本プロジェクトへの影響および採用可能な改善点について調査した。

## 主な変更点と影響

### 1. Edge Runtime の非推奨化 (Deprecation of Edge Runtime)
- **内容**: Edge Runtime が非推奨となり、Node.js ランタイムや標準的なデプロイ戦略への移行が推奨されている。
- **影響**: 本プロジェクト内で `runtime: 'edge'` を指定している箇所は確認されなかったため、直接的な影響はない。

### 2. `unstable_io` API の安定化に向けたフラグ削除
- **内容**: `unstable_io` をガードしていたフラグが削除され、標準で利用可能になった。
- **影響**: 現時点ではプロジェクト内で使用していないが、将来的にデータフェッチの最適化に利用できる可能性がある。

### 3. メタデータルートの HMR 改善
- **内容**: `manifest.ts` や `robots.ts` などのメタデータルートでサーバーサイド HMR が有効になった。
- **影響**: 開発時の DX が向上する。

### 4. 新しい ESLint ルール: `no-location-assign-relative-destination`
- **内容**: 相対パスによる `window.location` への代入を制限するルールが追加された。
- **影響**: プロジェクト内で `location.assign` や `location.href` の使用箇所は確認されなかったため、既存コードへの影響はない。

### 5. AI 対応 (AGENTS.md / CLAUDE.md)
- **内容**: `next dev` 実行時に AI エージェント用のコンテキストファイル (`AGENTS.md` / `CLAUDE.md`) が自動生成または更新される機能が追加された。
- **影響**: 本プロジェクトには既に `AGENTS.md` / `CLAUDE.md` が存在するため、Next.js による自動管理との競合に注意が必要。

### 6. `next/image` の改善
- **内容**: `onError` が一度しか発火しないようになり、内部的な `url.parse` (非推奨) の使用が削除された。
- **影響**: 画像読み込みエラー時の挙動が安定し、パフォーマンスが微改善する。

### 7. 開発オーバーレイの刷新
- **内容**: ブロッキングエラーやビルドエラーの表示がデザイン変更された。
- **影響**: 開発時のエラー特定が容易になる。

## 採用できる改善点
- **prefetchInlining (実験的機能)**:
  `experimental: { prefetchInlining: true }` を設定することで、リンクのプリフェッチ時にデータをインライン化し、遷移速度を向上させることができる。将来的に安定版になった際に導入を検討すべき。

## 結論（canary.7 時点）
Next.js 16.3 は現在 canary 版であり、破壊的な変更（Edge Runtime の非推奨化など）も含まれている。本プロジェクトへの致命的な影響は見られないが、安定版 (v16.3.0) のリリースを待ってから正式にアップグレードすることを推奨する。
調査時点では 16.2.1 での運用を継続し、本調査結果を将来のアップグレード時の参考資料とする。

## 追記: 安定版 v16.3.0 リリース後の再検証（2026-08-04）

v16.3.0 安定版がリリースされたため、v16.2.7 → v16.3.0 間の全変更点を再確認した。

### 破壊的変更の影響確認

| 変更点 | 本プロジェクトへの影響 |
| --- | --- |
| Edge Runtime の非推奨化 | `runtime: 'edge'` 使用箇所なし → 影響なし |
| カスタムサーバーの未ドキュメントメソッド非推奨化 | カスタムサーバー未使用 → 影響なし |
| `moduleResolution: "node"` のデフォルト廃止 | 本プロジェクトは `"bundler"` を使用 → 影響なし |
| `no-location-assign-relative-destination` ESLintルール | `location.assign` / `location.href` 使用箇所なし → 影響なし |

致命的な影響を与える破壊的変更は確認されなかった。

### 依存関係チェーンの再確認

- `eslint-config-next@16.3.0` の `typescript-eslint` 依存は引き続き `^8.46.0`。解決先バージョンが `8.66.x` に上がり、peerDependencies が `typescript >=4.8.4 <6.1.0` に拡張されたため、`typescript@6.0.3` との peerDependency 不整合は解消される見込み。
- ESLint 10 は引き続きブロック中。最新の `eslint-plugin-react@7.37.5` も ESLint 10 未対応（peerDependencies: `^3 || ... || ^9.7`）のままで、`eslint-config-next@16.3.0` もこれに依存している。Next.js 16.3 アップグレードと ESLint 10 アップグレードは切り離して実施する。

### 採用候補の実験的機能の状況更新

- **`prefetchInlining`**: v16.3.0 でデフォルト有効化された。個別設定は不要。
- **`experimental.viewTransition`**: canary.7 以降 inert（無効）として削除された。次回の未活用機能調査では候補から外すか、現在の代替手段の有無を再調査する必要がある。

### `AGENTS.md` / `CLAUDE.md` 自動生成機能の実装確認

`next dev` 実行時の自動生成機能は、`<!-- BEGIN:nextjs-agent-rules -->` マーカーで挟んだ範囲のみを upsert し、マーカー外の既存コンテンツは保持される実装だった（`next.config` の `agentRules: false` でオプトアウトも可能）。既存ファイルが丸ごと上書きされる懸念は大幅に緩和されるが、アップグレード後の初回 `next dev` 実行時に差分は確認すること。

### 結論（v16.3.0 安定版時点）
Next.js 16.3 への単独アップグレードは実施可能。ESLint 10（別途追跡中）とは切り離して先行対応する。
