Module: ReactOnRails::Generators::RscSetup
- Includes:
- DemoPageConfig
- Included in:
- InstallGenerator, RscGenerator
- Defined in:
- lib/generators/react_on_rails/rsc_setup.rb
Overview
Provides RSC (React Server Components) setup functionality for React on Rails generators.
This module extracts RSC-specific setup methods that can be shared between:
-
InstallGenerator (when –rsc flag is used)
-
RscGenerator (standalone generator for upgrading existing Pro apps)
Required Dependencies
Including classes must provide (typically via Rails::Generators::Base):
-
destination_root: Path to the target Rails application
-
template, copy_file, append_to_file, empty_directory, route: Thor file manipulation methods
-
options: Generator options hash (for options.typescript?)
Including classes must also include GeneratorHelper which provides:
-
use_rsc?: Feature flag helper
-
component_extension: Returns ‘jsx’ or ‘tsx’ based on TypeScript option
-
detect_react_version: Detects installed React version
Constant Summary collapse
- DEFAULT_LAYOUT_NAME =
"react_on_rails_default"- LEGACY_LAYOUT_NAME =
"hello_world"- RSC_FALLBACK_LAYOUT_NAME =
"react_on_rails_rsc"- RSC_GENERATED_LAYOUT_NAME_PATTERN =
/\Areact_on_rails_rsc(?:_(?:[2-9]|[1-9]\d+))?\z/- MAX_LAYOUT_NAME_ATTEMPTS =
99
Instance Method Summary collapse
-
#setup_rsc ⇒ Object
Main entry point for RSC setup.
-
#warn_about_react_version_for_rsc(force: false) ⇒ Object
Warn if React version is not compatible with RSC.
Methods included from DemoPageConfig
#build_hello_server_view_config, #build_hello_world_view_config
Instance Method Details
#setup_rsc ⇒ Object
NPM dependencies are handled separately by JsDependencyManager
Main entry point for RSC setup. Orchestrates creation of all RSC-related files and configuration.
Creates:
-
config/webpack/rscWebpackConfig.js (config/rspack/ when using rspack)
-
Procfile.dev entry for RSC bundle watcher
-
HelloServer component (jsx or tsx based on –typescript flag)
-
HelloServerController
-
HelloServer view
-
RSC routes
46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/generators/react_on_rails/rsc_setup.rb', line 46 def setup_rsc add_rsc_config_to_pro_initializer create_rsc_webpack_config update_webpack_configs_for_rsc add_rsc_to_procfile create_hello_server_component create_hello_server_controller create_hello_server_view add_rsc_routes end |
#warn_about_react_version_for_rsc(force: false) ⇒ Object
Warn if React version is not compatible with RSC. RSC requires React 19.0.x specifically (not 19.1.x or later).
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/generators/react_on_rails/rsc_setup.rb', line 67 def warn_about_react_version_for_rsc(force: false) return unless force || use_rsc? react_version = detect_react_version return if react_version.nil? # React not installed yet, will be installed by generator major, minor, patch = react_version.split(".").map(&:to_i) if major != 19 || minor != 0 GeneratorMessages.add_warning(<<~MSG.strip) ⚠️ RSC requires React 19.0.x (detected: #{react_version}) React Server Components in React on Rails Pro currently only supports React 19.0.x. React 19.1.x and later are not yet supported. To install a compatible React version: npm install react@~19.0.4 react-dom@~19.0.4 MSG elsif patch < 4 GeneratorMessages.add_warning(<<~MSG.strip) ⚠️ React #{react_version} is below the recommended minimum for RSC. Please upgrade to at least React 19.0.4: npm install react@19.0.4 react-dom@19.0.4 react-server-dom-webpack 19.0.0–19.0.3 has known vulnerabilities (CVE-2025-55182, CVE-2025-67779, CVE-2026-23864) fixed in 19.0.4+. MSG end end |