Skip to content

Commit 187e40e

Browse files
committed
Gate TanStack starter on React on Rails 17 rc9
Align the Ruby, Pro renderer, and RSC release stack with the published rc.9/rc.1 artifacts while preserving the starter's direct and transitive dependency topology.
1 parent 25246ab commit 187e40e

14 files changed

Lines changed: 64 additions & 58 deletions

AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ code first and then update the docs or this file in the same change.
3030
Rspack default. The route also includes a provider-backed RSC prefetch action
3131
through `prefetchServerComponent`.
3232
- `/hello_server` demonstrates streaming RSC. Rspack client-reference manifests
33-
are available with `react-on-rails-rsc@19.2.1-rc.0`; the remaining strict
33+
are available with `react-on-rails-rsc@19.2.1-rc.1`; the remaining strict
3434
production CSP hydration limitation is documented in
3535
`docs/11-rsc-csp-nonce-spike.md`.
3636
- The root path `/` is a public Rails landing page (`home#index`). It leads with
@@ -279,7 +279,7 @@ Rules:
279279
- Production-assets mode must run with optimized assets and the React on Rails
280280
Pro Node renderer.
281281
- Treat interactive RSC client-reference manifest generation on Rspack as
282-
expected behavior with `react-on-rails-rsc@19.2.1-rc.0` or newer. Keep
282+
expected behavior with `react-on-rails-rsc@19.2.1-rc.1` or newer. Keep
283283
`pnpm run repro:rspack-rsc` available as the small regression check.
284284
- When validating unreleased `react_on_rails` or `react_on_rails_rsc` branches,
285285
follow `docs/12-upstream-branch-testing.md`. Do not leave local path or git

Gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ group :test do
6565
gem "selenium-webdriver"
6666
end
6767

68-
gem "react_on_rails", "17.0.0.rc.7"
68+
gem "react_on_rails", "17.0.0.rc.9"
6969

70-
gem "react_on_rails_pro", "17.0.0.rc.7"
70+
gem "react_on_rails_pro", "17.0.0.rc.9"
7171

7272
gem "shakapacker", "10.2.0"
7373

Gemfile.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -330,21 +330,21 @@ GEM
330330
prism (>= 1.6.0)
331331
rbs (>= 4.0.0)
332332
tsort
333-
react_on_rails (17.0.0.rc.7)
333+
react_on_rails (17.0.0.rc.9)
334334
addressable
335335
connection_pool
336336
execjs (~> 2.5)
337337
rails (>= 5.2)
338338
rainbow (~> 3.0)
339339
shakapacker (>= 6.0)
340-
react_on_rails_pro (17.0.0.rc.7)
340+
react_on_rails_pro (17.0.0.rc.9)
341341
async (>= 2.29)
342342
async-http (~> 0.95)
343343
execjs (~> 2.9)
344344
io-endpoint (~> 0.17.0)
345345
jwt (>= 2.5, < 4)
346346
nokogiri (>= 1.12, < 2)
347-
react_on_rails (= 17.0.0.rc.7)
347+
react_on_rails (= 17.0.0.rc.9)
348348
regexp_parser (2.12.0)
349349
reline (0.6.3)
350350
io-console (~> 0.5)
@@ -491,8 +491,8 @@ DEPENDENCIES
491491
puma (>= 5.0)
492492
rack-attack (~> 6.8)
493493
rails (~> 8.1.3)
494-
react_on_rails (= 17.0.0.rc.7)
495-
react_on_rails_pro (= 17.0.0.rc.7)
494+
react_on_rails (= 17.0.0.rc.9)
495+
react_on_rails_pro (= 17.0.0.rc.9)
496496
rspec-rails (~> 8.0)
497497
rubocop-rails-omakase
498498
selenium-webdriver

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ Each route demonstrates a deliberate rendering choice, not a fallback:
5050
Flight stream, and composes that server-streamed tree beside ordinary client
5151
React. It now includes an in-app status panel that separates the working RSC
5252
payload route from the lower-level streaming client-island limitation. It runs
53-
on the default Rspack bundler with `react-on-rails-rsc@19.2.1-rc.0` and
53+
on the default Rspack bundler with `react-on-rails-rsc@19.2.1-rc.1` and
5454
exercises the provider-backed RSC prefetch path.
5555
- **`/hello_server`** demonstrates streaming React Server Components. The demo
5656
keeps an interactive `LikeButton` client island inside a server-rendered
@@ -78,20 +78,20 @@ Rspack is the default Shakapacker bundler for local development and the
7878
deployed image. Use `config/shakapacker.yml`, `config/rspack/`, and the
7979
`.controlplane/Dockerfile` build ARG as the source of truth for the default
8080
path. The Rspack RSC plugin in
81-
`react-on-rails-rsc@19.2.1-rc.0` emits the client/server manifests the Pro RSC
81+
`react-on-rails-rsc@19.2.1-rc.1` emits the client/server manifests the Pro RSC
8282
client-reference path needs. Webpack remains an opt-in bridge/comparison path
8383
via `SHAKAPACKER_ASSETS_BUNDLER=webpack`.
8484

