Skip to main content

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:

  1. Remove config.immediate_hydration from config/initializers/react_on_rails.rb
  2. Remove any immediate_hydration: keyword arguments from react_component, react_component_hash, stream_react_component, and redux_store calls

New Features

  • [Pro] Auto-resolve renderer password from ENV: setup_renderer_password now falls back to ENV["RENDERER_PASSWORD"] when neither config.renderer_password nor 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: Running npx create-react-on-rails-app without --pro or --rsc now 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_timeout configuration 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:pro now automates Pro and RSC Pro upgrades: Added first-class --rsc-pro install mode, automatic react_on_railsreact_on_rails_pro Gemfile and package swaps, and frontend import rewrites. PR 2822 by justin808.

Improvements

  • Doctor enforces strict version constraints: react_on_rails:doctor now escalates non-exact gem and npm version specs (^, ~, >=) from warnings to errors, matching the runtime VersionChecker behavior. PR 3070 by justin808.
  • sync_versions handles range specs: Version ranges like ^16.5.0, ~16.5.0, and >=16.5.0 are now parsed and rewritten to the exact expected version instead of being skipped. When FIX=true is set, doctor auto-runs sync_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/dev opens 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/dev now exits quietly on Ctrl-C (PR 2652)
  • bin/dev browser auto-open now waits for route readiness (PR 2885)

See the CHANGELOG for the full list of changes.