remix-run/react-router · error
The `future.v8_trailingSlashAwareDataRequests` flag has been
Error message
The `future.v8_trailingSlashAwareDataRequests` flag has been removed because trailing slash-aware data requests are now the default behavior
What it means
Fatal config-validation error: readConfig rejects configs whose `future` object still has `unstable_trailingSlashAwareDataRequests` or `v8_trailingSlashAwareDataRequests`. Client data requests now always preserve/normalize trailing slashes to match the router's trailing-slash config, so the flag was removed; its presence (any value) aborts dev/build/typegen with this message.
Source
Thrown at packages/react-router-dev/config/config.ts:735
"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",
);
}
if ("unstable_subResourceIntegrity" in futureConfig) {
return err(
"The `future.unstable_subResourceIntegrity` flag has been stabilized and moved to a top-level `config.subResourceIntegrity` field",
);
}
}
let future: FutureConfig = {
unstable_enableNodeReadableStream:
userAndPresetConfigs.future?.unstable_enableNodeReadableStream ?? false,
unstable_optimizeDeps:
userAndPresetConfigs.future?.unstable_optimizeDeps ?? false,
};
let allowedActionOrigins = userAndPresetConfigs.allowedActionOrigins ?? false;View on GitHub (pinned to 6beaca3952)
Solutions
- Remove the `v8_trailingSlashAwareDataRequests` / `unstable_trailingSlashAwareDataRequests` key from `future` — the behavior is default now
- If you previously set it to false, re-test routes whose paths differ by a trailing slash (e.g. `/path` vs `/path/`) since the aware behavior now always applies
- Run typegen/typecheck to catch lingering typed references
- Strip all removed v8_* future flags in one cleanup commit
Example fix
// before - react-router.config.ts
export default {
future: { v8_trailingSlashAwareDataRequests: true },
} satisfies Config;
// after
export default {} satisfies Config; // trailing slash-aware data requests are the default Defensive patterns
Strategy: validation
Validate before calling
import fs from "node:fs";
let cfg = fs.readFileSync("react-router.config.ts", "utf8");
if (/unstable_trailingSlashAwareDataRequests|v8_trailingSlashAwareDataRequests/.test(cfg)) {
throw new Error("Remove `future.v8_trailingSlashAwareDataRequests` — it is now the default");
} Type guard
function isCurrentFutureConfig(f: unknown): boolean {
return typeof f === "object" && f !== null &&
!("v8_trailingSlashAwareDataRequests" in f) && !("unstable_trailingSlashAwareDataRequests" in f);
} Try / catch
try {
await runReactRouterCli("build");
} catch (e) {
if (e instanceof Error && e.message.includes("v8_trailingSlashAwareDataRequests")) {
// strip the key and re-run; then smoke-test /path vs /path/ data requests
} else throw e;
} Prevention
- Keep trailing-slash integration tests (with and without the slash) so the now-default behavior is covered after upgrades
- Use `satisfies Config` typing on the config file to catch removed keys at compile time
- Centralize config in one file per app instead of duplicating future flags across packages
When it happens
Trigger: Any config-loading run with `future: { v8_trailingSlashAwareDataRequests: ... }` or `future: { unstable_trailingSlashAwareDataRequests: ... }` in the effective config, including inherited presets.
Common situations: v7 apps that opted in to fix double-slash or redirect-loop issues between the browser and `.data` requests; upgrading after the behavior became the default; stale shared configs in monorepos.
Related errors
- The `future.v8_viteEnvironmentApi` flag has been removed bec
- The `future.v8_passThroughRequests` flag has been removed be
- The `future.v8_middleware` flag has been removed because mid
- The `future.unstable_subResourceIntegrity` flag has been sta
- The `future.v8_splitRouteModules` flag has been moved to a t
AI-assisted analysis of remix-run/react-router@6beaca3952 (2026-08-18).
Data as JSON: /api/errors/f73b902e8076c7da.
Report an issue: GitHub.