8585
| Component | Version |
8686
| --- | --- |
87-
| React on Rails / Pro | `17.0.0.rc.7` / `17.0.0-rc.7` |
88-
| React on Rails RSC | `19.2.1-rc.0` |
87+
| React on Rails / Pro | `17.0.0.rc.9` / `17.0.0-rc.9` |
88+
| React on Rails RSC | `19.2.1-rc.1` |
8989
| Shakapacker / Shakapacker Rspack | `10.2.0` |
9090
| React | `19.2.7` |
9191
| Rails | `8.1.x` |
9292
| Language / tooling | TypeScript, pnpm |
9393

94-
Shakapacker stays on `10.2.0` for this release; the React on Rails 17 RC7
94+
Shakapacker stays on `10.2.0` for this release; the React on Rails 17 RC9
9595
upgrade did not require a coupled Shakapacker bump.
9696

9797
## Setup

SPIKE.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ The remaining limitation is separate from the bundler: `/hello_server`'s client
1515
island still waits on the upstream React on Rails Pro streaming CSP nonce fix in
1616
strict production CSP mode. See `docs/11-rsc-csp-nonce-spike.md`.
1717

18-
The app was bootstrapped with `create-react-on-rails-app --rsc --rspack --package-manager pnpm` and the current release stack targets React on Rails Pro `17.0.0-rc.7`, React on Rails RSC `19.2.1-rc.0`, and Shakapacker `10.2.0`. Shakapacker stays on `10.2.0` because the React on Rails 17 RC7 upgrade did not require a coupled Shakapacker bump. The Rails/Rspack/React on Rails Pro setup passes `react_on_rails:doctor` with the expected warning that both Rspack and Webpack configs are present.
18+
The app was bootstrapped with `create-react-on-rails-app --rsc --rspack --package-manager pnpm` and the current release stack targets React on Rails Pro `17.0.0-rc.9`, React on Rails RSC `19.2.1-rc.1`, and Shakapacker `10.2.0`. Shakapacker stays on `10.2.0` because the React on Rails 17 RC9 upgrade did not require a coupled Shakapacker bump. The Rails/Rspack/React on Rails Pro setup passes `react_on_rails:doctor` with the expected warning that both Rspack and Webpack configs are present.
1919

2020
## Validation Goals
2121

