From cdc7839fe0c462c6e5db34e62711d5d2f0f56faf Mon Sep 17 00:00:00 2001 From: Mark Dalgleish Date: Thu, 11 Sep 2025 16:26:49 +1000 Subject: [PATCH 1/2] Remove resolved `unstable_rootRoute` config --- integration/vite-presets-test.ts | 1 - packages/react-router-dev/config/config.ts | 5 ----- packages/react-router-dev/vite/rsc/plugin.ts | 2 +- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/integration/vite-presets-test.ts b/integration/vite-presets-test.ts index 3c88154853..34a2c3933f 100644 --- a/integration/vite-presets-test.ts +++ b/integration/vite-presets-test.ts @@ -226,7 +226,6 @@ test.describe("Vite / presets", async () => { "serverBundles", "serverModuleFormat", "ssr", - "unstable_rootRouteFile", "unstable_routeConfig", ]); diff --git a/packages/react-router-dev/config/config.ts b/packages/react-router-dev/config/config.ts index 98353026b8..c0d92b2714 100644 --- a/packages/react-router-dev/config/config.ts +++ b/packages/react-router-dev/config/config.ts @@ -264,10 +264,6 @@ export type ResolvedReactRouterConfig = Readonly<{ * SPA without server-rendering. Default's to `true`. */ ssr: boolean; - /** - * The absolute path to the root route file. - */ - unstable_rootRouteFile: string; /** * The resolved array of route config entries exported from `routes.ts` */ @@ -615,7 +611,6 @@ async function resolveConfig({ serverBundles, serverModuleFormat, ssr, - unstable_rootRouteFile: rootRouteFile, unstable_routeConfig: routeConfig, } satisfies ResolvedReactRouterConfig); diff --git a/packages/react-router-dev/vite/rsc/plugin.ts b/packages/react-router-dev/vite/rsc/plugin.ts index 202cfe4984..cdf65d09b6 100644 --- a/packages/react-router-dev/vite/rsc/plugin.ts +++ b/packages/react-router-dev/vite/rsc/plugin.ts @@ -315,7 +315,7 @@ export function reactRouterRSCVitePlugin(): Vite.PluginOption[] { id, viteCommand, routeIdByFile, - rootRouteFile: config.unstable_rootRouteFile, + rootRouteFile: config.routes.root.file, viteEnvironment: this.environment, }); }, From e5d004d52a3f90f72cb8d0b04bea59cb3c4c2d27 Mon Sep 17 00:00:00 2001 From: Mark Dalgleish Date: Thu, 11 Sep 2025 16:35:14 +1000 Subject: [PATCH 2/2] Resolve root route file path --- packages/react-router-dev/vite/rsc/plugin.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/react-router-dev/vite/rsc/plugin.ts b/packages/react-router-dev/vite/rsc/plugin.ts index cdf65d09b6..dad5eafa01 100644 --- a/packages/react-router-dev/vite/rsc/plugin.ts +++ b/packages/react-router-dev/vite/rsc/plugin.ts @@ -1,5 +1,6 @@ import type * as Vite from "vite"; import { init as initEsModuleLexer } from "es-module-lexer"; +import * as Path from "pathe"; import * as babel from "@babel/core"; import colors from "picocolors"; @@ -28,7 +29,6 @@ import { warnOnClientSourceMaps } from "../plugins/warn-on-client-source-maps"; export function reactRouterRSCVitePlugin(): Vite.PluginOption[] { let configLoader: ConfigLoader; - let config: ResolvedReactRouterConfig; let typegenWatcherPromise: Promise | undefined; let viteCommand: Vite.ConfigEnv["command"]; let routeIdByFile: Map | undefined; @@ -36,6 +36,16 @@ export function reactRouterRSCVitePlugin(): Vite.PluginOption[] { const defaultEntries = getDefaultEntries(); + let config: ResolvedReactRouterConfig; + let rootRouteFile: string; + function updateConfig(newConfig: ResolvedReactRouterConfig) { + config = newConfig; + rootRouteFile = Path.resolve( + newConfig.appDirectory, + newConfig.routes.root.file, + ); + } + return [ { name: "react-router/rsc", @@ -75,7 +85,7 @@ export function reactRouterRSCVitePlugin(): Vite.PluginOption[] { const configResult = await configLoader.getConfig(); if (!configResult.ok) throw new Error(configResult.error); - config = configResult.value; + updateConfig(configResult.value); if ( viteUserConfig.base && @@ -246,7 +256,7 @@ export function reactRouterRSCVitePlugin(): Vite.PluginOption[] { }); // Update shared plugin config reference - config = result.value; + updateConfig(result.value); if (configChanged || routeConfigChanged) { invalidateVirtualModules(viteDevServer); @@ -315,7 +325,7 @@ export function reactRouterRSCVitePlugin(): Vite.PluginOption[] { id, viteCommand, routeIdByFile, - rootRouteFile: config.routes.root.file, + rootRouteFile, viteEnvironment: this.environment, }); },