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

  1. Remove the `v8_passThroughRequests` / `unstable_passThroughRequests` key from the `future` object — pass-through is the default now
  2. If the key comes from a shared preset or extends file, fix it there instead of locally
  3. Re-run typegen/typecheck to flush out stale flag references in types
  4. 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

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


AI-assisted analysis of remix-run/react-router@6beaca3952 (2026-08-18). Data as JSON: /api/errors/5340e2db01519cb0. Report an issue: GitHub.