Context
While upgrading a large production Rails app (React 18, Shakapacker 9.5, react_on_rails_pro with Node Renderer) from react_on_rails 16.1.2 → 16.4.0, we found several documentation gaps that made the upgrade harder than necessary. Filing them together since they all relate to the same upgrade path.
1. No upgrade guide covering 16.1.x → 16.4.0
The upgrade docs only cover up to 16.2.x. There's no guidance for 16.3.0 or 16.4.0 changes. Users upgrading from any 16.1.x version have to piece together what's needed from the CHANGELOG alone.
Suggestion: Add upgrade sections for 16.3.0 and 16.4.0 to the upgrade guide, even if the changes are minor.
2. Pro gem version jump from 3.x → 16.x is undocumented
react_on_rails_pro jumped from version 3.3.x to 16.x.x (aligning with the core gem version numbering). There's no migration guide or even a mention that this renumbering happened. Users on 3.3.x have no obvious path to 16.4.0 — it looks like a completely different gem.
Suggestion: Add a note in the upgrade guide and CHANGELOG explaining the version alignment, e.g., "react_on_rails_pro 16.x is the successor to 3.x, version numbers were aligned with the core gem."
3. Node renderer npm package rename not in migration steps
The node renderer package was renamed from @shakacode-tools/react-on-rails-pro-node-renderer to react-on-rails-pro-node-renderer (now on public npm). This is a critical migration step for Pro users with SSR, but it's not called out in any upgrade guide or migration checklist. Users only discover it by noticing the old package doesn't have a matching version.
Suggestion: Add explicit migration step: "Replace @shakacode-tools/react-on-rails-pro-node-renderer with react-on-rails-pro-node-renderer in your package.json."
4. Pro gem source change (private GitHub Packages → rubygems.org) not documented
react_on_rails_pro was previously distributed via a private GitHub Packages source (rubygems.pkg.github.com/shakacode-tools). It's now available on rubygems.org. Users still pointing to the private source won't find version 16.4.0 there, and there's no note about removing the private source block from their Gemfile.
Suggestion: Add migration step: "Remove the private shakacode-tools source block from your Gemfile. react_on_rails_pro is now available on rubygems.org."
5. JWT >= 2.7 requirement not called out as potential conflict
react_on_rails_pro 16.4.0 depends on jwt >= 2.7. Many Rails apps pin jwt to older versions (e.g., 2.2.x) for compatibility with other gems (OAuth, etc.). This version requirement isn't mentioned in the upgrade guide and causes a Bundler::VersionConflict that users have to debug themselves.
Suggestion: Add to upgrade prerequisites: "react_on_rails_pro 16.4.0 requires jwt >= 2.7. If your Gemfile pins jwt to an older version, you'll need to upgrade it."
6. Default config value changes not prominently documented
Several Pro configuration defaults changed between 3.3.x and 16.4.0:
ssr_timeout: 20s → 5s
renderer_request_retry_limit: default is now 5 (was lower)
renderer_use_fallback_exec_js: default is now true
Users who relied on previous defaults without explicitly setting values will get different behavior after upgrading. These changes aren't called out in any "what changed" section.
Suggestion: Add a "Changed Defaults" table to the upgrade guide listing old vs. new default values for Pro configuration.
7. bundlePath → serverBundleCachePath rename only in deprecation notes
The node renderer config rename from bundlePath to serverBundleCachePath is mentioned in the CHANGELOG deprecation section but not in the step-by-step migration. Users scanning the upgrade guide for "what do I need to change in my node renderer config" won't find it.
Suggestion: Add to migration steps: "In your node renderer config file, rename bundlePath to serverBundleCachePath."
8. Relationship between react-on-rails-pro and react-on-rails-pro-node-renderer npm packages unclear
16.4.0 introduces two separate npm packages:
react-on-rails-pro — client-side Pro features (immediate hydration, RSC, etc.)
react-on-rails-pro-node-renderer — server-side Node.js renderer
The docs don't clearly explain when you need one vs. both. For example, if you only use the Node Renderer for SSR and don't use RSC or immediate hydration, do you need react-on-rails-pro? The answer isn't obvious.
Suggestion: Add a section explaining the two packages, their purposes, and when each is needed.
9. Pro gem README has stale version example
The react_on_rails_pro gem README (inside the 16.4.0 gem itself) shows:
gem 'react_on_rails_pro', '~> 4.0'
This version doesn't exist — the gem jumped from 3.x to 16.x. The example should show '~> 16.0' or '16.4.0'.
Location: react_on_rails_pro-16.4.0/README.md, Getting Started section.
Environment
- Rails 8.0.4, Ruby 3.2
- react_on_rails 16.1.2 → 16.4.0
- react_on_rails_pro 3.3.1 → 16.4.0
- Shakapacker 9.5.0
- Node.js 22.13.0
- Using Rspack (primary) + Webpack (legacy fallback)
- Pro Node Renderer for SSR
Context
While upgrading a large production Rails app (React 18, Shakapacker 9.5, react_on_rails_pro with Node Renderer) from react_on_rails 16.1.2 → 16.4.0, we found several documentation gaps that made the upgrade harder than necessary. Filing them together since they all relate to the same upgrade path.
1. No upgrade guide covering 16.1.x → 16.4.0
The upgrade docs only cover up to 16.2.x. There's no guidance for 16.3.0 or 16.4.0 changes. Users upgrading from any 16.1.x version have to piece together what's needed from the CHANGELOG alone.
Suggestion: Add upgrade sections for 16.3.0 and 16.4.0 to the upgrade guide, even if the changes are minor.
2. Pro gem version jump from 3.x → 16.x is undocumented
react_on_rails_projumped from version 3.3.x to 16.x.x (aligning with the core gem version numbering). There's no migration guide or even a mention that this renumbering happened. Users on 3.3.x have no obvious path to 16.4.0 — it looks like a completely different gem.Suggestion: Add a note in the upgrade guide and CHANGELOG explaining the version alignment, e.g., "react_on_rails_pro 16.x is the successor to 3.x, version numbers were aligned with the core gem."
3. Node renderer npm package rename not in migration steps
The node renderer package was renamed from
@shakacode-tools/react-on-rails-pro-node-renderertoreact-on-rails-pro-node-renderer(now on public npm). This is a critical migration step for Pro users with SSR, but it's not called out in any upgrade guide or migration checklist. Users only discover it by noticing the old package doesn't have a matching version.Suggestion: Add explicit migration step: "Replace
@shakacode-tools/react-on-rails-pro-node-rendererwithreact-on-rails-pro-node-rendererin your package.json."4. Pro gem source change (private GitHub Packages → rubygems.org) not documented
react_on_rails_prowas previously distributed via a private GitHub Packages source (rubygems.pkg.github.com/shakacode-tools). It's now available on rubygems.org. Users still pointing to the private source won't find version 16.4.0 there, and there's no note about removing the private source block from their Gemfile.Suggestion: Add migration step: "Remove the private
shakacode-toolssource block from your Gemfile.react_on_rails_prois now available on rubygems.org."5. JWT
>= 2.7requirement not called out as potential conflictreact_on_rails_pro16.4.0 depends onjwt >= 2.7. Many Rails apps pinjwtto older versions (e.g., 2.2.x) for compatibility with other gems (OAuth, etc.). This version requirement isn't mentioned in the upgrade guide and causes aBundler::VersionConflictthat users have to debug themselves.Suggestion: Add to upgrade prerequisites: "react_on_rails_pro 16.4.0 requires
jwt >= 2.7. If your Gemfile pins jwt to an older version, you'll need to upgrade it."6. Default config value changes not prominently documented
Several Pro configuration defaults changed between 3.3.x and 16.4.0:
ssr_timeout: 20s → 5srenderer_request_retry_limit: default is now 5 (was lower)renderer_use_fallback_exec_js: default is nowtrueUsers who relied on previous defaults without explicitly setting values will get different behavior after upgrading. These changes aren't called out in any "what changed" section.
Suggestion: Add a "Changed Defaults" table to the upgrade guide listing old vs. new default values for Pro configuration.
7.
bundlePath→serverBundleCachePathrename only in deprecation notesThe node renderer config rename from
bundlePathtoserverBundleCachePathis mentioned in the CHANGELOG deprecation section but not in the step-by-step migration. Users scanning the upgrade guide for "what do I need to change in my node renderer config" won't find it.Suggestion: Add to migration steps: "In your node renderer config file, rename
bundlePathtoserverBundleCachePath."8. Relationship between
react-on-rails-proandreact-on-rails-pro-node-renderernpm packages unclear16.4.0 introduces two separate npm packages:
react-on-rails-pro— client-side Pro features (immediate hydration, RSC, etc.)react-on-rails-pro-node-renderer— server-side Node.js rendererThe docs don't clearly explain when you need one vs. both. For example, if you only use the Node Renderer for SSR and don't use RSC or immediate hydration, do you need
react-on-rails-pro? The answer isn't obvious.Suggestion: Add a section explaining the two packages, their purposes, and when each is needed.
9. Pro gem README has stale version example
The
react_on_rails_progem README (inside the 16.4.0 gem itself) shows:This version doesn't exist — the gem jumped from 3.x to 16.x. The example should show
'~> 16.0'or'16.4.0'.Location:
react_on_rails_pro-16.4.0/README.md, Getting Started section.Environment