期間: 2026-09-24 〜 2026-09-28 · PR 20 件(新機能 4 / 変更・修正 15 / その他 1)

新機能

エラーページをレンダラー内で直接描画(#36399)

何ができるようになったか

これまではレンダリング中にエラーが起きると、エラーをクエリにエンコードして /__nuxt_error へ新しいリクエストを送り、エラーページを改めて描画していた。これをレンダラーの fetch 内の try/catch に移し、同じイベントのままエラーページを描画するようにした。

  • 使い方: experimental.inlineErrorRendering で有効化。compatibilityVersion: 5 ではデフォルトで有効
  • 仕組み: 捕捉したエラーを正規化して captureError と onDevError に渡し、新しい NuxtSSRContext で error.vue を描画する。失敗したレンダリングが書き込んだヘッダーや Cookie は同じイベントなのでそのまま残る。再帰の追跡も不要になる
  • JSON リクエスト: error.vue を使わずにそのまま throw する

挙動の違い(非破壊的な変更の意図だが注意点あり)

  • エラーの描画は Nitro のミドルウェアやルートルールを 2 回目には通らない
  • エラーページの render:html は元のイベントで発火し、x-nitro-prerender のヒントも元のイベントから集められる
  • Nitro の error フックを使うモジュールは captureError 経由で引き続き発火する
  • /__nuxt_error は使われなくなる

⏳ 未リリース · トピック: サーバーレンダリング

トップレベルの prerender オプションを追加(nitro.prerender の別名)(#32356)

何ができるようになったか

nuxt.config にトップレベルの prerender オプションが追加された。nitro.prerender の別名で、トップレベルの runtimeConfig や routeRules と同じ位置づけ。

  • 使い方: nuxt.config で prerender: { ... } と書く(nitro.prerender の代わり)
  • 今後: Nuxt 独自のプリレンダリング用オプションを追加する場所にもなる予定
  • #15440 を解決

⏳ 未リリース · トピック: 設定・スキーマ

クライアント側ナビゲーションで一致しない public ファイルへのリンクをハードリロードで表示(#36169)

何ができるようになったか

public/ のファイルへのリンクに external 属性を付け忘れても(nuxt/content の Markdown 内など、付けるのが難しい場合も含む)、Vue Router が知らないパスであればクライアント側の 404 ではなくハードリロードに切り替えて、そのファイルを表示するようになった。

  • 設定: experimental にオプションが追加され、デフォルトで有効(ドキュメントの experimental features に記載)
  • 判定方法: 当初検討したブルームフィルターは見送り、一致しないパスでは常にハードリロードする方式を採用
  • 嬉しい場面: Markdown などから public ファイルへ直接リンクしているとき

⏳ 未リリース · トピック: ルーティング・レイアウト

createUseFetch・createUseAsyncData にアドオン機能を追加(#35797)

何ができるようになったか

createUseFetch / createUseAsyncData のファクトリーに addons オプションが追加され、useFetch・useAsyncData の機能をユーザー側で拡張できるようになった。

  • できること: 呼び出し側のオプションを独自に追加する、マージ後のオプションを書き換える、middleware でハンドラーを包む、戻り値にプロパティを追加・上書きする、watcher などで処理を足す
  • 定義方法: defineUseFetchAddon({ setup }) の setup が内部の useAsyncData 呼び出しの前に実行され、返した関数が呼び出し後に asyncData を受け取る(型は UseFetchAddonOptions<...>)
  • 再利用: 1 つのアドオンを複数のカスタムインスタンスで使い回せる
  • 嬉しい場面: フォーカス時の再取得(refreshOnFocus)のような、コアに入れるほどではない独自機能を足したいとき。多数の機能要望 issue(#15181、#26018 など)を解決するもの

⏳ 未リリース · トピック: データ取得

変更・修正

開発用のエラーチャンネルを本番ビルドから除外(#36407)

Before

4.x ブランチでは、開発用のエラーチャンネルが本番ビルドに入り込む問題があった(nuxt/ecosystem-ci で発見。main では発生していなかった)。

After

開発用のエラーチャンネルを本番ビルドに含めないようにし、ブランチ間の実装をそろえた。

⏳ 未リリース · トピック: 開発時エラー表示

アプリのルートルールを base からの相対パスで照合するよう修正(#36408)

Before

アプリ側のルートルールの照合が、base URL からの相対パスで行われていなかった(main のみで発生し、4.x では再現しない)。

After

ルートルールを base からの相対パスに対して照合するようにした。

⏳ 未リリース · トピック: ルーティング・レイアウト

ペイロードの URL をオリジン相対パスとして解釈するよう修正(#36409)

Before

//x/_payload.json のようなパスに対して誤ったペイロードを返していた。通常は利用者に影響しないが、設定の誤った CDN レイヤーがあるとページが壊れることがあった。

After

ペイロードの URL をオリジン相対パスとして解釈するようにした(レンダラーに URL 解析用の url.ts を追加)。

⏳ 未リリース · トピック: サーバーレンダリング

Nuxt のセッションが発行していない封印値(sealed value)を拒否(#36413)

Before

新しい nuxt/server のセッションユーティリティは、Nuxt のセッションが発行したものではない封印値も受け付けうる状態だった。

After

Nuxt のセッションが発行していない封印値を拒否するようにした。今後の iron-webcrypto 2.1 リリースに備えたもので、ユーザーがセッションを失うのを防ぐ目的。ドキュメント(server imports)にも追記された。

⏳ 未リリース · トピック: サーバーセッション

レイアウト切り替え時に古いページの head エントリが残る不具合を修正(#36395)

Before

レイアウトが切り替わるナビゲーションで遷移先ページの suspense が pending になると、NuxtLayout の onBeforeLeave が NuxtPage の作った nuxtApp['~transitionPromise'] を新しい promise で置き換えていた。最初の promise が解決されないため、離脱したページの head エントリが削除されず、古い title・meta が残り、エントリがナビゲーションごとに増えていた(#36394)。

After

onBeforeLeave が pending 中の promise を再利用(||=)するようにした。onAfterLeave がその promise を解決するので head エントリが正しく破棄される。スクロールのタイミングは変わらない。

⏳ 未リリース · トピック: ルーティング・レイアウト

シンボリックリンク経由のレイヤーディレクトリを実パスに解決(#36402)

Before

Vite はマニフェストのキーを作るときにシンボリックリンクを解決するため、シンボリックリンク経由で参照したレイヤー内のページがマニフェストと一致せず、すべてのルートでプリフェッチされていた(#36401)。

After

レイヤーディレクトリを realpath で実パスに解決するようにした(packages/kit/src/loader/config.ts)。解決できないパスは元のまま扱う。

回避策

修正のリリース前は vite: { resolve: { preserveSymlinks: true } } で回避できる、と PR に記載されている。

⏳ 未リリース · トピック: モジュール解決・ビルド

Nitro の初期化前に updateRuntimeConfig を呼んでも警告しないよう修正(#36403)

Before

4.5 以降、モジュールの setup() から updateRuntimeConfig() を呼ぶと、nuxt dev・nuxt build のたびに [NUXT_B8003] Nitro is not initialized yet: useNitro() was called before the ready hook ran. という警告が出ていた。設定自体は反映されていた(#36396)。

After

内部で useNitro() の代わりに tryUseNitro()?.updateConfig() を使うようにし、警告が出なくなった。Nitro に基づかない server.builder の場合にも対応する。

⏳ 未リリース · トピック: 設定・スキーマ

hydrate されないデータの除去時にオプションを書き換えないよう修正(#36035)

Before

hydrate-never 境界の中で呼ばれたときに付ける serialize: false が、共有されたオプションオブジェクトに影響する可能性があった。

After

serialize: false をローカルなスコープに留め、共有オプションを書き換えないようにした(asyncData.ts)。

⏳ 未リリース · トピック: データ取得

pages/ を使わないルーターで base URL の考慮とミドルウェアフラグのクリアを修正(#36034)

Before

pages/ を使わない場合のルーター(plugins/router.ts)で、base URL が考慮されない、ミドルウェアのフラグがクリアされない、といった未検出の不具合があった。

After

base URL を尊重し、ミドルウェアのフラグをクリアするようにした。

⏳ 未リリース · トピック: ルーティング・レイアウト

node_modules にインストールしたレイヤーの依存関係を事前バンドル(#36208)

Before

レイヤーの依存関係の最適化に、実行されていないデッドコードが含まれていた。ユーザーのディレクトリにインストールされていない optimizeDeps は pnpm で解決できなかった(#36135)。

After

レイヤーのエントリを明示的にスキャンして、設定なしで事前バンドルされるようにした(計測では、レイヤー内 300 ファイルあたり約 200ms のコスト)。ユーザーのディレクトリに無い optimizeDeps も pnpm で解決できるようにした。

⏳ 未リリース · トピック: モジュール解決・ビルド

トップレベルと重複する nitro.* オプションを非推奨に(#36416)

Before

nitro.* のオプションのうち、Nuxt がトップレベルにも同じオプションを用意しているものについて、どちらを使うべきかの案内が無かった。

After

トップレベルに同じオプションがある nitro.* を非推奨とし、ビルダーに依存しないトップレベルのオプションを使うよう利用者・モジュール作者に案内するようにした。

移行が必要

トップレベルに同等のオプションがある場合(prerender など)は、nitro.* ではなくトップレベルのオプションに書き換える。

⏳ 未リリース · トピック: 設定・スキーマ

@nuxt/kit の peer dependency の範囲を実際に必要なバージョンまで広げた(#36417)

Before

peer dependency が各パッケージの最新バージョンを追う指定になっていた。

After

実際に必要なバージョンまで範囲を広げた(例: c12 は任意のバージョンの dotenv を受け付ける)。

⏳ 未リリース · トピック: モジュール解決・ビルド

error を持たないブラウザの通知で開発時エラーオーバーレイを開かないよう修正(#36415)

Before

ResizeObserver のループ制限のようなブラウザの通知は event.error === null の ErrorEvent を出すが、これで全画面のエラーオーバーレイが開いていた(#36405)。

After

dev-error-overlay.client.ts に null チェックを追加し、error を持たない通知ではオーバーレイを開かないようにした。

⏳ 未リリース · トピック: 開発時エラー表示

コンポーネントの名前変更後に import を更新するよう修正(#36165)

Before

開発中にコンポーネントの名前を変えると、モジュールに削除済みファイルへの import が残っていた(#31569)。

After

ローダーが変換したモジュールの ID を Set で保持し、コンポーネントの追加・削除時にレジストリを更新してから、それらのモジュールを変換し直すようにした。より複雑だった #34628 の代わりとなる実装。

⏳ 未リリース · トピック: モジュール解決・ビルド

ビルドディレクトリを移した場合でも型を保持するよう修正(#36418)

Before

別の場所に移したビルドディレクトリへビルドすると、型が失われていた(#36406)。

After

移したビルドディレクトリでも型が保持されるようにした(kit の template.ts、nuxt の core/schema.ts を修正)。

⏳ 未リリース · トピック: モジュール解決・ビルド

その他

  • docs: adjust spacing(#36262)⏳ 未リリース