@@ -27,8 +27,8 @@ The app was bootstrapped with `create-react-on-rails-app --rsc --rspack --packag
2727
## What Worked
2828

2929
- Rails 8.1 app scaffolded with PostgreSQL and SolidQueue.
30-
- React on Rails and React on Rails Pro release stack: `17.0.0.rc.7`.
31-
- React on Rails RSC stack: `19.2.1-rc.0`.
30+
- React on Rails and React on Rails Pro release stack: `17.0.0.rc.9`.
31+
- React on Rails RSC stack: `19.2.1-rc.1`.
3232
- Shakapacker launch stack: `10.2.0`.
3333
- Rspack builds complete successfully and emit the RSC client-reference
3434
manifests with `react-on-rails-rsc@19.0.5-rc.2`.
@@ -46,10 +46,10 @@ manifests present.
4646
Current stance:
4747

4848
- Keep Rspack as the bundler.
49-
- Keep the React on Rails Pro `17.0.0-rc.7`, React on Rails RSC `19.2.1-rc.0`, and Shakapacker `10.2.0` release stack.
49+
- Keep the React on Rails Pro `17.0.0-rc.9`, React on Rails RSC `19.2.1-rc.1`, and Shakapacker `10.2.0` release stack.
5050
- Keep the Rspack/RSC client boundary repro in `pnpm run repro:rspack-rsc`.
5151
- Keep direct Rspack packages aligned with the Shakapacker Rspack 2 adapter: `@rspack/core` / `@rspack/cli` `2.0.4` and `@rspack/dev-server` `2.0.1`.
52-
- Keep `react-on-rails-rsc` on `19.2.1-rc.0` or newer when requiring Rspack RSC
52+
- Keep `react-on-rails-rsc` on `19.2.1-rc.1` or newer when requiring Rspack RSC
5353
client-reference manifests.
5454

5555
Impact:

docs/01-architecture.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Architecture
22

3-
This starter begins from `create-react-on-rails-app --rsc --rspack` and currently targets the React on Rails Pro `17.0.0-rc.7` RC stack with React on Rails RSC `19.2.1-rc.0` and Shakapacker `10.2.0`.
3+
This starter begins from `create-react-on-rails-app --rsc --rspack` and currently targets the React on Rails Pro `17.0.0-rc.9` RC stack with React on Rails RSC `19.2.1-rc.1` and Shakapacker `10.2.0`.
44

5-
Shakapacker remains on `10.2.0` because the React on Rails 17 RC7 upgrade did not require a coupled Shakapacker bump. Rspack is the checked-in local and deploy default. `react-on-rails-rsc@19.2.1-rc.0` provides the Rspack RSC manifest support this starter needs, while Webpack remains an opt-in bridge/comparison path.
5+
Shakapacker remains on `10.2.0` because the React on Rails 17 RC9 upgrade did not require a coupled Shakapacker bump. Rspack is the checked-in local and deploy default. `react-on-rails-rsc@19.2.1-rc.1` provides the Rspack RSC manifest support this starter needs, while Webpack remains an opt-in bridge/comparison path.
66

77
## Related React On Rails Docs
88

@@ -104,7 +104,7 @@ Vite, file-based routing, Hotwire, or Stimulus.
104104
Rspack is the active bundler in `config/shakapacker.yml`. Development disables client lazy compilation at the config top level and at `experiments.lazyCompilation`, uses live reload by default for this RC stack, and gates TanStack devtools behind `localStorage["tanstack-devtools"] = "1"` to avoid dev-server overlay requests from optional chunks. Explicit HMR mode enables React Fast Refresh through Shakapacker's Rspack wiring, while static and production-assets dev modes remain free of Rspack dev-server clients.
105105

106106
The public React Server Components path is green on the local Rspack default
107-
with `react-on-rails-rsc@19.2.1-rc.0`. The Rspack client, server, and
107+
with `react-on-rails-rsc@19.2.1-rc.1`. The Rspack client, server, and
108108
server-only RSC bundles compile and emit the React client/server manifests
109109
expected by the React on Rails RSC client-reference path. The Webpack bridge
110110
remains documented in [RSC Webpack Bundler Spike](09-rsc-webpack-bundler-spike.md)

docs/02-vs-inertia.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ renderer such as React on Rails Pro. That is an architectural inference, not a
149149
claim about Inertia's roadmap.
150150

151151
The Rspack status is also intentionally conservative. Rspack remains the local
152-
and deploy default, and `react-on-rails-rsc@19.2.1-rc.0` emits the RSC
152+
and deploy default, and `react-on-rails-rsc@19.2.1-rc.1` emits the RSC
153153
client-reference manifests required by React on Rails Pro. The status is tracked
154154
in [SPIKE.md](../SPIKE.md) and [Tested Modes](06-tested-modes.md). The Webpack
155155
bridge remains an opt-in comparison path.

docs/06-tested-modes.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Tested Modes
22

33
This starter keeps the TanStack dashboard on Rspack and the launch RC stack:
4-
React on Rails Pro `17.0.0-rc.7`, React on Rails RSC `19.2.1-rc.0`, and
4+
React on Rails Pro `17.0.0-rc.9`, React on Rails RSC `19.2.1-rc.1`, and
55
Shakapacker `10.2.0`.
6-
Shakapacker remains on `10.2.0` because the React on Rails 17 RC7 upgrade did
6+
Shakapacker remains on `10.2.0` because the React on Rails 17 RC9 upgrade did
77
not require a coupled Shakapacker bump.
88
Rspack is the default local and deploy bundler in the checked-in matrix.
99
Webpack has explicit opt-in bridge/comparison smokes below.
@@ -62,7 +62,7 @@ build, rendering, or routing behavior.
6262
| HMR dev | `bin/test hmr` or `SHAKAPACKER_DEV_SERVER_HMR=true bin/dev --no-open-browser --route=dashboard` | CI | Boots the same default dev stack with `hmr: true`, `live_reload: false`, and React Fast Refresh enabled by Shakapacker's Rspack integration, then verifies the authenticated TanStack routes hydrate, navigate, and observe a browser-open source edit. This smoke does not assert state-preserving React Fast Refresh updates. |
6363
| Webpack HMR bridge | `bin/test webpack-hmr` or `SHAKAPACKER_ASSETS_BUNDLER=webpack node script/dev-mode-smoke.mjs hmr` | Webpack bridge sentinel | Boots Rails, Webpack dev-server, SolidQueue, the Node renderer, and the server/RSC bundle watchers with HMR enabled, then verifies the authenticated TanStack routes hydrate, navigate, and observe a browser-open source edit. This keeps the optional Webpack path covered without changing the Rspack default. |
6464
| Webpack HMR RSC bridge | `bin/test webpack-hmr-rsc` or `SHAKAPACKER_ASSETS_BUNDLER=webpack REQUIRE_RSC_MANIFESTS=true node script/dev-mode-smoke.mjs hmr hello-server` | Webpack RSC/HMR sentinel | Boots the Webpack HMR stack against `/hello_server`, waits for both RSC client-reference manifests, and fails if the route falls back before rendering the RSC page. This verifies the optional Webpack dev-server writes the client manifest where React on Rails Pro can consume it while still excluding hot-update artifacts from disk. |
65-
| Rspack/RSC client boundary repro | `bin/test rsc-repro` or `pnpm run repro:rspack-rsc` | CI status, upstream repro | Builds Rspack bundles, verifies the generated `HelloServer` RSC example still contains a `'use client'` boundary, and confirms both RSC client-reference manifests are emitted with `react-on-rails-rsc@19.2.1-rc.0`. Use `REQUIRE_RSC_MANIFESTS=true` when this focused check must fail hard on a manifest regression. |
65+
| Rspack/RSC client boundary repro | `bin/test rsc-repro` or `pnpm run repro:rspack-rsc` | CI status, upstream repro | Builds Rspack bundles, verifies the generated `HelloServer` RSC example still contains a `'use client'` boundary, and confirms both RSC client-reference manifests are emitted with `react-on-rails-rsc@19.2.1-rc.1`. Use `REQUIRE_RSC_MANIFESTS=true` when this focused check must fail hard on a manifest regression. |
6666
| `/hello_server` RSC route smoke | `bin/test hello-server-rsc` or `pnpm run test:hello-server-rsc` | RSC route sentinel | Boots the static-assets dev stack against `/hello_server` and verifies the route renders the demo shell with the RSC manifests available. Use `REQUIRE_RSC_MANIFESTS=true` when intentionally requiring interactive RSC client-reference manifests. |
6767
| Production precompile | `bin/test production-precompile` or `RAILS_ENV=production SECRET_KEY_BASE_DUMMY=1 REACT_ON_RAILS_STARTER_TANSTACK_DATABASE_PASSWORD=dummy bin/rails assets:precompile` | Release-impacting checks | Confirms production Rspack client, server, and RSC bundles compile. The expected Pro license warning is non-fatal. |
6868
| Production boot smoke | `bin/test production-boot` or `node script/production-boot-smoke.mjs` | CI, release-impacting checks | Precompiles production assets with dummy secrets, prepares production-mode databases, starts `client/node-renderer.js` from compiled output, boots Rails in `RAILS_ENV=production`, checks `/up`, signs in as `demo@example.com / password`, and checks `/projects?status=active&sort=name&dir=asc` with `X-Forwarded-Proto: https`. |
@@ -116,5 +116,5 @@ build, rendering, or routing behavior.
116116
with `experiments.lazyCompilation = false` kept explicit for compatibility.
117117
Otherwise dynamic TanStack devtools imports can route through Rspack
118118
lazy-trigger URLs that return 404s in development.
119-
- Historical Rspack/RSC manifest tracking lives in [shakacode/react_on_rails#1828](https://github.com/shakacode/react_on_rails/issues/1828). The starter requires `react-on-rails-rsc@19.2.1-rc.0` or newer for the Rspack manifest path.
119+
- Historical Rspack/RSC manifest tracking lives in [shakacode/react_on_rails#1828](https://github.com/shakacode/react_on_rails/issues/1828). The starter requires `react-on-rails-rsc@19.2.1-rc.1` or newer for the Rspack manifest path.
120120
- The React on Rails Pro TanStack Router private-store compatibility issue is tracked in [shakacode/react_on_rails#3375](https://github.com/shakacode/react_on_rails/issues/3375).

docs/08-why-rsc-on-rails.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ inside one Rails app.
226226
## Limitations And Current State
227227

228228
This starter intentionally keeps Rspack as the local and deploy default.
229-
`react-on-rails-rsc@19.2.1-rc.0` provides the Rspack plugin path that emits the
229+
`react-on-rails-rsc@19.2.1-rc.1` provides the Rspack plugin path that emits the
230230
RSC client-reference manifests required by React on Rails Pro. That status is
231231
tracked in [SPIKE.md](../SPIKE.md), and the small reproduction remains available
232232
through `pnpm run repro:rspack-rsc`.

docs/09-rsc-webpack-bundler-spike.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ With `RSCRspackPlugin`, Rspack now has its own manifest-generation path.
149149

150150
| Dimension | Rspack (default) | Webpack (RSC-capable) |
151151
| -------------------- | ------------------------ | ----------------------------------- |
152-
| Interactive RSC | ✅ manifests emitted with `react-on-rails-rsc@19.2.1-rc.0` | ✅ manifests emitted, island renders |
152+
| Interactive RSC | ✅ manifests emitted with `react-on-rails-rsc@19.2.1-rc.1` | ✅ manifests emitted, island renders |
153153
| Clean prod build | ~2.8 s | ~8.3 s (≈3× slower) |
154154
| Client JS total | ~2.6 MB | ~2.6 MB (comparable) |
155155
| Dev server / HMR | `@rspack/plugin-react-refresh` | `@pmmmwh/react-refresh-webpack-plugin`; dashboard and `/hello_server` HMR smokes pass |

0 commit comments

Comments
 (0)