npm / @react-router/dev
@react-router/dev
What changed in @react-router/dev 7 to 8, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-19.
1 breaking1 security1 deprecations11 new APIs and options2 behavior and defaults6 tooling8 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@react-router/dev 825 changes
Breaking changes 1
API-only configuration is rejected in RSC Framework Mode.
Security 1
Action submissions behind an HTTPS reverse proxy now construct request.url using X-Forwarded-Proto; configure proxies to overwrite client-supplied values.
Deprecations 1
The --no-typescript flag is deprecated ahead of its removal in React Router v9.
New APIs and options 7
This flag opts into application-controlled route discovery in conventional Framework Mode.
Set
ssr: "unstable_api-only"to retain a runtime server for loaders, actions, and route discovery while disabling production document rendering; API-only builds default to lazy route discovery and support prerendered pages and data files with a SPA fallback.Configure the origin for API-only loader, action, and route discovery requests.
RSC Framework Mode now supports the subResourceIntegrity config option.
Adds a client build version virtual module for RSC.
Custom app/entry.ssr.tsx files can import this virtual module and pass its hashes to React's importMap render option.
This flag opts Node Framework mode apps into renderToReadableStream instead of renderToPipeableStream; it has no effect when an app has its own entry.server.tsx.
Behavior and default changes 2
Non-Node Framework mode apps use a Web Streams default server entry with renderToReadableStream; apps using Node server adapter dependencies continue to use renderToPipeableStream.
The Vite server condition is added only for Framework mode apps that declare a Node server adapter dependency, preventing non-Node SSR runtimes from resolving Node-specific package exports by default.
Tooling 5
Vite preview serves prerendered pages and the SPA fallback while retaining live data requests and route discovery.
Using --no-typescript no longer requires Prettier at runtime because JavaScript entry files are generated at package build time.
Restarts the dev server with --conditions=development when that condition is not already configured.
TypeScript 7 can now be used with this package.
The framework dependency installer detects nub as a supported package manager.
Fixes and other changes 8
Dev critical CSS collection no longer registers server-only route imports as client dependencies, avoiding dependency re-optimization and full page reloads.
Prerender requests use the Vite preview server's bound address and avoid re-resolving localhost, preventing intermittent connection-refused errors.
Source maps for route modules are fixed in unstable RSC Framework Mode.
Server-only route exports are preserved in additional Vite server environments in both API-only and SSR modes.
Development conditions are passed as CLI flags when the dev process is relaunched.
Stack trace locations for split route modules are fixed when source maps are enabled in the reactRouter Vite plugin.
Fixes crashes under the Bun runtime when Babel default imports are already unwrapped.
The buildEnd hook now runs after prerendering is completed when using the new prerendering plugin.
@react-router/dev 75 changes
New APIs and options 4
Enables middleware in Framework mode, allowing code to run before and after Response generation for a matched path.
Passes the raw HTTP request to handlers instead of normalizing request.url; use the sibling url parameter for normalized routing logic.
Enables client-side route exports to be split into independently loaded chunks, improving performance for client-side data loading.
Preserves trailing slash semantics in data request URLs, using /_.data for trailing-slash routes and the root data request.
Tooling 1
Enables support for Vite's experimental Environment API; custom configuration relying on isSsrBuild may need to move under per-environment configuration.