How shakacode/react_on_rails works
React on Rails embeds React in Rails applications: a Rails view invokes a helper to render a registered component, sends props through server rendering, and delivers HTML that the browser hydrates. The OSS runtime provides Rails-oriented SSR and client rendering; Pro adds Node rendering, streaming, React Server Components, caching, and TanStack Router SSR. Generators and Shakapacker integration support app setup and bundle workflows. The README documents these capabilities, but sampled source is limited, so links among unsampled subsystems are not asserted.
Main entry points: helper.rb View helper · createReactOnRailsPro.ts Pro runtime · ComponentRegistry.ts Component registry · react_on_rails_helper.rb Rails view
Components 24
Rails integration
- Rails view
react_on_rails/app/helpers/react_on_rails_helper.rb - View helper
react_on_rails/lib/react_on_rails/helper.rb - Rails controller
react_on_rails/lib/react_on_rails/controller.rb - SSR pool
react_on_rails/lib/react_on_rails/server_rendering_pool.rb
React runtime
- JS SSR
packages/react-on-rails/src/serverRenderReactComponent.ts - Component registry
packages/react-on-rails/src/ComponentRegistry.ts - Client hydration
packages/react-on-rails/src/reactHydrateOrRender.ts
Pro rendering
- Pro runtime
packages/react-on-rails-pro/src/createReactOnRailsPro.ts - Streaming SSR
packages/react-on-rails-pro/src/streamServerRenderedReactComponent.ts - RSC routes
packages/react-on-rails-pro/src/RSCRoute.tsx - RSC fetching
packages/react-on-rails-pro/src/getReactServerComponent.client.ts - Async props
packages/react-on-rails-pro/src/AsyncPropsManager.ts - Fragment cache
packages/react-on-rails-pro/src/cache/CacheHandler.ts - Redis cache
packages/react-on-rails-pro/src/cache/RedisCacheHandler.ts - TanStack SSR
packages/react-on-rails-pro/src/tanstack-router/serverRender.ts
Node renderer
- Node renderer
packages/react-on-rails-pro-node-renderer/src/ReactOnRailsProNodeRenderer.ts - Renderer worker
packages/react-on-rails-pro-node-renderer/src/worker.ts
Setup and bundling
- Shakapacker
react_on_rails/lib/react_on_rails/packer_utils.rb - Rails generators
react_on_rails/lib/generators/react_on_rails/install_generator.rb - App creator
packages/create-react-on-rails-app/src/create-app.ts
Other components
- App developer
- Browser
- Redis
- Rails application
Connections 21
- Rails view → View helper: invokes
- View helper → Component registry: resolves component
- View helper → SSR pool: requests SSR
- SSR pool → JS SSR: executes render
- JS SSR → Component registry: renders registered
- View helper → Rails view: returns markup
- Browser → Client hydration: loads page
- Client hydration → Component registry: resolves component
- Rails controller → View helper: renders view
- Rails application → Node renderer: uses Node SSR
- Node renderer → Renderer worker: dispatches render
- Pro runtime → Streaming SSR: provides streaming
- Pro runtime → RSC routes: provides RSC
- RSC routes → Async props: coordinates props
- Browser → RSC fetching: requests component
- Pro runtime → Fragment cache: uses cache
- Fragment cache → Redis cache: delegates storage
- Pro runtime → TanStack SSR: enables SSR
- App developer → Rails generators: installs integration
- Rails generators → Shakapacker: configures bundling
- App developer → App creator: creates app