React Router v8

379文字
2分
編集

React Router v8 がリリースされた。v7 以降に 40 回以上のマイナーリリースで積み上げた機能を土台に、破壊的変更は最小限に抑えている。メジャー版はおおむね 1 年ごとに出す方針で、v6 と Remix v2 はセキュリティ更新のない EOL 扱いになる。

#移行・破壊的変更

v8 の破壊的変更はすべて v7 上で事前対応できる。アップグレードは peer dependency の更新、future flag の採用、非推奨 API の削除が中心である。

最低サポートバージョンは次のとおり。

  • Node 22.22.0+
  • React 19.2.7+
  • Vite 7+(Framework モード)

配布物は ESM のみとなり、tsconfig の target/lib は ES2022 に揃えられた。Node サポートは Active LTS の全 minor と、Maintenance LTS の最新 minor ブランチのみを公式サポートする。

v8 future flag は削除され、挙動が既定になった。対象は future.v8_trailingSlashAwareDataRequestsfuture.v8_passThroughRequestsfuture.v8_middlewarefuture.v8_viteEnvironmentApi である。future.v8_splitRouteModules はトップレベルの splitRouteModules 設定に移り、既定で有効になる。

削除・置き換えが必要な API は次のとおり。

  • react-router-dom パッケージ(react-routerreact-router/dom へ移行)
  • route module metadata 引数(loaderData へ置き換え)
  • @react-router/dev/vite/cloudflare の dev proxy(@cloudflare/vite-plugin へ移行)
  • @react-router/architectcreateRequestHandler における useRequestContextDomainName オプション(挙動が既定化)

meta では data の代わりに loaderData を使う。

tsx
export function meta({ loaderData }: Route.MetaArgs) {
  return [{ title: loaderData.title }];
}

#今後のサポート

React Router v7 は引き続きセキュリティ更新を受ける。Server Components と Server Actions のサポートは unstable のまま継続し、マイナー版での安定化を見込んでいる。

#参考文献