You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
this is a measured comparison on one reduced dashboard surface
Rspack is a build/dev-loop story, not a page-runtime story by itself
RSC is the runtime experiment
Matched routes
Inertia control: /dashboard/inertia_demo
React on Rails Pro + RSC: /dashboard/rsc_demo
Both routes use the same reduced creator-home presenter surface and the same outer layout.
Current headline benchmark
The current headline benchmark is the corrected clean-port alternating result from PR #10.
Why this replaced the earlier grouped or mixed-port numbers:
route order affects cache state, so the alternating runner rotates order by cycle
an earlier run had a local asset-proxy mismatch because another repo had reclaimed port 3035
the follow-up run restarted both Rails and the Shakapacker dev server with SHAKAPACKER_DEV_SERVER_PORT=3036
Chrome and ChromeDriver matched during this pass
Latest reduced-dashboard result:
Metric
Inertia demo
RSC demo
Delta
Navigation duration
457.16ms
402.29ms
-12.0%
LCP
501.00ms
421.00ms
-16.0%
Response end
320.70ms
335.96ms
+4.8%
Controller action_total
163.10ms
169.74ms
+4.1%
Presenter compare_props
144.80ms
145.49ms
+0.5%
Page-specific JS requests
6
1
-83.3%
What this means
Positive signal:
the bounded RSC route wins on total navigation duration
the bounded RSC route wins on LCP
the bounded RSC route materially reduces page-specific JavaScript requests
the latest server-side penalty is smaller than the earlier mixed-port runs suggested
Remaining caveat:
Inertia is still ahead on responseEnd and route-level server timing
the benchmark is still local-development, not production-like
renderer-internal profiling is still needed before making a stronger production-performance claim
Product and positioning implications
Use Rspack to talk about build speed and developer loop improvements.
Use RSC to talk about route-level runtime tradeoffs and client-JS reduction.
Do not blur those two claims; it weakens both.
The strongest near-term message is not “replace Inertia.”
The stronger message is: some product surfaces cross the line into full React application territory, and that is where React on Rails Pro can justify itself.
Adjacent product idea worth discussing
A friendlier bridge for existing Inertia Rails apps may be viable:
keep inertia_rails in place
offer SSR and React 19 support first
wrap the Node renderer, boot/fallback behavior, CSP, and observability cleanly
only explore deeper RSC-style integration if the protocol fit stays honest
keep the implementation clean-room if any public Inertia adapter is derived from ideas in React on Rails Pro
Current validation status as of April 30, 2026 UTC
Context
This is the benchmark-discipline and positioning thread for the Gumroad-style React on Rails Pro + RSC experiment.
Canonical public repo:
Related hub issue:
Active public PRs:
Scope discipline:
Matched routes
/dashboard/inertia_demo/dashboard/rsc_demoBoth routes use the same reduced creator-home presenter surface and the same outer layout.
Current headline benchmark
The current headline benchmark is the corrected clean-port alternating result from PR #10.
Why this replaced the earlier grouped or mixed-port numbers:
3035SHAKAPACKER_DEV_SERVER_PORT=3036Latest reduced-dashboard result:
457.16ms402.29ms-12.0%501.00ms421.00ms-16.0%320.70ms335.96ms+4.8%action_total163.10ms169.74ms+4.1%compare_props144.80ms145.49ms+0.5%61-83.3%What this means
Positive signal:
Remaining caveat:
responseEndand route-level server timingProduct and positioning implications
Adjacent product idea worth discussing
A friendlier bridge for existing Inertia Rails apps may be viable:
inertia_railsin placeCurrent validation status as of April 30, 2026 UTC
Latest local validation rerun:
npm run setupRAILS_ENV=development NODE_ENV=development bin/shakapacker --mode developmentRAILS_ENV=test npm run build:rsc-demonpm run setupRAILS_ENV=development NODE_ENV=development bin/shakapacker --mode developmentRAILS_ENV=test npm run build:rsc-demoDocs/catalog status:
Useful docs
Next work