React on Rails 16.6.0 Release Notes
Upgrading from 16.5.x to 16.6.0
Update your gem and npm package versions:
# Gemfile
gem "react_on_rails", "16.6.0"
// package.json
{
"dependencies": {
"react-on-rails": "16.6.0"
}
}
Pro users: Use react-on-rails-pro instead of react-on-rails in package.json, and react_on_rails_pro instead of react_on_rails in your Gemfile. See the Pro upgrade guide for details.
Then run bundle install and your package manager's install command.
Highlights
Breaking: Removed immediate_hydration
The immediate_hydration config option, helper parameter, data-immediate-hydration HTML attribute, and redux_store immediate_hydration: keyword argument have been completely removed. Immediate hydration is now always enabled for React on Rails Pro users and disabled for non-Pro users, with no per-component override. Remove any immediate_hydration references from your initializer and helper calls. Passing immediate_hydration: to react_component / react_component_hash is now ignored, and passing it to stream_react_component logs a warning. PR 2834 by justin808.
Migration steps:
- Remove
config.immediate_hydrationfromconfig/initializers/react_on_rails.rb - Remove any
immediate_hydration:keyword arguments fromreact_component,react_component_hash,stream_react_component, andredux_storecalls
New Features
- [Pro] Auto-resolve renderer password from ENV:
setup_renderer_passwordnow falls back toENV["RENDERER_PASSWORD"]when neitherconfig.renderer_passwordnor a URL-embedded password is set, aligning Rails-side behavior with the Node Renderer defaults. PR 2921 by justin808. - Interactive mode prompt for
create-react-on-rails-app: Runningnpx create-react-on-rails-appwithout--proor--rscnow shows an interactive prompt to choose between Standard, Pro, and RSC modes (default: RSC recommended). Explicit flags skip the prompt. PR 3063 by justin808. - [Pro] Configurable HTTP keep-alive timeout for node renderer connections: Added
renderer_http_keep_alive_timeoutconfiguration option (default: 30s) to control how long idle persistent HTTP/2 connections to the node renderer are kept alive, preventing SSR failures from stale connections. PR 3069 by justin808. - [Pro]
react_on_rails:pronow automates Pro and RSC Pro upgrades: Added first-class--rsc-proinstall mode, automaticreact_on_rails→react_on_rails_proGemfile and package swaps, and frontend import rewrites. PR 2822 by justin808.
Improvements
- Doctor enforces strict version constraints:
react_on_rails:doctornow escalates non-exact gem and npm version specs (^,~,>=) from warnings to errors, matching the runtime VersionChecker behavior. PR 3070 by justin808. sync_versionshandles range specs: Version ranges like^16.5.0,~16.5.0, and>=16.5.0are now parsed and rewritten to the exact expected version instead of being skipped. WhenFIX=trueis set, doctor auto-runssync_versions. PR 3070 by justin808.- Fresh app onboarding for
create-react-on-rails-app: New apps now land on a generated root page with links to local demos, docs, OSS vs Pro guidance, and the marketplace RSC demo.bin/devopens that page on first boot. PR 2849 by justin808.
Bug Fixes
- Pinned third-party npm dependency versions in generator to prevent peer dependency conflicts (PR 3083)
- [Pro] Fixed TanStack Router SSR hydration mismatches in the async path (PR 2932)
- [Pro] Fixed infinite fork loop when node renderer worker fails to bind port (PR 2881)
- [Pro] Fixed Pro generator multiline and template-literal rewrites (PR 2918)
- [Pro] Fixed SSR failures from stale persistent HTTP/2 connections (PR 3069)
bin/devnow exits quietly on Ctrl-C (PR 2652)bin/devbrowser auto-open now waits for route readiness (PR 2885)
See the CHANGELOG for the full list of changes.