Skip to content

Commit fbc5a10

Browse files
committed
Pin Pro RSC runtime to stable 19.0.5
1 parent 81ef2fa commit fbc5a10

16 files changed

Lines changed: 132 additions & 118 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ After a release, run `/update-changelog` in Claude Code to analyze commits, writ
2424

2525
### [Unreleased]
2626

27+
#### Changed
28+
29+
- **[Pro]** **Pinned the RSC runtime to stable `react-on-rails-rsc@19.0.5`**: the generator and Pro dummy app now install the stable `19.0.5` package, while `react-on-rails-pro` declares an explicit optional peer range for stable `^19.0.5` plus the prior coordinated `19.0.5-rc.6` / `19.0.5-rc.7` pins so existing RC apps can upgrade far enough for the node renderer to warn them onto stable. Fixes [Issue 3965](https://github.com/shakacode/react_on_rails/issues/3965).
30+
2731
### [17.0.0.rc.3] - 2026-06-11
2832

2933
#### Added

docs/pro/react-server-components/create-without-ssr.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,19 @@ yarn add --exact react-on-rails-pro@VERSION
2323
bundle add react_on_rails_pro --version="= VERSION"
2424
```
2525

26-
Also, install React 19.0.x, React DOM 19.0.x, and the exact `react-on-rails-rsc` release candidate currently used by the generator:
26+
Install React 19.0.x, React DOM 19.0.x, and the exact stable `react-on-rails-rsc` package used by the generator:
2727

2828
```bash
29-
yarn add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5-rc.7
30-
# npm install react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5-rc.7
31-
# pnpm add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5-rc.7
32-
# bun add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5-rc.7
29+
yarn add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5
30+
# npm install react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5
31+
# pnpm add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5
32+
# bun add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5
3333
```
3434

3535
> [!NOTE]
3636
> React on Rails Pro RSC currently supports React 19.0.x with patch >= 19.0.4. Do not upgrade generated RSC apps to React 19.1 or 19.2 just because those versions are newer on npm; the RSC bundler APIs used internally can change between React minor versions. See the [React documentation on Server Components](https://react.dev/reference/rsc/server-components#how-do-i-build-support-for-server-components) for details.
3737
>
38-
> The example above pins `react-on-rails-rsc@19.0.5-rc.7`, a release candidate. Keep that exact pin until a stable `react-on-rails-rsc@19.0.5` release is published and the generator/package metadata policy is reviewed together.
38+
> The example above pins the tested stable `react-on-rails-rsc@19.0.5` release. Keep React on the supported 19.0.x line until the generator/package metadata policy is reviewed together.
3939
4040
2. Enable support for Server Components in React on Rails Pro configuration:
4141

docs/pro/react-server-components/rspack-compatibility.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ The generator supports Rspack — when `assets_bundler: rspack` is detected in `
1212
The RSC implementation depends on the `react-on-rails-rsc` npm package, which provides bundler-specific manifest plugins plus a shared loader:
1313

1414
- **WebpackPlugin** (`react-on-rails-rsc/WebpackPlugin`) — generates client/server component manifest files under webpack.
15-
- **RspackPlugin** (`react-on-rails-rsc/RspackPlugin`) — the rspack-native equivalent (`RSCRspackPlugin`). It emits the **same manifest JSON schema** using only standard rspack public APIs, so the RSC runtime resolves client references identically. Exported by the exact `react-on-rails-rsc@19.0.5-rc.7` pin (switch to 19.0.5 stable once published).
15+
- **RspackPlugin** (`react-on-rails-rsc/RspackPlugin`) — the rspack-native equivalent (`RSCRspackPlugin`). It emits the **same manifest JSON schema** using only standard rspack public APIs, so the RSC runtime resolves client references identically. Exported by the exact stable `react-on-rails-rsc@19.0.5` pin.
1616
- **WebpackLoader** (`react-on-rails-rsc/WebpackLoader`) — transforms `'use client'` files into client reference proxies in the RSC bundle. Works under both webpack and rspack.
1717

1818
## React and Package Version Policy
@@ -24,11 +24,11 @@ integration can change between React minor releases, so the generator range shou
2424
advance only after the Webpack and Rspack paths are verified against the new React
2525
minor.
2626

27-
The generator separately pins `react-on-rails-rsc@19.0.5-rc.7` exactly until a
28-
stable `react-on-rails-rsc@19.0.5` is published. That package pin is separate from
29-
the Pro package peer metadata tracked in [issue #3609](https://github.com/shakacode/react_on_rails/issues/3609):
30-
metadata can allow prerelease RSC packages broadly enough for `npm ls`, while the
31-
generator still installs the tested React range and exact RSC package pin.
27+
The generator separately pins `react-on-rails-rsc@19.0.5` exactly. That package
28+
pin is separate from Pro package peer metadata tracked in
29+
[issue #3609](https://github.com/shakacode/react_on_rails/issues/3609): metadata
30+
describes the supported RSC line, while the generator installs the tested React
31+
range and exact RSC package pin.
3232

3333
## Compatibility Matrix
3434

docs/pro/react-server-components/upgrading-existing-pro-app.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ Before running the generator, verify your environment:
1515
| React on Rails Pro npm | `npm ls react-on-rails-pro` / `yarn why react-on-rails-pro` / `pnpm list react-on-rails-pro` / `bun pm why react-on-rails-pro` | Matches gem version |
1616
| React version | `npm ls react` / `yarn why react` / `pnpm list react` / `bun pm why react` | 19.0.x with patch >= 19.0.4 (see [v16.2.0 release notes](../../oss/upgrading/release-notes/16.2.0.md) for security context) |
1717
| React DOM version | `npm ls react-dom` / `yarn why react-dom` / `pnpm list react-dom` / `bun pm why react-dom` | Must match `react` version |
18-
| `react-on-rails-rsc` | `npm ls react-on-rails-rsc` / `yarn why react-on-rails-rsc` / `pnpm list react-on-rails-rsc` / `bun pm why react-on-rails-rsc` | Exact `19.0.5-rc.7` pin until stable `19.0.5` ships |
18+
| `react-on-rails-rsc` | `npm ls react-on-rails-rsc` / `yarn why react-on-rails-rsc` / `pnpm list react-on-rails-rsc` / `bun pm why react-on-rails-rsc` | Exact stable `19.0.5` pin |
1919
| Node.js | `node --version` | 18+ |
2020
| Pro initializer exists | `ls config/initializers/react_on_rails_pro.rb` | File exists |
2121
| Node renderer configured | Check `react_on_rails_pro.rb` for `server_renderer = "NodeRenderer"` | NodeRenderer enabled |
2222

2323
If React is outside the supported 19.0.x range or below 19.0.4, upgrade it first:
2424

2525
```bash
26-
pnpm add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5-rc.7
27-
# or: yarn add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5-rc.7
28-
# or: npm install react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5-rc.7
26+
pnpm add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5
27+
# or: yarn add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5
28+
# or: npm install react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5
2929
```
3030

3131
> **React 19.0.x with patch >= 19.0.4** is recommended. Earlier 19.0.x versions (19.0.0--19.0.3) have known security vulnerabilities — see the [v16.2.0 release notes](../../oss/upgrading/release-notes/16.2.0.md) for details.
@@ -34,7 +34,7 @@ pnpm add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@19.0.5-rc.7
3434
> The RSC generator intentionally stays on React 19.0.x and does not widen generated apps to React 19.1 or 19.2 yet. React's RSC runtime and bundler APIs can change between minor releases, so advance the React range only when the generator, docs, and package metadata policy are reviewed together.
3535
3636
> [!NOTE]
37-
> `react-on-rails-rsc@19.0.5-rc.7` is an exact release-candidate pin. Keep that exact pin until a stable `react-on-rails-rsc@19.0.5` release is available. This is separate from the Pro package peer metadata tracked in [issue #3609](https://github.com/shakacode/react_on_rails/issues/3609): metadata can allow prerelease RSC packages broadly enough for `npm ls`, while the generator still installs the tested exact RSC package pin.
37+
> `react-on-rails-rsc@19.0.5` is the tested stable generator pin. Pro peer metadata (see [issue #3609](https://github.com/shakacode/react_on_rails/issues/3609)) describes the supported RSC line; the generator installs the exact tested pin.
3838
3939
## Pre-Migration: Audit Components for Client API Usage
4040

@@ -263,8 +263,8 @@ Then run `bundle install` before retrying the generator.
263263

264264
If the RSC bundle build fails but server and client builds succeed, the issue is likely in `rscWebpackConfig.js`. Common causes:
265265

266-
- **Missing `react-on-rails-rsc` package**: Run `pnpm add react-on-rails-rsc@19.0.5-rc.7`
267-
- **React or `react-on-rails-rsc` version mismatch**: RSC currently requires React 19.0.x with patch >= 19.0.4 and the exact `react-on-rails-rsc@19.0.5-rc.7` pin. Check with `pnpm list react react-dom react-on-rails-rsc`
266+
- **Missing `react-on-rails-rsc` package**: Run `pnpm add react-on-rails-rsc@19.0.5`
267+
- **React or `react-on-rails-rsc` version mismatch**: RSC currently requires React 19.0.x with patch >= 19.0.4 and the exact `react-on-rails-rsc@19.0.5` pin. Check with `pnpm list react react-dom react-on-rails-rsc`
268268
- **Custom webpack config incompatibility**: If your `serverWebpackConfig.js` was heavily customized, the generator's transforms may not apply cleanly. See [Preparing Your App: Step 4](../../oss/migrating/rsc-preparing-app.md#step-4-set-up-the-rsc-webpack-bundle) for the underlying intent of each webpack change
269269

270270
### Manifest Files Not Generated

0 commit comments

Comments
 (0)