From e038ac08389989f41d8add4bb7156abfd8d0fb6f Mon Sep 17 00:00:00 2001 From: Mark Dalgleish Date: Tue, 16 Sep 2025 12:14:03 +1000 Subject: [PATCH 1/3] Log experimental warning in RSC Framework Mode --- packages/react-router-dev/vite/rsc/plugin.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/react-router-dev/vite/rsc/plugin.ts b/packages/react-router-dev/vite/rsc/plugin.ts index aff6f2ede2..c061e26c1b 100644 --- a/packages/react-router-dev/vite/rsc/plugin.ts +++ b/packages/react-router-dev/vite/rsc/plugin.ts @@ -29,6 +29,8 @@ import { loadDotenv } from "../load-dotenv"; import { validatePluginOrder } from "../plugins/validate-plugin-order"; import { warnOnClientSourceMaps } from "../plugins/warn-on-client-source-maps"; +let loggedExperimentalWarning = false; + export function reactRouterRSCVitePlugin(): Vite.PluginOption[] { let configLoader: ConfigLoader; let typegenWatcherPromise: Promise | undefined; @@ -280,6 +282,18 @@ export function reactRouterRSCVitePlugin(): Vite.PluginOption[] { await configLoader.close(); }, }, + { + name: "react-router/rsc/experimental-warning", + configResolved() { + if (loggedExperimentalWarning) return; + loggedExperimentalWarning = true; + logger.warn( + colors.yellow( + `${viteCommand === "serve" ? " " : ""}🧪 Using React Router's RSC Framework Mode (experimental)`, + ), + ); + }, + }, { name: "react-router/rsc/typegen", async config(viteUserConfig, { command, mode }) { From 222950dde6643aee7677850cb53f67e95dedd2a4 Mon Sep 17 00:00:00 2001 From: Mark Dalgleish Date: Tue, 16 Sep 2025 14:20:38 +1000 Subject: [PATCH 2/3] Fix tests, use `logger.info` --- packages/react-router-dev/vite/rsc/plugin.ts | 24 ++++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/react-router-dev/vite/rsc/plugin.ts b/packages/react-router-dev/vite/rsc/plugin.ts index c061e26c1b..1489b507e6 100644 --- a/packages/react-router-dev/vite/rsc/plugin.ts +++ b/packages/react-router-dev/vite/rsc/plugin.ts @@ -29,8 +29,6 @@ import { loadDotenv } from "../load-dotenv"; import { validatePluginOrder } from "../plugins/validate-plugin-order"; import { warnOnClientSourceMaps } from "../plugins/warn-on-client-source-maps"; -let loggedExperimentalWarning = false; - export function reactRouterRSCVitePlugin(): Vite.PluginOption[] { let configLoader: ConfigLoader; let typegenWatcherPromise: Promise | undefined; @@ -282,18 +280,24 @@ export function reactRouterRSCVitePlugin(): Vite.PluginOption[] { await configLoader.close(); }, }, - { - name: "react-router/rsc/experimental-warning", - configResolved() { - if (loggedExperimentalWarning) return; - loggedExperimentalWarning = true; - logger.warn( + (() => { + let logged = false; + function logExperimentalInfo() { + if (logged) return; + logged = true; + logger.info( colors.yellow( `${viteCommand === "serve" ? " " : ""}🧪 Using React Router's RSC Framework Mode (experimental)`, ), ); - }, - }, + } + return { + name: "react-router/rsc/experimental-warning", + sharedDuringBuild: true, + buildStart: logExperimentalInfo, + configureServer: logExperimentalInfo, + }; + })(), { name: "react-router/rsc/typegen", async config(viteUserConfig, { command, mode }) { From 7305255871da4038f7241a9c9d12e44693b52cc7 Mon Sep 17 00:00:00 2001 From: Mark Dalgleish Date: Tue, 16 Sep 2025 14:25:46 +1000 Subject: [PATCH 3/3] Refactor --- packages/react-router-dev/vite/rsc/plugin.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/react-router-dev/vite/rsc/plugin.ts b/packages/react-router-dev/vite/rsc/plugin.ts index 1489b507e6..6ad161df30 100644 --- a/packages/react-router-dev/vite/rsc/plugin.ts +++ b/packages/react-router-dev/vite/rsc/plugin.ts @@ -282,7 +282,7 @@ export function reactRouterRSCVitePlugin(): Vite.PluginOption[] { }, (() => { let logged = false; - function logExperimentalInfo() { + function logExperimentalNotice() { if (logged) return; logged = true; logger.info( @@ -292,10 +292,10 @@ export function reactRouterRSCVitePlugin(): Vite.PluginOption[] { ); } return { - name: "react-router/rsc/experimental-warning", + name: "react-router/rsc/log-experimental-notice", sharedDuringBuild: true, - buildStart: logExperimentalInfo, - configureServer: logExperimentalInfo, + buildStart: logExperimentalNotice, + configureServer: logExperimentalNotice, }; })(), {