You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+7-23Lines changed: 7 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,11 +24,7 @@ After a release, run `/update-changelog` in Claude Code to analyze commits, writ
24
24
25
25
### [Unreleased]
26
26
27
-
#### Fixed
28
-
29
-
-**Pin third-party npm dependency versions in generator**: All third-party npm dependencies installed by the `react_on_rails:install` generator and `bin/switch-bundler` are now pinned to `^major.0.0` version ranges, preventing peer dependency conflicts from uncontrolled major version bumps. Fixes CI breakage caused by `@rspack/plugin-react-refresh@2.0.0` requiring `@rspack/core@^2.0.0-0` while `@rspack/core` latest was still `1.7.11`. SWC dependency pins match Shakapacker's own version constraints. Closes [Issue 3082](https://github.com/shakacode/react_on_rails/issues/3082). [PR 3083](https://github.com/shakacode/react_on_rails/pull/3083) by [ihabadham](https://github.com/ihabadham).
30
-
31
-
### [16.6.0.rc.1] - 2026-04-07
27
+
### [16.6.0] - 2026-04-09
32
28
33
29
#### Removed
34
30
@@ -41,34 +37,22 @@ After a release, run `/update-changelog` in Claude Code to analyze commits, writ
41
37
-**[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. Blank values (`nil` or `""`) are treated identically and fall through the full resolution chain: config → URL → ENV. [PR 2921](https://github.com/shakacode/react_on_rails/pull/2921) by [justin808](https://github.com/justin808).
42
38
-**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, and non-interactive environments fall back to standard mode automatically. [PR 3063](https://github.com/shakacode/react_on_rails/pull/3063) by [justin808](https://github.com/justin808).
43
39
-**[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](https://github.com/shakacode/react_on_rails/pull/3069) by [justin808](https://github.com/justin808).
40
+
-**[Pro]****`react_on_rails:pro` now automates Pro and RSC Pro upgrades**: Added first-class `--rsc-pro` install mode, automatic `react_on_rails` -> `react_on_rails_pro` Gemfile and package swaps, and frontend import rewrites to streamline existing app upgrades. [PR 2822](https://github.com/shakacode/react_on_rails/pull/2822) by [justin808](https://github.com/justin808).
44
41
45
42
#### Improved
46
43
44
+
-**[Pro]****Clearer node renderer request context in exception messages**: Exception formatting now uses a generic `Request:` label instead of render-specific wording, so `/upload-assets` failures and other non-render paths report the actual request context more clearly. [PR 2877](https://github.com/shakacode/react_on_rails/pull/2877) by [AbanoubGhadban](https://github.com/AbanoubGhadban).
45
+
-**[Pro]****Cleaner node renderer diagnostic output**: Invalid render-request diagnostics no longer redundantly list `renderingRequest` in the `bodyKeys` output since it is already reported via the `Received type:` line, and `renderer_http_keep_alive_timeout` documentation now recommends setting it shorter than the node renderer's server-side idle timeout. [PR 3086](https://github.com/shakacode/react_on_rails/pull/3086) by [justin808](https://github.com/justin808).
47
46
-**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. Wildcard checks now also cover Pro packages (`react-on-rails-pro`, `react_on_rails_pro`). [PR 3070](https://github.com/shakacode/react_on_rails/pull/3070) by [justin808](https://github.com/justin808).
48
47
-**Error messages recommend doctor**: Runtime version-check crashes, configuration validation errors, and autobundling errors now suggest running `bundle exec rake react_on_rails:doctor` for diagnostics and `bundle exec rake react_on_rails:sync_versions WRITE=true` to fix version mismatches. [PR 3070](https://github.com/shakacode/react_on_rails/pull/3070) by [justin808](https://github.com/justin808).
49
48
-**`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 as unsupported. When `FIX=true` is set, doctor auto-runs `sync_versions` to fix detected mismatches. [PR 3070](https://github.com/shakacode/react_on_rails/pull/3070) by [justin808](https://github.com/justin808).
50
49
-**[Pro] Improved node renderer error messages for malformed render requests**: Added early validation for missing or invalid `renderingRequest` payloads on the render endpoint, returning actionable 400 messages that include received type, body keys, and likely causes (truncation, malformed multipart, content-length mismatch). [PR 3068](https://github.com/shakacode/react_on_rails/pull/3068) by [justin808](https://github.com/justin808).
51
-
52
-
#### Fixed
53
-
54
-
-**[Pro]****Fixed TanStack Router SSR hydration mismatches in the async path**: Client hydration now restores server match data before first render, uses `RouterProvider` directly to match the server-rendered tree, and stops the post-hydration load when a custom `router.options.hydrate` callback fails instead of continuing with partially hydrated client state. [PR 2932](https://github.com/shakacode/react_on_rails/pull/2932) by [justin808](https://github.com/justin808).
55
-
-**[Pro] Fixed infinite fork loop when node renderer worker fails to bind port**: When a worker failed during `app.listen()` (e.g., `EADDRINUSE`), the master previously reforked unconditionally, causing an infinite fork/crash loop that consumed CPU and filled logs. Workers now send a `WORKER_STARTUP_FAILURE` IPC message to the master before exiting; the master sets an abort flag and exits with a clear error message instead of reforking. Scheduled restarts and runtime crashes continue to refork as before. [PR 2881](https://github.com/shakacode/react_on_rails/pull/2881) by [justin808](https://github.com/justin808).
56
-
-**[Pro] Fixed Pro generator multiline and template-literal rewrites**: The Pro install generator now correctly handles multiline non-parenthesized `gem "react_on_rails"` declarations while preserving trailing options, and correctly rewrites module specifiers around template literals by preserving escaped sequences and detecting multiline template-literal starts after a closed inline template. [PR 2918](https://github.com/shakacode/react_on_rails/pull/2918) by [justin808](https://github.com/justin808).
57
-
-**[Pro] Fixed SSR failures from stale persistent HTTP/2 connections to the node renderer**: When idle connections became stale (closed by the node renderer but still considered active by the Ruby side), render requests could be truncated mid-flight, producing confusing `FST_ERR_CTP_INVALID_CONTENT_LENGTH` and "INVALID NIL or NULL result for rendering" errors. The new `renderer_http_keep_alive_timeout` config (default: 30s) prevents this by closing idle connections before they go stale. Content-Length mismatches now produce specific diagnostic messages instead of generic errors, and sensitive field names are filtered from diagnostic output. Fixes [Issue 3071](https://github.com/shakacode/react_on_rails/issues/3071). [PR 3069](https://github.com/shakacode/react_on_rails/pull/3069) by [justin808](https://github.com/justin808).
58
-
59
-
### [16.6.0.rc.0] - 2026-04-01
60
-
61
-
#### Added
62
-
63
-
-**[Pro]****`react_on_rails:pro` now automates Pro and RSC Pro upgrades**: Added first-class `--rsc-pro` install mode, automatic `react_on_rails` -> `react_on_rails_pro` Gemfile and package swaps, and frontend import rewrites to streamline existing app upgrades. [PR 2822](https://github.com/shakacode/react_on_rails/pull/2822) by [justin808](https://github.com/justin808).
64
-
65
-
#### Improved
66
-
67
50
-**`react_on_rails:doctor` now prefers runtime configuration**: Doctor now reads loaded `ReactOnRails.configuration` values before falling back to initializer parsing, improving diagnostics for customized SSR and NodeRenderer setups. [PR 2823](https://github.com/shakacode/react_on_rails/pull/2823) by [justin808](https://github.com/justin808).
68
51
-**Fresh app onboarding for `create-react-on-rails-app`**: New apps now land on a generated root page with links to the local demos, docs, OSS vs Pro guidance, the Pro quick start, and the marketplace RSC demo. `bin/dev` opens that page on first boot, `--rsc` scaffolds the same fresh-app experience, and the generated app records step-by-step educational git commits for each scaffold phase. [PR 2849](https://github.com/shakacode/react_on_rails/pull/2849) by [justin808](https://github.com/justin808).
69
52
70
53
#### Fixed
71
54
55
+
-**Pin third-party npm dependency versions in generator**: All third-party npm dependencies installed by the `react_on_rails:install` generator and `bin/switch-bundler` are now pinned to `^major.0.0` version ranges, preventing peer dependency conflicts from uncontrolled major version bumps. Fixes CI breakage caused by `@rspack/plugin-react-refresh@2.0.0` requiring `@rspack/core@^2.0.0-0` while `@rspack/core` latest was still `1.7.11`. SWC dependency pins match Shakapacker's own version constraints. Closes [Issue 3082](https://github.com/shakacode/react_on_rails/issues/3082). [PR 3083](https://github.com/shakacode/react_on_rails/pull/3083) by [ihabadham](https://github.com/ihabadham).
72
56
-**[Pro]****Fixed TanStack Router SSR hydration mismatches in the async path**: Client hydration now restores server match data before first render, uses `RouterProvider` directly to match the server-rendered tree, and stops the post-hydration load when a custom `router.options.hydrate` callback fails instead of continuing with partially hydrated client state. [PR 2932](https://github.com/shakacode/react_on_rails/pull/2932) by [justin808](https://github.com/justin808).
73
57
-**[Pro] Fixed infinite fork loop when node renderer worker fails to bind port**: When a worker failed during `app.listen()` (e.g., `EADDRINUSE`), the master previously reforked unconditionally, causing an infinite fork/crash loop that consumed CPU and filled logs. Workers now send a `WORKER_STARTUP_FAILURE` IPC message to the master before exiting; the master sets an abort flag and exits with a clear error message instead of reforking. Scheduled restarts and runtime crashes continue to refork as before. [PR 2881](https://github.com/shakacode/react_on_rails/pull/2881) by [justin808](https://github.com/justin808).
74
58
-**[Pro] Fixed Pro generator multiline and template-literal rewrites**: The Pro install generator now correctly handles multiline non-parenthesized `gem "react_on_rails"` declarations while preserving trailing options, and correctly rewrites module specifiers around template literals by preserving escaped sequences and detecting multiline template-literal starts after a closed inline template. [PR 2918](https://github.com/shakacode/react_on_rails/pull/2918) by [justin808](https://github.com/justin808).
0 commit comments