remix-run/react-router · error
The `future.v8_passThroughRequests` flag has been removed be
Error message
The `future.v8_passThroughRequests` flag has been removed because pass-through requests are now the default behavior
What it means
Fatal config-validation error: readConfig rejects any react-router.config.ts whose `future` object still declares `unstable_passThroughRequests` or `v8_passThroughRequests`. Pass-through requests (the dev/preview server forwarding non-app requests like /assets/* instead of handling them as app routes) are now the default and only behavior, so the flag was deleted. Its mere presence — even set to false — aborts the run.
Source
Thrown at packages/react-router-dev/config/config.ts:719
"v8_splitRouteModules" in futureConfig
) {
return err(
"The `future.v8_splitRouteModules` flag has been moved to a top-level `config.splitRouteModules` field (default `true`)",
);
}
if (
"unstable_viteEnvironmentApi" in futureConfig ||
"v8_viteEnvironmentApi" in futureConfig
) {
return err(
"The `future.v8_viteEnvironmentApi` flag has been removed because Vite Environment API usage is now always enabled",
);
}
if (
"unstable_passThroughRequests" in futureConfig ||
"v8_passThroughRequests" in futureConfig
) {
return err(
"The `future.v8_passThroughRequests` flag has been removed because pass-through requests are now the default behavior",
);
}
if (
"unstable_middleware" in futureConfig ||
"v8_middleware" in futureConfig
) {
return err(
"The `future.v8_middleware` flag has been removed because middleware is now always enabled",
);
}
if (
"unstable_trailingSlashAwareDataRequests" in futureConfig ||
"v8_trailingSlashAwareDataRequests" in futureConfig
) {
return err(
"The `future.v8_trailingSlashAwareDataRequests` flag has been removed because trailing slash-aware data requests are now the default behavior",
);View on GitHub (pinned to 6beaca3952)
Solutions
- Remove the `v8_passThroughRequests` / `unstable_passThroughRequests` key from the `future` object — pass-through is the default now
- If the key comes from a shared preset or extends file, fix it there instead of locally
- Re-run typegen/typecheck to flush out stale flag references in types
- Remove the other removed v8_* future flags in the same pass to avoid hitting the sibling errors one by one
Example fix
// before - react-router.config.ts
export default {
future: { v8_passThroughRequests: true },
} satisfies Config;
// after
export default {} satisfies Config; // pass-through requests are the default behavior Defensive patterns
Strategy: validation
Validate before calling
// fail fast on the removed flag before running CLI commands
import fs from "node:fs";
let cfg = fs.readFileSync("react-router.config.ts", "utf8");
if (/unstable_passThroughRequests|v8_passThroughRequests/.test(cfg)) {
throw new Error("Remove `future.v8_passThroughRequests` — pass-through is the default now");
} Type guard
function isCurrentFutureConfig(f: unknown): boolean {
return typeof f === "object" && f !== null &&
!("v8_passThroughRequests" in f) && !("unstable_passThroughRequests" in f);
} Try / catch
try {
await runReactRouterCli("dev");
} catch (e) {
if (e instanceof Error && e.message.includes("v8_passThroughRequests")) {
// auto-strip the key, notify, and retry the command once
} else throw e;
} Prevention
- After any version bump, grep react-router.config.ts (and presets/extends files) for `future.` keys you didn't add this release
- Enforce config shape with `satisfies Config` so removed keys become compile errors
- Delete flags as soon as their behavior becomes default instead of carrying them forward
When it happens
Trigger: Any readConfig-consuming command (`react-router dev`, `react-router build`, `react-router typegen`) with `future: { v8_passThroughRequests: ... }` or `future: { unstable_passThroughRequests: ... }` in the resolved config, including values inherited via presets or an `extends` chain.
Common situations: Apps migrating from v7 that explicitly opted into pass-through requests to fix dev-server asset 404s; configs shared across monorepo packages still carrying the old key; upgrading without reading the breaking-changes list.
Related errors
- The `future.v8_viteEnvironmentApi` flag has been removed bec
- The `future.v8_middleware` flag has been removed because mid
- The `future.v8_trailingSlashAwareDataRequests` flag has been
- The `future.unstable_subResourceIntegrity` flag has been sta
- When using the React Router `basename` and the Vite `base` c
AI-assisted analysis of remix-run/react-router@6beaca3952 (2026-08-18).
Data as JSON: /api/errors/5340e2db01519cb0.
Report an issue: GitHub.