diff --git a/AGENTS_USER_GUIDE.md b/AGENTS_USER_GUIDE.md index 4eab878f38..0906a8c2be 100644 --- a/AGENTS_USER_GUIDE.md +++ b/AGENTS_USER_GUIDE.md @@ -32,8 +32,8 @@ gem search react_on_rails --remote # Verify prerequisites -ruby -v # Should be 3.2+ -node -v # Should be 20+ +ruby -v # Should be 3.0+ +node -v # Should be 18+ rails -v # Should be 7+ (5.2+ supported) ``` diff --git a/README.md b/README.md index 4e1e334997..73d9309fd7 100644 --- a/README.md +++ b/README.md @@ -200,8 +200,8 @@ _Requires creating a free account._ - Ruby on Rails >= 5 - Shakapacker >= 6.0 (CI tested: 8.2.0 - 9.5.0; autobundling requires >= 7.0) -- Ruby >= 3.2 (CI tested: 3.2 - 3.4) -- Node.js >= 20 (CI tested: 20 - 22) +- Ruby >= 3.0 (package minimum; CI tested: 3.2 - 3.4) +- Node.js >= 18 (package minimum; CI tested: 20 - 22) - A JavaScript package manager (npm, yarn, pnpm, or bun) # 🆘 Get Help & Support diff --git a/docs/README.md b/docs/README.md index 3c47429ddb..2f1b67aa10 100644 --- a/docs/README.md +++ b/docs/README.md @@ -33,7 +33,7 @@ React on Rails is one product with two tiers: open source for Rails + React inte - [API Reference](./oss/api-reference/view-helpers-api.md) - [Deployment and troubleshooting](./oss/deployment/README.md) - [Configuration](./oss/configuration/README.md) -- [Changelog](./oss/upgrading/changelog.md) +- [Changelog](https://github.com/shakacode/react_on_rails/blob/main/CHANGELOG.md) ## Pro features diff --git a/docs/oss/api-reference/generator-details.md b/docs/oss/api-reference/generator-details.md index d5129d178a..41b0a4c974 100644 --- a/docs/oss/api-reference/generator-details.md +++ b/docs/oss/api-reference/generator-details.md @@ -58,7 +58,7 @@ can pass the redux option if you'd like to have redux setup for you automaticall Passing the --rsc generator option sets up React Server Components support. This automatically includes Pro setup (--rsc implies --pro). Creates RSC webpack configuration, a HelloServer example component, and RSC routes. - Requires React 19.0.x. + Requires React 19 with a compatible `react-on-rails-rsc` version. ******************************************************************************* @@ -261,7 +261,7 @@ rails generate react_on_rails:install --rsc **Prerequisites:** - React on Rails Pro gem installed (see Pro prerequisites above) -- React 19.0.x (RSC is not yet supported on React 19.1.x or later) +- React 19 with a compatible `react-on-rails-rsc` version RSC builds on React on Rails Pro's Node rendering infrastructure. The generator adds a separate webpack entry point for server components, configures the `RSCWebpackPlugin` in both client and server webpack configs, and sets up the `RSC_BUNDLE_ONLY` environment variable handling in `ServerClientOrBoth.js` for independent RSC bundle compilation. diff --git a/docs/oss/building-features/node-renderer/basics.md b/docs/oss/building-features/node-renderer/basics.md index 48511c184f..f2f8a8b12c 100644 --- a/docs/oss/building-features/node-renderer/basics.md +++ b/docs/oss/building-features/node-renderer/basics.md @@ -55,11 +55,14 @@ For the most control over the setup, create a JavaScript file to start the NodeR mkdir renderer-app cd renderer-app ``` -2. Make sure you have **Node.js** version **14** or higher and **Yarn** installed. -3. Init node application and install the `react-on-rails-pro-node-renderer` package. +2. Make sure you have **Node.js 18+** and a JavaScript package manager such as **npm**, **pnpm**, **Yarn**, or **bun**. +3. Initialize a Node application and install the `react-on-rails-pro-node-renderer` package. ```sh - yarn init - yarn add react-on-rails-pro-node-renderer + npm init -y + npm install react-on-rails-pro-node-renderer + # or: pnpm add react-on-rails-pro-node-renderer + # or: yarn add react-on-rails-pro-node-renderer + # or: bun add react-on-rails-pro-node-renderer ``` 4. Configure a JavaScript file that will launch the rendering server per the docs in [Node Renderer JavaScript Configuration](./js-configuration.md). For example, create a file `node-renderer.js`. Here is a simple example that uses all the defaults except for serverBundleCachePath: @@ -82,7 +85,7 @@ For the most control over the setup, create a JavaScript file to start the NodeR Create `config/initializers/react_on_rails_pro.rb` and configure the **renderer server**. See configuration values in [Configuration](../../configuration/configuration-pro.md). Pay attention to: 1. Set `config.server_renderer = "NodeRenderer"` -2. Leave the default of `config.prerender_caching = true` and ensure your Rails cache is properly configured to handle the additional cache load. +2. Decide whether to enable `config.prerender_caching = true`. The default is `false`; turn it on only if you want Rails cache-backed SSR result caching and your cache is configured for the additional load. 3. Configure values beginning with `renderer_` 4. Use ENV values for values like `renderer_url` so that your deployed server is properly configured. If the ENV value is unset, the default for the renderer_url is `localhost:3800`. 5. Here's a tiny example using mostly defaults: diff --git a/docs/oss/building-features/node-renderer/debugging.md b/docs/oss/building-features/node-renderer/debugging.md index 676a5854b9..843d95b200 100644 --- a/docs/oss/building-features/node-renderer/debugging.md +++ b/docs/oss/building-features/node-renderer/debugging.md @@ -5,23 +5,52 @@ Because the renderer communicates over a port to the server, you can start a renderer instance locally in your application and debug it. -## Yalc vs Yarn Link +## Monorepo Workflow -The project is setup to use [yalc](https://github.com/whitecolor/yalc). This means that at the top level -directory, `yalc publish` will send the node package files to the global yalc store. Running `yarn` in the -`/spec/dummy/client` directory will copy the files from the global yalc store over to the local `node_modules` -directory. +For renderer debugging inside this repo, use the Pro dummy app at `react_on_rails_pro/spec/dummy`. +It is a `pnpm` workspace app and already points at the local packages in this monorepo. ## Debugging the Node Renderer -1. cd to the top level of the project. -1. `yarn` to install any libraries. -1. To compile renderer files on changes, open console and run `yarn build:dev`. -1. Open another console tab and run `RENDERER_LOG_LEVEL=debug yarn start` -1. Reload the browser page that causes the renderer issue. You can then update the JS code, and restart the `yarn start` to run the renderer with the new code. -1. Be sure to restart the rails server if you change any ruby code in loaded gems. -1. Note, the default setup for spec/dummy to reference the pro renderer is to use yalc, which may or may not be using a link, which means that you have to re-run yarn to get the files updated when changing the renderer. -1. Check out the top level nps task `nps renderer.debug` and `spec/dummy/package.json` which has script `"node-renderer-debug"`. +### Quick start: debugging with the full stack running + +If you already have the dummy app running via `bin/dev` (which uses `Procfile.dev`), the node renderer is already listening on port 3800 with `--inspect` enabled. To debug: + +1. Open `chrome://inspect` in Chrome and connect to the renderer process. +2. Use overmind to isolate renderer logs: `overmind connect node-renderer` (Ctrl-B to detach). +3. After a code change, restart just the renderer: `overmind restart node-renderer`. + +### Isolated debugging: manual per-terminal startup + +Use this when you need full control over the renderer process — different flags, a specific bundle, or rebuilding just the renderer package. + +1. From the repo root, install dependencies and build the local packages: + ```bash + pnpm install + pnpm run build + ``` +1. In one terminal, start the Pro dummy bundle watcher: + ```bash + cd react_on_rails_pro/spec/dummy + pnpm run build:dev:watch + ``` +1. In another terminal, start the renderer with verbose logging: + ```bash + cd react_on_rails_pro/spec/dummy + RENDERER_LOG_LEVEL=debug pnpm run node-renderer + ``` +1. If you want to attach a debugger instead, run: + ```bash + cd react_on_rails_pro/spec/dummy + pnpm run node-renderer-debug + ``` +1. Reload the page that triggers the SSR issue and reproduce the problem. +1. If you change Ruby code in loaded gems, restart the Rails server. +1. If you change code under `packages/react-on-rails-pro-node-renderer`, rebuild that package before restarting the renderer: + ```bash + pnpm --filter react-on-rails-pro-node-renderer run build + ``` +1. If you are debugging an external app instead of the monorepo dummy app, refresh the installed renderer package using your local package workflow (for example `yalc`, `npm pack`, or a workspace link) before rerunning the renderer. ## Debugging Memory Leaks @@ -29,7 +58,9 @@ If worker memory grows over time, use heap snapshots to find the source: 1. Start the renderer with `--expose-gc` to enable forced GC before snapshots: ```bash - node --expose-gc node-renderer.js + cd react_on_rails_pro/spec/dummy + # Adjust the port if your Rails app points at a different renderer URL. + RENDERER_PORT=3800 node --expose-gc client/node-renderer.js ``` 2. Take heap snapshots at different times using `v8.writeHeapSnapshot()` (triggered via `SIGUSR2` signal or a custom endpoint). 3. Load both snapshots in Chrome DevTools (Memory tab → Load) and use the **Comparison** view to see which objects accumulated between snapshots. diff --git a/docs/oss/deployment/troubleshooting.md b/docs/oss/deployment/troubleshooting.md index d4b7cd6841..651b9fa4d5 100644 --- a/docs/oss/deployment/troubleshooting.md +++ b/docs/oss/deployment/troubleshooting.md @@ -32,15 +32,15 @@ bin/rails generate react_on_rails:install **Why:** The generator needs clean git state to show you exactly what it changed. -### "Node/Yarn not found" +### "Node or package manager not found" -**Error:** `Yarn executable was not detected` or `Node.js not found` +**Error:** `Node.js not found`, `npm executable was not detected`, or `Yarn executable was not detected` **Solution:** -- Install Node.js 20+ from [nodejs.org](https://nodejs.org) -- Install Yarn: `npm install -g yarn` -- Or use system package manager: `brew install node yarn` +- Install Node.js 18+ from [nodejs.org](https://nodejs.org) +- Use the bundled `npm`, or install another package manager such as `pnpm`, `yarn`, or `bun` +- On macOS, for example: `brew install node pnpm` ## 🔧 Build Issues @@ -51,8 +51,10 @@ bin/rails generate react_on_rails:install **Solution:** ```bash -# Make sure the NPM package is installed -yarn add react-on-rails +# Make sure the npm package is installed +pnpm add react-on-rails +# or: npm install react-on-rails --save +# or: yarn add react-on-rails # If using local development with yalc cd react_on_rails/ diff --git a/docs/oss/getting-started/installation-into-an-existing-rails-app.md b/docs/oss/getting-started/installation-into-an-existing-rails-app.md index 8d51e9d724..fae7f94f65 100644 --- a/docs/oss/getting-started/installation-into-an-existing-rails-app.md +++ b/docs/oss/getting-started/installation-into-an-existing-rails-app.md @@ -23,13 +23,14 @@ React on Rails installs the matching `react-on-rails` JavaScript package during If you manage versions manually, keep the Ruby gem and npm package on the same release. Pre-release gems use dots while npm uses hyphens. ```ruby -gem "react_on_rails", "16.4.0.rc.10" +gem "react_on_rails", "16.4.0" ``` ```bash -npm install react-on-rails@16.4.0-rc.10 --save-exact -# or: yarn add react-on-rails@16.4.0-rc.10 --exact -# or: pnpm add react-on-rails@16.4.0-rc.10 --save-exact +npm install react-on-rails@16.4.0 --save-exact +# or: yarn add react-on-rails@16.4.0 --exact +# or: pnpm add react-on-rails@16.4.0 --save-exact +# or: bun add react-on-rails@16.4.0 --exact ``` ## 2. Run the generator diff --git a/docs/oss/getting-started/quick-start.md b/docs/oss/getting-started/quick-start.md index 2a028779e4..791a309f12 100644 --- a/docs/oss/getting-started/quick-start.md +++ b/docs/oss/getting-started/quick-start.md @@ -12,7 +12,7 @@ Before starting, make sure you have: - **🚨 Shakapacker 6+** (7+ recommended for React on Rails 16) - **Rails 7+** application (Rails 5.2+ supported) - **Ruby 3.0+** (required) -- **Node.js 20+** and a package manager (**npm**, **Yarn**, or **pnpm**) +- **Node.js 18+** and a package manager (**npm**, **pnpm**, **Yarn**, or **bun**) - **Foreman or Overmind** (for running `bin/dev`) - **Basic familiarity** with React and Rails diff --git a/docs/oss/getting-started/tutorial.md b/docs/oss/getting-started/tutorial.md index 980de95550..a2b4d0de7b 100644 --- a/docs/oss/getting-started/tutorial.md +++ b/docs/oss/getting-started/tutorial.md @@ -95,7 +95,7 @@ bundle exec rails shakapacker:install Commit all the changes so far to avoid getting errors in the next step. ```bash -git commit -am "Initial commit" +git add . && git commit -m "Initial commit" ``` Alternatively, you can use `--ignore-warnings` in the next step. diff --git a/docs/oss/introduction.md b/docs/oss/introduction.md index 2d3f2ed54d..5ceeae5a27 100644 --- a/docs/oss/introduction.md +++ b/docs/oss/introduction.md @@ -109,7 +109,7 @@ Read the full **[React on Rails Doctrine](./misc/doctrine.md)** for our design p - **Rails 7+** (Rails 5.2+ supported) - **Ruby 3.0+** -- **Node.js 20+** +- **Node.js 18+** - **Shakapacker 6+** (7+ recommended for React on Rails v16) ## Need Help? diff --git a/docs/pro/home-pro.md b/docs/pro/home-pro.md index 2999039048..f553150931 100644 --- a/docs/pro/home-pro.md +++ b/docs/pro/home-pro.md @@ -1,6 +1,6 @@ # React on Rails Pro -Node rendering and caching performance enhancements for [React on Rails](https://github.com/shakacode/react_on_rails). Now supports React 18 with updates to React on Rails! Check the [React on Rails CHANGELOG.md](https://github.com/shakacode/react_on_rails/blob/main/CHANGELOG.md) for details and the updates to the [loadable-components instructions](../oss/building-features/code-splitting.md). +Node rendering, caching, streaming SSR, and React Server Components for [React on Rails](https://github.com/shakacode/react_on_rails). Check the [React on Rails CHANGELOG.md](https://github.com/shakacode/react_on_rails/blob/main/CHANGELOG.md) for the latest version and upgrade notes. ## Getting Started diff --git a/docs/pro/installation.md b/docs/pro/installation.md index 6f54a3432d..70a47ade5a 100644 --- a/docs/pro/installation.md +++ b/docs/pro/installation.md @@ -76,7 +76,7 @@ See [License Configuration](#license-configuration-production-only) below for ot ## Adding React Server Components -RSC requires React on Rails Pro and React 19.0.x. To add RSC support, use `--rsc` (fresh install) or the RSC generator (existing app): +RSC requires React on Rails Pro and React 19 with a compatible `react-on-rails-rsc` version. To add RSC support, use `--rsc` (fresh install) or the RSC generator (existing app): ```bash # Fresh install with RSC diff --git a/docs/pro/js-memory-leaks.md b/docs/pro/js-memory-leaks.md index 2b1418c995..726c92b72d 100644 --- a/docs/pro/js-memory-leaks.md +++ b/docs/pro/js-memory-leaks.md @@ -1,6 +1,6 @@ # Avoiding Memory Leaks in Node Renderer SSR -> **Pro Feature** — Available with [React on Rails Pro](https://pro.reactrails.com). +> **Pro Feature** — Available with [React on Rails Pro](https://reactonrails.com/docs/pro/). ## Why Memory Leaks Happen in the Node Renderer diff --git a/docs/pro/react-server-components/create-without-ssr.md b/docs/pro/react-server-components/create-without-ssr.md index 80c54ed13e..6873dfbce7 100644 --- a/docs/pro/react-server-components/create-without-ssr.md +++ b/docs/pro/react-server-components/create-without-ssr.md @@ -15,6 +15,7 @@ To use Server Components in your React on Rails Pro project, you need to follow yarn add --exact react-on-rails-pro@16.4.0 # npm install --save-exact react-on-rails-pro@16.4.0 # pnpm add --save-exact react-on-rails-pro@16.4.0 +# bun add --exact react-on-rails-pro@16.4.0 # Then add the Ruby gems: bundle add react_on_rails --version "16.4.0" --strict @@ -24,11 +25,17 @@ bundle add react_on_rails_pro --version "16.4.0" --strict Also, install version 19 of React, React DOM, and `react-on-rails-rsc`: ```bash -yarn add react@19.0.0 react-dom@19.0.0 react-on-rails-rsc@19.0.0 +yarn add react@19.0.4 react-dom@19.0.4 react-on-rails-rsc@19.0.4 +# npm install react@19.0.4 react-dom@19.0.4 react-on-rails-rsc@19.0.4 +# pnpm add react@19.0.4 react-dom@19.0.4 react-on-rails-rsc@19.0.4 +# bun add react@19.0.4 react-dom@19.0.4 react-on-rails-rsc@19.0.4 ``` > [!NOTE] -> While React Server Components in React 19 are stable, the underlying APIs used to implement React Server Components bundlers may break between minor versions (19.x). According to the [React Documentation](https://react.dev/reference/rsc/server-components#how-do-i-build-support-for-server-components). React on Rails Pro currently only supports React 19.0.x. +> React on Rails Pro currently supports React 19 with a compatible `react-on-rails-rsc` version. +> The example above pins `19.0.4`; update to the latest `19.x` patch that your `react-on-rails-rsc` +> compatibility range allows. The RSC bundler APIs used internally can change between React minor +> versions. See the [React documentation on Server Components](https://react.dev/reference/rsc/server-components#how-do-i-build-support-for-server-components) for details. 2. Enable support for Server Components in React on Rails Pro configuration: diff --git a/docs/pro/react-server-components/index.md b/docs/pro/react-server-components/index.md index c5f0ea1494..f7ab7de8aa 100644 --- a/docs/pro/react-server-components/index.md +++ b/docs/pro/react-server-components/index.md @@ -1,6 +1,6 @@ # React Server Components in React on Rails Pro -> **Pro Feature** — React Server Components require [React on Rails Pro](https://reactonrails.com/docs/pro/) 4+ with the node renderer. +> **Pro Feature** — React Server Components require [React on Rails Pro](https://reactonrails.com/docs/pro/) with the node renderer. > Free or very low cost for startups and small companies. [Get a license →](https://pro.reactonrails.com/) ## What Are React Server Components? @@ -34,7 +34,7 @@ Server components can access databases, file systems, and internal APIs directly ## Current Support Status -React on Rails Pro 4+ provides full RSC support with: +Current React on Rails Pro releases provide full RSC support with: - RSC webpack loader (`react-on-rails-rsc/WebpackLoader`) for server/client component separation - RSC webpack plugin (`react-on-rails-rsc/WebpackPlugin`) for client manifest generation @@ -44,9 +44,9 @@ React on Rails Pro 4+ provides full RSC support with: ### Requirements -- React on Rails Pro v4.0.0 or higher -- React 19.0.x (19.1.x and later are not yet supported) -- React on Rails v16.0.0 or higher +- React on Rails Pro v16.4.0 or higher +- React on Rails v16.4.0 or higher +- React 19 with a compatible `react-on-rails-rsc` version - Node renderer — installed separately via `react-on-rails-pro-node-renderer` npm package (see [Pro Installation](../installation.md#install-react-on-rails-pro-node-renderer)) - Shakapacker or Rspack for bundling diff --git a/docs/pro/react-server-components/upgrading-existing-pro-app.md b/docs/pro/react-server-components/upgrading-existing-pro-app.md index 15492d357e..0d62c1fc99 100644 --- a/docs/pro/react-server-components/upgrading-existing-pro-app.md +++ b/docs/pro/react-server-components/upgrading-existing-pro-app.md @@ -8,21 +8,24 @@ This guide walks you through adding React Server Components to an existing React Before running the generator, verify your environment: -| Requirement | Check command | Expected | -| ------------------------ | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -| React on Rails Pro gem | `bundle show react_on_rails_pro` | v16.4.0+ | -| React on Rails gem | `bundle show react_on_rails` | v16.4.0+ | -| React on Rails Pro npm | `npm ls react-on-rails-pro` / `yarn why react-on-rails-pro` / `pnpm list react-on-rails-pro` | Matches gem version | -| React version | `npm ls react` / `yarn why react` / `pnpm list react` | 19.0.4+ (see [v16.2.0 release notes](../../oss/upgrading/release-notes/16.2.0.md) for security context) | -| React DOM version | `npm ls react-dom` / `yarn why react-dom` / `pnpm list react-dom` | Must match `react` version | -| Node.js | `node --version` | 20+ | -| Pro initializer exists | `ls config/initializers/react_on_rails_pro.rb` | File exists | -| Node renderer configured | Check `react_on_rails_pro.rb` for `server_renderer = "NodeRenderer"` | NodeRenderer enabled | +| Requirement | Check command | Expected | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | +| React on Rails Pro gem | `bundle show react_on_rails_pro` | v16.4.0+ | +| React on Rails gem | `bundle show react_on_rails` | v16.4.0+ | +| React on Rails Pro npm | `npm ls react-on-rails-pro` / `yarn why react-on-rails-pro` / `pnpm list react-on-rails-pro` / `bun pm why react-on-rails-pro` | Matches gem version | +| React version | `npm ls react` / `yarn why react` / `pnpm list react` / `bun pm why react` | 19.0.4+ (see [v16.2.0 release notes](../../oss/upgrading/release-notes/16.2.0.md) for security context) | +| React DOM version | `npm ls react-dom` / `yarn why react-dom` / `pnpm list react-dom` / `bun pm why react-dom` | Must match `react` version | +| `react-on-rails-rsc` | `npm ls react-on-rails-rsc` / `yarn why react-on-rails-rsc` / `pnpm list react-on-rails-rsc` / `bun pm why react-on-rails-rsc` | Compatible with the current Pro peer-dependency range | +| Node.js | `node --version` | 18+ | +| Pro initializer exists | `ls config/initializers/react_on_rails_pro.rb` | File exists | +| Node renderer configured | Check `react_on_rails_pro.rb` for `server_renderer = "NodeRenderer"` | NodeRenderer enabled | If React is below 19.0.4, upgrade it first: ```bash -pnpm add react@~19.0.4 react-dom@~19.0.4 +pnpm add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@~19.0.4 +# or: yarn add react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@~19.0.4 +# or: npm install react@~19.0.4 react-dom@~19.0.4 react-on-rails-rsc@~19.0.4 ``` > **React 19.0.4+** is recommended. Earlier 19.0.x versions (19.0.0--19.0.3) have known security vulnerabilities — see the [v16.2.0 release notes](../../oss/upgrading/release-notes/16.2.0.md) for details. @@ -204,7 +207,7 @@ Then run `bundle install` before retrying the generator. If the RSC bundle build fails but server and client builds succeed, the issue is likely in `rscWebpackConfig.js`. Common causes: - **Missing `react-on-rails-rsc` package**: Run `pnpm add react-on-rails-rsc` -- **React version mismatch**: RSC requires React 19.0.x. Check with `pnpm list react` +- **React or `react-on-rails-rsc` version mismatch**: RSC requires React 19 with a compatible `react-on-rails-rsc` version. Check with `pnpm list react react-dom react-on-rails-rsc` - **Custom webpack config incompatibility**: If your `serverWebpackConfig.js` was heavily customized, the generator's transforms may not apply cleanly. See [Preparing Your App: Step 4](../../oss/migrating/rsc-preparing-app.md#step-4-set-up-the-rsc-webpack-bundle) for the underlying intent of each webpack change ### Manifest Files Not Generated diff --git a/llms.txt b/llms.txt index 6a06db26ad..cfd790c19e 100644 --- a/llms.txt +++ b/llms.txt @@ -21,19 +21,20 @@ IMPORTANT: When using the `react_on_rails_pro` gem, you MUST use the `react-on-r ### Base (open-source): ```bash -rails generate react_on_rails:install +bundle add react_on_rails --strict +bundle exec rails generate react_on_rails:install ``` ### Pro with Node Renderer: ```bash -bundle add react_on_rails_pro -rails generate react_on_rails:install --pro +bundle add react_on_rails_pro --strict +bundle exec rails generate react_on_rails:install --pro ``` ### Pro with React Server Components: ```bash -bundle add react_on_rails_pro -rails generate react_on_rails:install --rsc +bundle add react_on_rails_pro --strict +bundle exec rails generate react_on_rails:install --rsc ``` ## Node Renderer API