Pro
Launch Published 14d ago ·

React Router 8 moves to an annual release cycle and raises the baseline to Node 22 and ESM

React Router 8 is the first major release under the project's open governance model. It raises the baseline to Node 22, React 19.2.7, and Vite 7, goes ESM-only, drops the react-router-dom shim, and makes middleware always-on.

By Stackmaven

React Router 8 landed on June 17, 2026, the first major release since the project adopted a formal open governance model built around predictable yearly versioning. The jump from v7 to v8 isn’t a rewrite. It’s a deliberate floor-raising exercise that graduates breaking changes teams have already been living with behind future flags, and cleans up compatibility shims left over from the v6-to-v7 migration.

What shipped

The biggest practical changes in v8:

  • Node 22.22.0 and React 19.2.7 are now the minimum. Node 20 reached end-of-life, and the new baseline lets React Router absorb Active LTS features without workarounds. The team is targeting a v9 release around May 2027, aligned with Node 22’s EOL timeline.
  • ESM-only packages. All published packages drop CommonJS output. Toolchains that still expect CJS from React Router need a migration step before upgrading.
  • react-router-dom is removed. The compatibility shim that kept v6 import paths working through v7 is gone. DOM-specific exports like RouterProvider now come from react-router/dom; everything else comes from react-router.
  • Middleware is always enabled. The future.v8_middleware flag has been lifted and its behavior is now the default. Every loader, action, and middleware function receives a RouterContextProvider as its context argument. Custom servers must return a RouterContextProvider from getLoadContext.
  • Route module splitting is on by default. The future.v8_splitRouteModules flag graduated to a top-level splitRouteModules config option that defaults to true. Builds now split route code into smaller chunks automatically, which can reduce initial load times on large apps.

Vite 7 is also now required. React Router v8 uses the Vite Environment API for its build and pre-rendering pipeline, and that API requires Vite 7. Teams on Vite 5 or 6 need to upgrade Vite before they can upgrade React Router.

What it means for your app

If you’ve been tracking React Router v7 with future flags enabled, the actual migration surface is fairly small: swap react-router-dom imports, rename data to loaderData in meta functions, and confirm your server adapter returns a RouterContextProvider. The team designed the upgrade path around what they call the “boring major release” principle: changes are introduced behind flags during the minor cycle, so the major bump is mostly cleanup.

The ESM-only shift is the one most likely to create friction for teams on older build tooling. Webpack 4 or CJS-heavy server setups may need configuration changes before the upgrade lands cleanly. For teams already on modern tooling, the upgrade path appears straightforward.

The governance model that produced this release

React Router adopted an open governance structure in 2025, establishing a Steering Committee and a five-stage feature proposal process modeled loosely on TC39’s staging model: Proposal, Consideration, Alpha, Beta, Stabilization, and then Stable. The v8 release is the first full-cycle output of that model, and the annual cadence is one of its stated design goals. Teams get a predictable upgrade window rather than tracking an opaque release schedule.

The project now sits under the Remix team at Shopify, but the governance documents position the Steering Committee as broader than the Remix org, with an explicit goal of community participation over time.

What’s worth watching

The next test for the governance model is whether external contributors engage meaningfully with the five-stage proposal process. The v8 release was shaped by the existing team. Whether the process attracts proposals from outside Shopify, or functions mostly as documentation for decisions already made, will be clearer by the time v9 planning starts in late 2026.

For most React teams, the more pressing question is the Vite 7 prerequisite. Vite 7 introduced its own breaking changes, so upgrading React Router in v8 means potentially coordinating two major upgrades at once. The React Router team’s annual cadence is designed to reduce upgrade stress; the Vite coupling adds some of it back.

Sources cited
  1. React Router v8.0.0 CHANGELOG github.com
  2. React Router open governance model remix.run
  3. reactrouter.com changelog reactrouter.com
esc