From ad14b49be3993faba0027ec39f6edc2de0b7d249 Mon Sep 17 00:00:00 2001 From: Mark Dalgleish Date: Thu, 18 Sep 2025 16:00:44 +1000 Subject: [PATCH 1/7] Add RSC Framework Mode preview blog post --- data/posts/rsc-framework-mode-preview.md | 117 +++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 data/posts/rsc-framework-mode-preview.md diff --git a/data/posts/rsc-framework-mode-preview.md b/data/posts/rsc-framework-mode-preview.md new file mode 100644 index 00000000..4ab829b5 --- /dev/null +++ b/data/posts/rsc-framework-mode-preview.md @@ -0,0 +1,117 @@ +--- +title: "React Router RSC Framework Mode Preview" +summary: React Router's preview support for RSC Framework Mode is now available +date: 2025-09-18 +image: /blog-images/headers/rr-rsc-path-forward.jpg +ogImage: /blog-images/headers/rr-rsc-path-forward.jpg +imageAlt: Glowing tree +imageDisableOverlay: true +authors: + - Mark Dalgleish +--- + +Recently we shipped a [preview of React Router with support for React Server Components (RSC) in Data Mode](./rsc-preview). With the release of React Router v7.10, we're excited to announce that preview support for [RSC](https://react.dev/reference/rsc/server-components) is now also available in Framework Mode. + +## In short + +- React Router v7.10 has preview support for React Server Components in Framework Mode, provided as a new unstable Vite plugin. +- Server rendered apps are supported in the initial preview release. +- SPA Mode, pre-rendering and custom build entries will be supported in the future release. + +## Try it out + +To get started, you can quickly scaffold a new app from our [unstable RSC Framework Mode template](https://github.com/remix-run/react-router-templates/tree/main/unstable_rsc-framework-mode): + +```sh +npx create-react-router@latest --template remix-run/react-router-templates/unstable_rsc-framework-mode +``` + +## Framework Mode vs Data Mode + +In case you're unfamiliar with React Router's Framework Mode and Data Mode, here's a quick overview. + +Data Mode provides the core APIs for routing, data loading and action handling. In this mode, you're responsible for the overall structure of your project, potentially managing multiple builds and the communication between them at runtime, wiring everything up to a bundler including HMR etc. + +All of this can be tricky to get right. You're effectively building your own meta-framework on top of React Router. + +With Framework Mode, all of this build setup is handled for you via our official Vite plugin, including additional features like typegen and optional file system routing. For most people starting a new project, Framework Mode provides the most streamlined developer experience. + +So, while many consumers were excited to see RSC support in Data Mode, we know that many more of you were instead patiently waiting for RSC support to land in Framework Mode. + +## Layering on Framework Mode + +When introducing RSC to React Router, it was important that we first started at the lowest level with RSC Data Mode. Not only did this ensure we have a stable foundation that could be used with any RSC-enabled bundler, but it also gave us a clear compilation target for RSC Framework Mode. + +Now that RSC Data Mode is in place, we're able to provide an RSC-powered Vite plugin that compiles to these lower level APIs. + +As noted in our post on ["React Router and React Server Components: The Path Forward,"](./react-router-and-react-server-components) the great thing about RSC is that this new Framework Mode plugin is much simpler than our earlier non-RSC work. Most of the framework-level complexity is now implemented at a lower level in RSC Data Mode, with RSC Framework Mode being a more lightweight layer on top. + +## Getting started + +Today, when using the regular non-RSC Framework Mode, you add the React Router plugin to your Vite config: + + +```ts +// vite.config.ts +import { defineConfig } from "vite"; +import { reactRouter } from "@react-router/dev/vite"; + +export default defineConfig({ + plugins: [ + reactRouter(), + ], +}); +``` + +To enable RSC Framework Mode, you simply swap this out for the new `unstable_reactRouterRSC` Vite plugin, along with the official (experimental) [@vitejs/plugin-rsc](https://www.npmjs.com/package/@vitejs/plugin-rsc) as a peer dependency. + +```sh +npm install @vitejs/plugin-rsc +``` + + +```ts +// vite.config.ts +import { defineConfig } from "vite"; +import { unstable_reactRouterRSC } from "@react-router/dev/vite"; +import { rsc } from "@vitejs/plugin-react"; + +export default defineConfig({ + plugins: [ + unstable_reactRouterRSC(), + rsc(), + ], +}); +``` + +With these new plugins, all of the features described in our [RSC Data Mode preview blog post](./rsc-preview) will be available in your Framework Mode app: + +- The ability to return RSC content from loaders/actions. +- RSC-first "Server Component Routes" by exporting a `ServerComponent` instead of the usual `default` component export. +- Client components with the `"use client"` directive. +- Server Functions with the `"use server"` directive. + +Note that some Framework Mode features are not available in our initial preview release. Most notably, SPA Mode, pre-rendering and custom build entries are not yet supported, but rest assured we plan on supporting these before a stable release. + +## Build output + +We've worked to keep the build output as close as possible to non-RSC Framework Mode. In fact, the top-level structure is exactly the same: + +- `build/server` - Server code +- `build/client` - Browser assets + +What's changed is the content of `build/server/index.js`. + +In non-RSC Framework Mode, the exports from `build/server/index.js` form a React Router `ServerBuild` object. In order to make use of this, you need to pass it through an adapter to your desired runtime, e.g. `createRequestListener` from `@react-router/node`, or `createRequestHandler` from `@react-router/express`. + +In RSC Framework Mode, `build/server/index.js` exports a plain old request handler function (`(request: Request) => Promise`) designed for handling document/data requests. + +Importantly, even though these new RSC features rely on having both an "RSC server" and "SSR server" set up, **the build output is still just a single server runtime.** That means it can be deployed just like any other non-RSC Framework Mode app today. + +So, the obvious question is — if it's this straightforward to use RSC with Framework Mode, why not give it a try? + +## What's Next? + +For more details on how to use RSC Framework Mode in React Router, check out our [React Server Components guide](https://reactrouter.com/how-to/react-server-components). + +Stay tuned for more updates to both RSC Data Mode and RSC Framework Mode as we work towards a stable release! From 02777d44a61049adaa86f5bc823e5162f64bc2c2 Mon Sep 17 00:00:00 2001 From: Mark Dalgleish Date: Thu, 18 Sep 2025 16:05:16 +1000 Subject: [PATCH 2/7] Revert unrelated post summary change --- data/posts/react-router-and-react-server-components.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/posts/react-router-and-react-server-components.md b/data/posts/react-router-and-react-server-components.md index 639218dc..1d977977 100644 --- a/data/posts/react-router-and-react-server-components.md +++ b/data/posts/react-router-and-react-server-components.md @@ -1,6 +1,6 @@ --- title: "React Router and React Server Components: The Path Forward" -summary: React Router's RSC support is a major architectural shift, making it a much more powerful library and making Framework Mode less coupled to specific bundlers. +summary: React Router's RSC support is more than just a new feature. It's a major architectural shift that makes it a much more powerful library while also making Framework Mode less coupled to any particular bundler. date: 2025-07-16 image: /blog-images/headers/rr-rsc-path-forward.jpg ogImage: /blog-images/headers/rr-rsc-path-forward.jpg From f49b8060736d5c076031d1f26b7b64a5bb3cc130 Mon Sep 17 00:00:00 2001 From: Brooks Lybrand Date: Mon, 22 Sep 2025 13:52:55 -0500 Subject: [PATCH 3/7] Add code examples for request handling in Express --- data/posts/rsc-framework-mode-preview.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/data/posts/rsc-framework-mode-preview.md b/data/posts/rsc-framework-mode-preview.md index 4ab829b5..44aa345c 100644 --- a/data/posts/rsc-framework-mode-preview.md +++ b/data/posts/rsc-framework-mode-preview.md @@ -104,8 +104,26 @@ What's changed is the content of `build/server/index.js`. In non-RSC Framework Mode, the exports from `build/server/index.js` form a React Router `ServerBuild` object. In order to make use of this, you need to pass it through an adapter to your desired runtime, e.g. `createRequestListener` from `@react-router/node`, or `createRequestHandler` from `@react-router/express`. +```ts +import { createRequestHandler } from "@react-router/express"; +import express from "express"; + +const app = express(); +const build = await import("./build/server/index.js"); +app.all("*", createRequestHandler({ build })); +``` + In RSC Framework Mode, `build/server/index.js` exports a plain old request handler function (`(request: Request) => Promise`) designed for handling document/data requests. +```ts +import { createRequestListener } from "@remix-run/node-fetch-server"; +import express from "express"; + +const app = express(); +const build = await import("./build/server/index.js"); +app.all("*", createRequestListener(build.default)); +``` + Importantly, even though these new RSC features rely on having both an "RSC server" and "SSR server" set up, **the build output is still just a single server runtime.** That means it can be deployed just like any other non-RSC Framework Mode app today. So, the obvious question is — if it's this straightforward to use RSC with Framework Mode, why not give it a try? @@ -115,3 +133,7 @@ So, the obvious question is — if it's this straightforward to use RSC with Fra For more details on how to use RSC Framework Mode in React Router, check out our [React Server Components guide](https://reactrouter.com/how-to/react-server-components). Stay tuned for more updates to both RSC Data Mode and RSC Framework Mode as we work towards a stable release! + +``` + +``` From 03722e36fabd1f825fabab32400e1dcfc5b4c1ac Mon Sep 17 00:00:00 2001 From: Brooks Lybrand Date: Mon, 22 Sep 2025 13:54:29 -0500 Subject: [PATCH 4/7] Apply suggestions from code review --- data/posts/rsc-framework-mode-preview.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/data/posts/rsc-framework-mode-preview.md b/data/posts/rsc-framework-mode-preview.md index 44aa345c..da385e18 100644 --- a/data/posts/rsc-framework-mode-preview.md +++ b/data/posts/rsc-framework-mode-preview.md @@ -10,7 +10,7 @@ authors: - Mark Dalgleish --- -Recently we shipped a [preview of React Router with support for React Server Components (RSC) in Data Mode](./rsc-preview). With the release of React Router v7.10, we're excited to announce that preview support for [RSC](https://react.dev/reference/rsc/server-components) is now also available in Framework Mode. +Recently we shipped a [preview of React Router with support for React Server Components (RSC)](./rsc-preview) as well as low-level APIs for [RSC support in Data Mode](./react-router-and-react-server-components). With the release of React Router v7.10, we're excited to announce that preview support for [RSC](https://react.dev/reference/rsc/server-components) is now also available in Framework Mode. ## In short @@ -30,11 +30,11 @@ npx create-react-router@latest --template remix-run/react-router-templates/unsta In case you're unfamiliar with React Router's Framework Mode and Data Mode, here's a quick overview. -Data Mode provides the core APIs for routing, data loading and action handling. In this mode, you're responsible for the overall structure of your project, potentially managing multiple builds and the communication between them at runtime, wiring everything up to a bundler including HMR etc. +**Data Mode** provides the core APIs for routing, data loading and action handling. In this mode, you're responsible for the overall structure of your project, potentially managing multiple builds and the communication between them at runtime, wiring everything up to a bundler including HMR etc. All of this can be tricky to get right. You're effectively building your own meta-framework on top of React Router. -With Framework Mode, all of this build setup is handled for you via our official Vite plugin, including additional features like typegen and optional file system routing. For most people starting a new project, Framework Mode provides the most streamlined developer experience. +With **Framework Mode**, all of this build setup is handled for you via our official Vite plugin, including additional features like typegen and optional file system routing. For most people starting a new project, Framework Mode provides the most streamlined developer experience. So, while many consumers were excited to see RSC support in Data Mode, we know that many more of you were instead patiently waiting for RSC support to land in Framework Mode. @@ -44,7 +44,7 @@ When introducing RSC to React Router, it was important that we first started at Now that RSC Data Mode is in place, we're able to provide an RSC-powered Vite plugin that compiles to these lower level APIs. -As noted in our post on ["React Router and React Server Components: The Path Forward,"](./react-router-and-react-server-components) the great thing about RSC is that this new Framework Mode plugin is much simpler than our earlier non-RSC work. Most of the framework-level complexity is now implemented at a lower level in RSC Data Mode, with RSC Framework Mode being a more lightweight layer on top. +As noted in our post on ["React Router and React Server Components: The Path Forward"](./react-router-and-react-server-components), the great thing about RSC is that this new Framework Mode plugin is much simpler than our earlier non-RSC work. Most of the framework-level complexity is now implemented at a lower level in RSC Data Mode, with RSC Framework Mode being a more lightweight layer on top. ## Getting started @@ -84,7 +84,7 @@ export default defineConfig({ }); ``` -With these new plugins, all of the features described in our [RSC Data Mode preview blog post](./rsc-preview) will be available in your Framework Mode app: +With these new plugins, all of the features described in our [RSC preview blog post](./rsc-preview) will be available in your Framework Mode app: - The ability to return RSC content from loaders/actions. - RSC-first "Server Component Routes" by exporting a `ServerComponent` instead of the usual `default` component export. From f1c8de071fe3c7bafaae437037025e4155c4f274 Mon Sep 17 00:00:00 2001 From: Brooks Lybrand Date: Mon, 22 Sep 2025 13:59:19 -0500 Subject: [PATCH 5/7] Cleanup --- data/posts/rsc-framework-mode-preview.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/data/posts/rsc-framework-mode-preview.md b/data/posts/rsc-framework-mode-preview.md index da385e18..d063e194 100644 --- a/data/posts/rsc-framework-mode-preview.md +++ b/data/posts/rsc-framework-mode-preview.md @@ -14,9 +14,9 @@ Recently we shipped a [preview of React Router with support for React Server Com ## In short -- React Router v7.10 has preview support for React Server Components in Framework Mode, provided as a new unstable Vite plugin. -- Server rendered apps are supported in the initial preview release. -- SPA Mode, pre-rendering and custom build entries will be supported in the future release. +- React Router v7.9.2 has preview support for React Server Components in Framework Mode, provided as a new unstable Vite plugin. +- Server-rendered apps are supported in the initial preview release. +- SPA Mode, pre-rendering and custom build entries will be supported in a future release. ## Try it out @@ -74,7 +74,7 @@ npm install @vitejs/plugin-rsc // vite.config.ts import { defineConfig } from "vite"; import { unstable_reactRouterRSC } from "@react-router/dev/vite"; -import { rsc } from "@vitejs/plugin-react"; +import rsc from "@vitejs/plugin-rsc"; export default defineConfig({ plugins: [ @@ -133,7 +133,3 @@ So, the obvious question is — if it's this straightforward to use RSC with Fra For more details on how to use RSC Framework Mode in React Router, check out our [React Server Components guide](https://reactrouter.com/how-to/react-server-components). Stay tuned for more updates to both RSC Data Mode and RSC Framework Mode as we work towards a stable release! - -``` - -``` From 279a0242ac86dd4216c5d8a28c7f5f225dee7d79 Mon Sep 17 00:00:00 2001 From: Brooks Lybrand Date: Mon, 22 Sep 2025 15:30:54 -0500 Subject: [PATCH 6/7] Add header image --- data/posts/rsc-framework-mode-preview.md | 4 ++-- .../headers/rsc-framework-mode-preview.jpg | Bin 0 -> 44729 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 public/blog-images/headers/rsc-framework-mode-preview.jpg diff --git a/data/posts/rsc-framework-mode-preview.md b/data/posts/rsc-framework-mode-preview.md index d063e194..20536120 100644 --- a/data/posts/rsc-framework-mode-preview.md +++ b/data/posts/rsc-framework-mode-preview.md @@ -2,8 +2,8 @@ title: "React Router RSC Framework Mode Preview" summary: React Router's preview support for RSC Framework Mode is now available date: 2025-09-18 -image: /blog-images/headers/rr-rsc-path-forward.jpg -ogImage: /blog-images/headers/rr-rsc-path-forward.jpg +image: /blog-images/headers/rsc-framework-mode-preview.jpg +ogImage: /blog-images/headers/rsc-framework-mode-preview.jpg imageAlt: Glowing tree imageDisableOverlay: true authors: diff --git a/public/blog-images/headers/rsc-framework-mode-preview.jpg b/public/blog-images/headers/rsc-framework-mode-preview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aa750febe18152eb9e36c80191a190b5c4d6d1cb GIT binary patch literal 44729 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 K2L Date: Tue, 23 Sep 2025 10:26:05 -0400 Subject: [PATCH 7/7] Update data/posts/rsc-framework-mode-preview.md --- data/posts/rsc-framework-mode-preview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/posts/rsc-framework-mode-preview.md b/data/posts/rsc-framework-mode-preview.md index 20536120..a1a46383 100644 --- a/data/posts/rsc-framework-mode-preview.md +++ b/data/posts/rsc-framework-mode-preview.md @@ -10,7 +10,7 @@ authors: - Mark Dalgleish --- -Recently we shipped a [preview of React Router with support for React Server Components (RSC)](./rsc-preview) as well as low-level APIs for [RSC support in Data Mode](./react-router-and-react-server-components). With the release of React Router v7.10, we're excited to announce that preview support for [RSC](https://react.dev/reference/rsc/server-components) is now also available in Framework Mode. +Recently we shipped a [preview of React Router with support for React Server Components (RSC)](./rsc-preview) as well as low-level APIs for [RSC support in Data Mode](./react-router-and-react-server-components). With the release of React Router v7.9.2, we're excited to announce that preview support for [RSC](https://react.dev/reference/rsc/server-components) is now also available in Framework Mode. ## In short