react_on_rails 16.2.0.beta.3 → 16.2.0.beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +42 -5
  3. data/CLAUDE.md +59 -0
  4. data/CONTRIBUTING.md +49 -1
  5. data/Gemfile.development_dependencies +1 -1
  6. data/Gemfile.lock +25 -10
  7. data/SWITCHING_CI_CONFIGS.md +55 -6
  8. data/Steepfile +51 -0
  9. data/bin/ci-rerun-failures +68 -22
  10. data/bin/ci-run-failed-specs +26 -2
  11. data/bin/ci-switch-config +262 -34
  12. data/bin/lefthook/check-trailing-newlines +2 -12
  13. data/bin/lefthook/eslint-lint +0 -10
  14. data/bin/lefthook/prettier-format +0 -10
  15. data/bin/lefthook/ruby-autofix +3 -6
  16. data/knip.ts +35 -9
  17. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt +32 -52
  18. data/lib/generators/react_on_rails/templates/base/base/config/shakapacker.yml +5 -1
  19. data/lib/react_on_rails/configuration.rb +56 -12
  20. data/lib/react_on_rails/controller.rb +3 -3
  21. data/lib/react_on_rails/dev/server_manager.rb +11 -4
  22. data/lib/react_on_rails/doctor.rb +249 -2
  23. data/lib/react_on_rails/helper.rb +12 -3
  24. data/lib/react_on_rails/pro_helper.rb +2 -44
  25. data/lib/react_on_rails/react_component/render_options.rb +7 -7
  26. data/lib/react_on_rails/utils.rb +40 -0
  27. data/lib/react_on_rails/version.rb +1 -1
  28. data/react_on_rails_pro/CHANGELOG.md +142 -29
  29. data/react_on_rails_pro/CONTRIBUTING.md +2 -13
  30. data/react_on_rails_pro/Gemfile.development_dependencies +1 -0
  31. data/react_on_rails_pro/Gemfile.lock +24 -3
  32. data/react_on_rails_pro/README.md +559 -38
  33. data/react_on_rails_pro/docs/code-splitting-loadable-components.md +1 -1
  34. data/react_on_rails_pro/docs/contributors-info/releasing.md +2 -2
  35. data/react_on_rails_pro/docs/installation.md +129 -109
  36. data/react_on_rails_pro/docs/node-renderer/basics.md +29 -22
  37. data/react_on_rails_pro/docs/node-renderer/error-reporting-and-tracing.md +8 -8
  38. data/react_on_rails_pro/docs/node-renderer/js-configuration.md +25 -23
  39. data/react_on_rails_pro/docs/node-renderer/troubleshooting.md +2 -0
  40. data/react_on_rails_pro/docs/updating.md +209 -15
  41. data/react_on_rails_pro/lib/react_on_rails_pro/concerns/stream.rb +58 -4
  42. data/react_on_rails_pro/lib/react_on_rails_pro/configuration.rb +17 -3
  43. data/react_on_rails_pro/lib/react_on_rails_pro/license_public_key.rb +9 -9
  44. data/react_on_rails_pro/lib/react_on_rails_pro/request.rb +41 -25
  45. data/react_on_rails_pro/lib/react_on_rails_pro/stream_request.rb +27 -7
  46. data/react_on_rails_pro/lib/react_on_rails_pro/utils.rb +3 -3
  47. data/react_on_rails_pro/lib/react_on_rails_pro/version.rb +1 -1
  48. data/react_on_rails_pro/package-scripts.yml +1 -1
  49. data/react_on_rails_pro/package.json +5 -8
  50. data/react_on_rails_pro/packages/node-renderer/src/integrations/api.ts +1 -1
  51. data/react_on_rails_pro/packages/node-renderer/src/master/restartWorkers.ts +39 -17
  52. data/react_on_rails_pro/packages/node-renderer/src/master.ts +15 -4
  53. data/react_on_rails_pro/packages/node-renderer/src/shared/configBuilder.ts +44 -5
  54. data/react_on_rails_pro/packages/node-renderer/src/shared/utils.ts +4 -2
  55. data/react_on_rails_pro/packages/node-renderer/src/worker/handleGracefulShutdown.ts +49 -0
  56. data/react_on_rails_pro/packages/node-renderer/src/worker/vm.ts +3 -3
  57. data/react_on_rails_pro/packages/node-renderer/src/worker.ts +5 -2
  58. data/react_on_rails_pro/packages/node-renderer/tests/helper.ts +8 -8
  59. data/react_on_rails_pro/packages/node-renderer/tests/testingNodeRendererConfigs.js +1 -1
  60. data/react_on_rails_pro/packages/node-renderer/tests/worker.test.ts +19 -19
  61. data/react_on_rails_pro/rakelib/public_key_management.rake +6 -5
  62. data/react_on_rails_pro/rakelib/rbs.rake +47 -0
  63. data/react_on_rails_pro/react_on_rails_pro.gemspec +1 -0
  64. data/react_on_rails_pro/sig/react_on_rails_pro/cache.rbs +13 -0
  65. data/react_on_rails_pro/sig/react_on_rails_pro/configuration.rbs +100 -0
  66. data/react_on_rails_pro/sig/react_on_rails_pro/error.rbs +4 -0
  67. data/react_on_rails_pro/sig/react_on_rails_pro/utils.rbs +7 -0
  68. data/react_on_rails_pro/sig/react_on_rails_pro.rbs +5 -0
  69. data/react_on_rails_pro/spec/dummy/Gemfile.lock +23 -3
  70. data/react_on_rails_pro/spec/dummy/app/controllers/pages_controller.rb +3 -3
  71. data/react_on_rails_pro/spec/dummy/bin/dev +4 -8
  72. data/react_on_rails_pro/spec/dummy/client/node-renderer.js +4 -4
  73. data/react_on_rails_pro/spec/dummy/config/environments/production.rb +1 -1
  74. data/react_on_rails_pro/spec/dummy/config/initializers/react_on_rails.rb +28 -12
  75. data/react_on_rails_pro/spec/dummy/config.ru +1 -1
  76. data/react_on_rails_pro/spec/dummy/package.json +2 -2
  77. data/react_on_rails_pro/spec/dummy/spec/helpers/react_on_rails_pro_helper_spec.rb +40 -11
  78. data/react_on_rails_pro/spec/dummy/spec/rails_helper.rb +1 -1
  79. data/react_on_rails_pro/spec/dummy/spec/requests/renderer_console_logging_spec.rb +5 -5
  80. data/react_on_rails_pro/spec/dummy/spec/system/integration_spec.rb +15 -10
  81. data/react_on_rails_pro/spec/dummy/spec/system/renderer_integration_spec.rb +3 -3
  82. data/react_on_rails_pro/spec/dummy/yarn.lock +4 -4
  83. data/react_on_rails_pro/spec/execjs-compatible-dummy/config/environments/production.rb +1 -1
  84. data/react_on_rails_pro/spec/execjs-compatible-dummy/config/initializers/react_on_rails.rb +16 -43
  85. data/react_on_rails_pro/spec/react_on_rails_pro/assets_precompile_spec.rb +15 -18
  86. data/react_on_rails_pro/spec/react_on_rails_pro/cache_spec.rb +1 -1
  87. data/react_on_rails_pro/spec/react_on_rails_pro/configuration_spec.rb +5 -3
  88. data/react_on_rails_pro/spec/react_on_rails_pro/license_validator_spec.rb +27 -12
  89. data/react_on_rails_pro/spec/react_on_rails_pro/request_spec.rb +0 -27
  90. data/react_on_rails_pro/spec/react_on_rails_pro/spec_helper.rb +1 -1
  91. data/react_on_rails_pro/spec/react_on_rails_pro/stream_decorator_spec.rb +89 -0
  92. data/react_on_rails_pro/spec/react_on_rails_pro/stream_spec.rb +144 -0
  93. data/react_on_rails_pro/spec/react_on_rails_pro/support/caching.rb +1 -1
  94. data/react_on_rails_pro/spec/react_on_rails_pro/support/mock_block_helper.rb +4 -2
  95. data/sig/react_on_rails/controller.rbs +1 -1
  96. data/sig/react_on_rails/error.rbs +4 -0
  97. data/sig/react_on_rails/helper.rbs +2 -2
  98. data/sig/react_on_rails/json_parse_error.rbs +10 -0
  99. data/sig/react_on_rails/prerender_error.rbs +21 -0
  100. data/sig/react_on_rails/smart_error.rbs +28 -0
  101. data/sig/react_on_rails.rbs +3 -24
  102. metadata +14 -4
  103. data/lib/react_on_rails/pro_utils.rb +0 -37
  104. data/react_on_rails_pro/spec/dummy/client/app/ror-auto-load-components/TestingStreamableComponent.jsx +0 -15
@@ -1,7 +1,9 @@
1
1
  # Change Log
2
+
2
3
  All notable changes to this project will be documented in this file. Items under `Unreleased` is upcoming features that will be out in next release.
3
4
 
4
5
  ## Gem and Package Versions
6
+
5
7
  Gem and package versions are the same except for beta releases where the gem uses a `.beta` and the package uses a `-beta` (same for `rc`).
6
8
 
7
9
  1. **Gem**: `3.0.0.rc.1`
@@ -9,54 +11,76 @@ Gem and package versions are the same except for beta releases where the gem use
9
11
 
10
12
  You can find the **package** version numbers from this repo's tags and below in this file.
11
13
 
12
- ----
14
+ ---
13
15
 
14
16
  [HEAD compared to 3.3.1]: Click to see all changes compared to the last 3.x version. See the [4.0 Release Notes](https://github.com/shakacode/react_on_rails_pro/blob/master/docs/release-notes/4.0.md).
15
17
 
16
18
  ## [Unreleased]
17
- *Add changes in master not yet tagged.*
19
+
20
+ _Add changes in master not yet tagged._
21
+
22
+ ### Improved
23
+ - Significantly improved streaming performance by processing React components concurrently instead of sequentially. This reduces latency and improves responsiveness when using `stream_view_containing_react_components`.
24
+
25
+ ### Added
26
+ - Added `config.concurrent_component_streaming_buffer_size` configuration option to control the memory buffer size for concurrent component streaming (defaults to 64). This allows fine-tuning of memory usage vs. performance for streaming applications.
18
27
 
19
28
  ### Added
29
+
20
30
  - Added `cached_stream_react_component` helper method, similar to `cached_react_component` but for streamed components.
21
31
  - **License Validation System**: Implemented comprehensive JWT-based license validation with offline verification using RSA-256 signatures. License validation occurs at startup in both Ruby and Node.js environments. Supports required fields (`sub`, `iat`, `exp`) and optional fields (`plan`, `organization`, `iss`). FREE evaluation licenses are available for 3 months at [shakacode.com/react-on-rails-pro](https://shakacode.com/react-on-rails-pro). [PR #1857](https://github.com/shakacode/react_on_rails/pull/1857) by [AbanoubGhadban](https://github.com/AbanoubGhadban).
22
32
  - **Pro-Specific Configurations Moved from Open-Source**: The following React Server Components (RSC) configurations are now exclusively in the Pro gem and should be configured in `ReactOnRailsPro.configure`:
33
+
23
34
  - `rsc_bundle_js_file` - Path to the RSC bundle file
24
35
  - `react_server_client_manifest_file` - Path to the React server client manifest
25
36
  - `react_client_manifest_file` - Path to the React client manifest
26
37
 
27
38
  These configurations were previously available in the open-source `ReactOnRails.configure` block but have been moved to Pro where they belong since RSC is a Pro-only feature.
39
+
28
40
  - **Streaming View Helpers Now Pro-Exclusive**: The following view helpers are now defined exclusively in the Pro gem:
41
+
29
42
  - `stream_react_component` - Progressive SSR using React 18+ streaming
30
43
  - `rsc_payload_react_component` - RSC payload rendering
31
44
 
32
45
  These helpers were previously in the open-source gem but have been moved to Pro as they are Pro-only features.
46
+
33
47
  - **Node Renderer Gem Version Validation**: The node renderer now validates that the Ruby gem version (`react_on_rails_pro`) matches the node renderer package version (`@shakacode-tools/react-on-rails-pro-node-renderer`) on every render request. Environment-aware: strict enforcement in development (returns 412 Precondition Failed on mismatch), permissive in production (allows with warning). Includes version normalization to handle Ruby gem vs NPM format differences (e.g., `4.0.0.rc.1` vs `4.0.0-rc.1`). [PR #1881](https://github.com/shakacode/react_on_rails/pull/1881) by [AbanoubGhadban](https://github.com/AbanoubGhadban).
34
48
 
49
+ ### Changed
50
+
51
+ - Renamed Node Renderer configuration option `bundlePath` to `serverBundleCachePath` to better clarify its purpose as a cache directory for uploaded server bundles, distinct from Shakapacker's public asset directory. The old `bundlePath` property and `RENDERER_BUNDLE_PATH` environment variable continue to work with deprecation warnings. [PR 2008](https://github.com/shakacode/react_on_rails/pull/2008) by [justin808](https://github.com/justin808).
52
+
35
53
  ### Changed (Breaking)
54
+
36
55
  - `config.prerender_caching`, which controls caching for non-streaming components, now also controls caching for streamed components. To disable caching for an individual render, pass `internal_option(:skip_prerender_cache)`.
37
56
  - **Configuration Migration Required**: If you are using RSC features, you must move the RSC-related configurations from `ReactOnRails.configure` to `ReactOnRailsPro.configure` in your initializers. See the migration example in the [React on Rails CHANGELOG](https://github.com/shakacode/react_on_rails/blob/master/CHANGELOG.md#unreleased).
57
+ - Added `async` gem dependency (>= 2.6) to support concurrent streaming functionality.
38
58
 
39
59
  ## [4.0.0-rc.15] - 2025-08-11
40
60
 
41
61
  ### Fixed
62
+
42
63
  - Fixed an issue where, when React Server Components (RSC) support was disabled, the Node Renderer unnecessarily requested bundles on every render. Now, bundles are only requested when actually needed, improving performance and reducing redundant network traffic. [PR 545](https://github.com/shakacode/react_on_rails_pro/pull/545) by [AbanoubGhadban](https://github.com/AbanoubGhadban).
64
+ - **Fix `descriptor closed` error**: The errors happens when the node renderer restarts while it's still handling an in-progress request (especially if it's a streaming request that may take more time to handle). Implemented a fix that makes worker shutdown gracefully after it finishes all active requests. When a worker receives the shutdown message, if it doesn't shut down during the `gracefulWorkerRestartTimeout`, the master forcibly kills it. [PR #1970][https://github.com/shakacode/react_on_rails/pull/1970] by [AbanoubGhadban](https://github.com/AbanoubGhadban).
43
65
 
44
66
  ### Changed
67
+
45
68
  - Upgraded HTTPX dependency from 1.3.4 to ~> 1.5 (currently 1.5.1). [PR 520](https://github.com/shakacode/react_on_rails_pro/pull/520) by [AbanoubGhadban](https://github.com/AbanoubGhadban).
46
69
 
47
70
  ## [4.0.0-rc.14] - 2025-06-22
48
71
 
49
72
  ### Improved
73
+
50
74
  - Improved RSC rendering flow by eliminating double rendering of server components and reducing the number of HTTP requests.
51
75
  - Updated communication protocol between Node Renderer and Rails to version 2.0.0 which supports the ability to upload multiple bundles at once.
52
76
  - Added the ability to communicate between different bundles on the renderer by using the `runOnOtherBundle` function which is globally available for the rendering request.
53
77
 
54
78
  [PR 515](https://github.com/shakacode/react_on_rails_pro/pull/515) by [AbanoubGhadban](https://github.com/AbanoubGhadban).
55
79
 
56
-
57
80
  ## [4.0.0-rc.13] - 2025-03-07
58
81
 
59
82
  ### Added
83
+
60
84
  - 🚀 **Introducing React Server Components Support!** 🎉
61
85
  - Experience the future of React with full RSC integration
62
86
  - Seamlessly use React Server Components in your Rails apps
@@ -67,24 +91,29 @@ You can find the **package** version numbers from this repo's tags and below in
67
91
  [PR 422](https://github.com/shakacode/react_on_rails_pro/pull/422) by [AbanoubGhadban](https://github.com/AbanoubGhadban).
68
92
 
69
93
  ### Changed (Breaking)
94
+
70
95
  - `ReactOnRailsPro::Utils#copy_assets` retuns `nil` instead of `Response` object. Because it throws an error if an error occurs.
71
96
 
72
97
  ## [4.0.0.rc.11] - 2025-02-09
73
98
 
74
99
  ### Changed
100
+
75
101
  - [PR 511](https://github.com/shakacode/react_on_rails_pro/pull/511) by [Romex91](https://github.com/Romex91)
102
+
76
103
  - Set `bodyLimit` to 100 MB by default to fix error 413.
77
104
  - Add `fastifyServerOptions` to the config
78
105
 
79
- - Specify exact httpx version until the bug there is fixed [PR #496](https://github.com/shakacode/react_on_rails_pro/pull/496) by [alexeyr-ci](https://github.com/alexeyr-ci)
106
+ - Specify exact httpx version until the bug there is fixed [PR #496](https://github.com/shakacode/react_on_rails_pro/pull/496) by [alexeyr-ci](https://github.com/alexeyr-ci)
80
107
 
81
108
  ### Changed
109
+
82
110
  - Renamed `includeTimerPolyfills` configuration option to `stubTimers`. [PR 506](https://github.com/shakacode/react_on_rails_pro/pull/506) by [alexeyr-ci](https://github.com/alexeyr-ci).
83
111
  - Fail immediately on detecting obsolete config options to prevent unexpected misconfigurations. [PR 506](https://github.com/shakacode/react_on_rails_pro/pull/506) by [alexeyr-ci](https://github.com/alexeyr-ci).
84
112
 
85
113
  ## [4.0.0.rc.9] - 2024-12-05
86
114
 
87
115
  ### Changed
116
+
88
117
  - Error reporting and tracing integrations are completely redone. See [the docs](./docs/node-renderer/error-reporting-and-tracing.md) for details. [PR 471](https://github.com/shakacode/react_on_rails_pro/pull/471) by [alexeyr-ci](https://github.com/alexeyr-ci).
89
118
  - Upgraded to Fastify 5 by default, with an option to fall back to Fastify 4 on older Node versions. [PR 478](https://github.com/shakacode/react_on_rails_pro/pull/478) by [alexeyr-ci](https://github.com/alexeyr-ci).
90
119
  - Logging now uses Pino instead of Winston, aligning with Fastify. [PR 479](https://github.com/shakacode/react_on_rails_pro/pull/479) by [alexeyr-ci](https://github.com/alexeyr-ci).
@@ -95,6 +124,7 @@ You can find the **package** version numbers from this repo's tags and below in
95
124
  ## [4.0.0.rc.6] - 2024-11-12
96
125
 
97
126
  ### Added
127
+
98
128
  - Added streaming server rendering support:
99
129
  - [PR 407](https://github.com/shakacode/react_on_rails_pro/pull/407) by [AbanoubGhadban](https://github.com/AbanoubGhadban).
100
130
  - New `stream_view_containing_react_components` helper method that can be used with `stream_react_component` helper method in react_on_rails gem.
@@ -109,24 +139,29 @@ You can find the **package** version numbers from this repo's tags and below in
109
139
  - [PR 440](https://github.com/shakacode/react_on_rails_pro/pull/440) by [AbanoubGhadban](https://github.com/AbanoubGhadban)
110
140
 
111
141
  ### Removed
142
+
112
143
  - Drop support for EOL'd Ruby 2.7 [PR 365](https://github.com/shakacode/react_on_rails_pro/pull/365) by [ahangarha](https://github.com/ahangarha).
113
144
  - Drop support for React on Rails below 14.0.4 [PR 415](https://github.com/shakacode/react_on_rails_pro/pull/415) by [rameziophobia](https://github.com/rameziophobia).
114
145
 
115
146
  ### Fixed
147
+
116
148
  - Updated multiple JS dependencies for bug fixes.
117
149
  - Added execute permission for `spec/dummy/bin/dev` [PR 387](https://github.com/shakacode/react_on_rails_pro/pull/387) by [alexeyr](https://github.com/alexeyr).
118
150
  - Made default bundle paths in node-renderer and Rails consistent [PR 399](https://github.com/shakacode/react_on_rails_pro/pull/399) by [alexeyr-ci](https://github.com/alexeyr-ci).
119
151
 
120
152
  ### Changed
153
+
121
154
  - Support Shakapacker 8.0.0, Modified webpack configurations to use shakapacker instead of webpacker. This drops support for shakapacker 6.X [PR 415](https://github.com/shakacode/react_on_rails_pro/pull/415) by [rameziophobia](https://github.com/rameziophobia).
122
155
  - Converted the node-renderer worker from Express to Fastify [PR 398](https://github.com/shakacode/react_on_rails_pro/pull/398) by [alexeyr-ci](https://github.com/alexeyr-ci).
123
156
 
124
157
  ## [3.3.1] - 2025-08-11
125
158
 
126
159
  ### Changed
160
+
127
161
  - Converted JS code to TS [PR 386](https://github.com/shakacode/react_on_rails_pro/pull/386) and [PR 389](https://github.com/shakacode/react_on_rails_pro/pull/389) by [alexeyr-ci](https://github.com/alexeyr-ci).
128
162
 
129
163
  ### Fixed
164
+
130
165
  - Removed file size limit for assets and bundles. [PR 459](https://github.com/shakacode/react_on_rails_pro/pull/459) by [alexeyr-ci](https://github.com/alexeyr-ci).
131
166
  - Enabled use as a `git:` dependency. [PR 490](https://github.com/shakacode/react_on_rails_pro/pull/490) by [alexeyr-ci](https://github.com/alexeyr-ci).
132
167
  - Enabled `queueMicrotask` use in server bundle to support React 19. [PR 505](https://github.com/shakacode/react_on_rails_pro/pull/505) by [alexeyr-ci](https://github.com/alexeyr-ci).
@@ -134,65 +169,84 @@ You can find the **package** version numbers from this repo's tags and below in
134
169
  - Made compatible with Ruby 3.4. [PR 541](https://github.com/shakacode/react_on_rails_pro/pull/541) by [alexeyr-ci2](https://github.com/alexeyr-ci2).
135
170
 
136
171
  ## [3.2.1] - 2023-06-07
172
+
137
173
  Fixed release, supports Ruby 2.7.5.
138
174
 
139
175
  See branch https://github.com/shakacode/react_on_rails_pro/tree/3-support-ruby-2-7
140
176
 
141
177
  ### Fixed
178
+
142
179
  - Removed console errors when `setTimeout` is used server-size. The call is silently ignored for seamless integration of https://github.com/petyosi/react-virtuoso
143
180
  - Numerous Dependabot alerts
144
181
 
145
182
  ## Doc and Spec Only Updates
183
+
146
184
  React 18 is now supported! Check the [React on Rails CHANGELOG.md](https://github.com/shakacode/react_on_rails/blob/master/CHANGELOG.md) for details and the updates to the [loadable-components instructions](https://github.com/shakacode/react_on_rails_pro/blob/master/docs/code-splitting-loadable-components.md).
147
185
 
148
186
  ### Improved
187
+
149
188
  - Updated `Rubocop` version from `1.18.3` to `1.36.0`. Fixed Rubocop warnings. [PR 296](https://github.com/shakacode/react_on_rails_pro/pull/296) by [alkesh26](https://github.com/alkesh26).
150
189
  - Updated dependencies to address known security vulnerabilities
151
190
 
152
191
  ## [3.1.0] - 2022-08-03
192
+
153
193
  ### Fixed
194
+
154
195
  - Removes `include_execjs_polyfills` options from RoRP gem configuration & adds `include_timer_polyfills` option for Node Renderer configuration, which enables use of setTimeout & other timer functions during server rendering. [PR 281](https://github.com/shakacode/react_on_rails_pro/pull/281) by [judahmeek](https://github.com/judahmeek).
155
196
 
156
197
  ### Improvement
198
+
157
199
  - Warn, do not raise on missing assets [PR 280](https://github.com/shakacode/react_on_rails_pro/pull/280) by [Romex91](https://github.com/Romex91)
158
200
 
159
201
  ## [3.0.1] - 2022-07-011
202
+
160
203
  ### Fixed
204
+
161
205
  - Fix possible `uninitialized constant ReactOnRails (NameError)` in `lib/react_on_rails_pro/error.rb:4`. [PR 277](https://github.com/shakacode/react_on_rails_pro/pull/273) by [alexeyr](https://github.com/alexeyr).
162
206
 
163
207
  ## [3.0.0] - 2022-07-07
208
+
164
209
  ### Fixed
210
+
165
211
  - Make asset paths in PrepareNodeRenderBundles relative too. The symlink to the bundle itself was made relative in #231, but asset symlinks remained absolute. This makes them relative too. Fixes #272. [PR 273](https://github.com/shakacode/react_on_rails_pro/pull/273) by [alexeyr](https://github.com/alexeyr).
166
212
 
167
213
  ## [3.0.0-rc.4] - 2022-06-28
214
+
168
215
  ### Fixed
216
+
169
217
  - Add RAILS_ENV to bundle cache key. This ensures a development bundle will never get accidentally deployed to production. [PR 270](https://github.com/shakacode/react_on_rails_pro/pull/270) by [justin808](https://github.com/justin808).
170
218
  - Replace use of utc_timestamp with Utils.bundle_hash. Important fix as timestamps are not stable between build time and the deployment of a Heroku slug. [PR 269](https://github.com/shakacode/react_on_rails_pro/pull/269) by [Judahmeek](https://github.com/Judahmeek).
171
219
 
172
220
  ## [3.0.0-rc.3] - 2022-04-14
173
221
 
174
222
  ### Fixed
223
+
175
224
  - Fix prepare_node_renderer script. [PR 254](https://github.com/shakacode/react_on_rails_pro/pull/254) by [judahmeek](https://github.com/judahmeek).
176
225
  - Better logging for error 'Request protocol undefined does not match installed renderer protocol'. [PR 252](https://github.com/shakacode/react_on_rails_pro/pull/252) by [justin808](https://github.com/justin808).
177
226
 
178
227
  ## [3.0.0-rc.1] - 2022-02-26
179
228
 
180
229
  ### Fixed
230
+
181
231
  - Use relative source path for bundle symlink which conflicted with extraction of (Heroku) slugs caching resulting in incorrect extraction of the slugs due to absolute paths in the symlinks. [PR 231](https://github.com/shakacode/react_on_rails_pro/pull/231) by [judahmeek](https://github.com/judahmeek).
182
232
 
183
233
  ## [3.0.0-rc.0] - 2021-10-27
184
234
 
185
235
  ### Upgrading to 3.0
236
+
186
237
  1. Changed rake task name from vm to node:
187
238
  Rename react_on_rails_pro:pre_stage_bundle_for_vm_renderer to react_on_rails_pro:pre_stage_bundle_for_node_renderer
188
239
  2. **Bundle Caching**: ReactOnRailsPro::AssetsPrecompile will automatically pre_stage_bundle_for_node_renderer if using the node_renderer. So don't do this twice in another place if using ReactOnRailsPro::AssetsPrecompile for bundle caching. You might have modified your own assets:precompile task.
189
240
 
190
241
  ### Changed
242
+
191
243
  - Moved default location of placed node renderer sym links to be /.node-renderer-bundles as the /tmp directory is typically
192
244
  cleared during slug trimming
193
245
 
194
246
  ### Added
247
+
195
248
  - [PR 220](https://github.com/shakacode/react_on_rails_pro/pull/220) by [justin808](https://github.com/justin808).
249
+
196
250
  - **Add `ssr_timeout` configuration** so the Rails server will not wait more than this many seconds for a SSR request to return once issued.
197
251
  - Change default for `renderer_use_fallback_exec_js` to `false`.
198
252
  - Change default log level to info.
@@ -200,6 +254,7 @@ React 18 is now supported! Check the [React on Rails CHANGELOG.md](https://githu
200
254
  - Add support for render functions to be async (returning promises). Also add `include_execjs_polyfills` option to configuration for React on Rails to optionally stop stubbing of setTimeout, setInterval, & clearTimeout polyfills while using NodeRenderer. [PR 210](https://github.com/shakacode/react_on_rails_pro/pull/210) by [judahmeek](https://github.com/judahmeek).
201
255
 
202
256
  ### Fixed
257
+
203
258
  - Ability to call `server_render_js(raw_js)` fixed. Previously, always errored.
204
259
  - Errors during rendering result in ReactOnRails::PrerenderError
205
260
  - When retrying rendering, the retry message is more clear
@@ -207,6 +262,7 @@ React 18 is now supported! Check the [React on Rails CHANGELOG.md](https://githu
207
262
  ## [2.3.0] - 2021-09-22
208
263
 
209
264
  ### Added
265
+
210
266
  - Configuration option for `ssr_timeout` so the Rails server will not wait more than this many seconds
211
267
  for a SSR request to return once issued. Default timeout if not set is 5.
212
268
  `config.ssr_timeout = 5`
@@ -221,110 +277,144 @@ React 18 is now supported! Check the [React on Rails CHANGELOG.md](https://githu
221
277
  [justin808](https://github.com/justin808) and [ershadul1](https://github.com/ershadul1).
222
278
 
223
279
  ## [2.2.0] - 2021-07-13
280
+
224
281
  - Change rake react_on_rails_pro:pre_stage_bundle_for_vm_renderer to use symlinks to save slug size. [PR 202](https://github.com/shakacode/react_on_rails_pro/pull/202) by [justin808](https://github.com/justin808).
225
282
 
226
283
  ## [2.1.1] - 2021-05-29
284
+
227
285
  - Add optional extra cache values for bundle caching. The cache adapter can now provide a method cache_keys. [PR 196](https://github.com/shakacode/react_on_rails_pro/pull/196) by [justin808](https://github.com/justin808).
228
286
 
229
287
  ## [2.1.0] - 2021-05-15
230
288
 
231
289
  ### Added
290
+
232
291
  - Optional production bundle caching. [PR 179](https://github.com/shakacode/react_on_rails_pro/pull/179) by [judahmeek](https://github.com/judahmeek).
233
292
  - Added configurations:
234
293
  - `excluded_dependency_globs`: don't include these in caches
235
294
  - `remote_bundle_cache_adapter`: See `docs/bundle-caching.md
236
295
 
237
- ------
296
+ ---
238
297
 
239
298
  ### 2.0 Upgrade Steps
299
+
240
300
  1. Update React on Rails to 12.2.0
241
301
  2. Be sure to use an API key that has the Github package access and know your API key username. For questions, message Justin Gordon on Slack or [justin@shakacode.com](mailto:justin@shakacode.com).
242
302
 
243
-
244
303
  In your `config/initializers/react_on_rails_pro.rb`:
304
+
245
305
  1. Rename any references from `config.serializer_globs` to `config.dependency_globs`
246
306
  1. Rename any references from `vm-renderer` to `node-renderer`
247
307
  1. Rename `vmRenderer` to `NodeRenderer`
248
308
 
249
309
  Follow the steps for the new installation that uses Github Packages: [docs/installation.md](https://github.com/shakacode/react_on_rails_pro/blob/master/docs/installation.md).
310
+
250
311
  1. Be sure to namespace the package like `require('@shakacode-tools/react-on-rails-pro-node-renderer');`
251
312
  1. Add the Honeybadger ("@honeybadger-io/js") or Sentry ("@sentry/node") NPM packages, as those used to be **dependencies**. Now they are optional.
252
313
  1. Add the `@sentry/tracing` package if you want to try Sentry tracing. See [Error Reporting and Tracing for Sentry and HoneyBadger](./docs/node-renderer/error-reporting-and-tracing.md).
253
314
 
254
315
  For example, the old code might be:
316
+
255
317
  ```js
256
318
  const { reactOnRailsProVmRenderer } = require('react-on-rails-pro-vm-renderer');
257
319
  ```
320
+
258
321
  New
322
+
259
323
  ```js
260
324
  const { reactOnRailsProNodeRenderer } = require('@shakacode-tools/react-on-rails-pro-node-renderer');
261
325
  ```
262
- ------
326
+
327
+ ---
328
+
263
329
  ## [2.0.0] - 2021-04-02
330
+
264
331
  - See 2.0 Upgrade steps!
265
332
 
266
333
  ## [2.0.0.beta.3] - 2021-03-31
334
+
267
335
  #### Improved
336
+
268
337
  - Warn, do not raise on missing assets [PR 176](https://github.com/shakacode/react_on_rails_pro/pull/176) by [Romex91](https://github.com/Romex91)
269
338
 
270
339
  ## [2.0.0.beta.2] - 2021-03-23
340
+
271
341
  #### Added
342
+
272
343
  - Added option `config.throw_js_errors` so that any errors in SSR will go to the console plus HoneyBadger/Sentry. [PR 174](https://github.com/shakacode/react_on_rails_pro/pull/174) by [justin808](https://github.com/justin808).
273
344
 
274
345
  #### Fixed
346
+
275
347
  - Logs missing error reporting packages (Sentry/HoneyBadger) instead of throwing an error. [PR 174](https://github.com/shakacode/react_on_rails_pro/pull/174) by [justin808](https://github.com/justin808).
276
348
 
277
349
  ## [2.0.0.beta.1] - 2021-03-14
278
- * Added Sentry Tracing support. [PR 150](https://github.com/shakacode/react_on_rails_pro/pull/150) by [ashgaliyev](https://github.com/ashgaliyev). To use this feature, you need to add `config.sentryTracing = true` (or ENV `SENTRY_TRACING=true`) and optionally the `config.sentryTracesSampleRate = 0.5` (or ENV `SENTRY_TRACES_SAMPLE_RATE=0.5`). The value of the sample rate is the percentage of requests to trace. For documentation of Sentry Tracing, see the [Sentry Performance Monitoring Docs](https://docs.sentry.io/platforms/ruby/performance/), the [Sentry Distributed Tracing Docs](https://docs.sentry.io/product/performance/distributed-tracing/), and the [Sentry Sampling Transactions Docs](https://docs.sentry.io/platforms/ruby/performance/sampling/). The default **config.sentryTracesSampleRate** is **0.1**.
279
350
 
280
- - Renamed `config.serializer_globs`to `config.dependency_globs`. [PR 165](https://github.com/shakacode/react_on_rails_pro/pull/165) by [judahmeek](https://github.com/judahmeek)
281
- - RORP_CACHE_HIT and RORP_CACHE_KEY is returned for prerender caching, which is only when there is no fragment caching.
282
- - Improve cache information from react_component_hash. Hash result now includes 2 new keys
283
- * RORP_CACHE_HIT
284
- * RORP_CACHE_KEY
285
- Additionally, ReactOnRailsPro::Utils.printable_cache_key(cache_key) added.
286
- - [PR 170](https://github.com/shakacode/react_on_rails_pro/pull/170) by [justin808](https://github.com/justin808).
351
+ - Added Sentry Tracing support. [PR 150](https://github.com/shakacode/react_on_rails_pro/pull/150) by [ashgaliyev](https://github.com/ashgaliyev). To use this feature, you need to add `config.sentryTracing = true` (or ENV `SENTRY_TRACING=true`) and optionally the `config.sentryTracesSampleRate = 0.5` (or ENV `SENTRY_TRACES_SAMPLE_RATE=0.5`). The value of the sample rate is the percentage of requests to trace. For documentation of Sentry Tracing, see the [Sentry Performance Monitoring Docs](https://docs.sentry.io/platforms/ruby/performance/), the [Sentry Distributed Tracing Docs](https://docs.sentry.io/product/performance/distributed-tracing/), and the [Sentry Sampling Transactions Docs](https://docs.sentry.io/platforms/ruby/performance/sampling/). The default **config.sentryTracesSampleRate** is **0.1**.
352
+
353
+ * Renamed `config.serializer_globs`to `config.dependency_globs`. [PR 165](https://github.com/shakacode/react_on_rails_pro/pull/165) by [judahmeek](https://github.com/judahmeek)
354
+ * RORP_CACHE_HIT and RORP_CACHE_KEY is returned for prerender caching, which is only when there is no fragment caching.
355
+ * Improve cache information from react_component_hash. Hash result now includes 2 new keys
356
+ - RORP_CACHE_HIT
357
+ - RORP_CACHE_KEY
358
+ Additionally, ReactOnRailsPro::Utils.printable_cache_key(cache_key) added.
359
+ * [PR 170](https://github.com/shakacode/react_on_rails_pro/pull/170) by [justin808](https://github.com/justin808).
287
360
 
288
361
  ## [2.0.0.beta.0] - 2020-12-03
289
- * Renamed VM Renderer to Node Renderer. [PR 140](https://github.com/shakacode/react_on_rails_pro/pull/140) by [justin808](https://github.com/justin808).
362
+
363
+ - Renamed VM Renderer to Node Renderer. [PR 140](https://github.com/shakacode/react_on_rails_pro/pull/140) by [justin808](https://github.com/justin808).
290
364
 
291
365
  ### Fixed
366
+
292
367
  - Cache key not stable between machines same deploy. [PR 159](https://github.com/shakacode/react_on_rails_pro/pull/136) by [justin808](https://github.com/justin808).
293
368
 
294
369
  ## [1.5.6] - 2020-12-02
370
+
295
371
  Switched to releases being published packages.
296
372
 
297
373
  ### Fixed
374
+
298
375
  - Minor fix to error messages
299
376
  - Updated gem and package dependencies
300
377
 
301
378
  ## [1.5.5] - 2020-08-17
379
+
302
380
  ### Added
381
+
303
382
  - Added request retrying in case of timeouts. [PR 136](https://github.com/shakacode/react_on_rails_pro/pull/136) by [ashgaliyev](https://github.com/ashgaliyev).
304
383
 
305
384
  ## [1.5.4] - 2020-07-22
385
+
306
386
  ### Added
387
+
307
388
  - Added support for Github packages. To switch from using the Github private repo with a tag, request a new auth token from justin@shakacode.com.
308
389
 
309
390
  ## [1.5.3] - 2020-06-30
391
+
310
392
  ### Added
393
+
311
394
  - Added sentry support. [PR 132](https://github.com/shakacode/react_on_rails_pro/pull/132) by [ashgaliyev](https://github.com/ashgaliyev).
312
395
 
313
396
  ## [1.5.2] - 2020-06-25
397
+
314
398
  ### Improved
399
+
315
400
  - Added `process` and `Buffer` to the context if `suppportModules === true`. [PR 131](https://github.com/shakacode/react_on_rails_pro/pull/131) by [ashgaliyev](https://github.com/ashgaliyev).
316
401
 
317
402
  ## [1.5.1] - 2020-03-25
403
+
318
404
  ### Improved
319
- - config.assets_to_copy can take a single value in addition to an array. [PR 122](https://github.com/shakacode/react_on_rails_pro/pull/122 ) [justin808](https://github.com/justin808).
320
- - Better handling for an invalid renderer_url configuration. [PR 109](https://github.com/shakacode/react_on_rails_pro/pull/109 ) [justin808](https://github.com/justin808).
405
+
406
+ - config.assets_to_copy can take a single value in addition to an array. [PR 122](https://github.com/shakacode/react_on_rails_pro/pull/122) [justin808](https://github.com/justin808).
407
+ - Better handling for an invalid renderer_url configuration. [PR 109](https://github.com/shakacode/react_on_rails_pro/pull/109) [justin808](https://github.com/justin808).
321
408
 
322
409
  ## [1.5.0] - 2020-03-17
410
+
323
411
  ### Added
412
+
324
413
  - Added support for loadable components SSR [PR 112](https://github.com/shakacode/react_on_rails_pro/pull/112) and [PR 118](https://github.com/shakacode/react_on_rails_pro/pull/118) by [ashgaliyev](https://github.com/ashgaliyev) and [justin808](https://github.com/justin808).
325
414
  - New option added to the node-renderer: `supportModules`. This setting is necessary for using [loadable-components](https://github.com/gregberge/loadable-components/). See [Server-side rendering with code-splitting using Loadable/Components](https://github.com/shakacode/react_on_rails_pro/blob/master/docs/code-splitting-loadable-components.md) for more detailss.
326
415
 
327
416
  ### Changed
417
+
328
418
  - Updated to bundler V2. [PR 114](https://github.com/shakacode/react_on_rails_pro/pull/114) by [justin808](https://github.com/justin808).
329
419
  - Updated spec dummy. [PR 115](https://github.com/shakacode/react_on_rails_pro/pull/115) by [justin808](https://github.com/justin808).
330
420
 
@@ -333,28 +423,39 @@ Switched to releases being published packages.
333
423
  ## [1.4.4] - 2019-06-10
334
424
 
335
425
  ### Fixed
426
+
336
427
  - Improve error handling. [PR 103](https://github.com/shakacode/react_on_rails_pro/pull/103) by [justin808](https://github.com/justin808).
337
428
 
338
429
  ## [1.4.3] - 2019-06-06
430
+
339
431
  ### Fixed
432
+
340
433
  - Lock timeouts and update error handling. Previously, many renderer errors resulted in crashes rather than a fallback
341
- to ExecJS. Also, lengthened the lock timeouts for the bundle lock. [PR 100](https://github.com/shakacode/react_on_rails_pro/pull/100) by [justin808](https://github.com/justin808).
434
+ to ExecJS. Also, lengthened the lock timeouts for the bundle lock. [PR 100](https://github.com/shakacode/react_on_rails_pro/pull/100) by [justin808](https://github.com/justin808).
342
435
  - Added check to skip pre-render cache for components rendered by `cache_react_component` and `cache_react_component_hash` because this saves on cache storage, thus improving overall performance. [PR 91](https://github.com/shakacode/react_on_rails_pro/pull/91) by [ashgaliyev](https://github.com/ashgaliyev).
343
436
 
344
437
  ## [1.4.2] - 2019-05-26
438
+
345
439
  ### Changed
440
+
346
441
  - Removed babel processing. Node v12 recommended. [PR 93](https://github.com/shakacode/react_on_rails_pro/pull/91) by [ashgaliyev](https://github.com/ashgaliyev).
347
442
 
348
443
  ## [1.4.1] - 2019-03-19
444
+
349
445
  ### Fixed
446
+
350
447
  - `cached_react_component_hash` incorrectly failed to include the bundle_hash unless `prerender: true` was used as an option. This fix addresses that issue. There is no need to use `prerender: true` as generating a hash only makes sense if prerendering is done. [PR 82](https://github.com/shakacode/react_on_rails_pro/pull/82) by [justin808](https://github.com/justin808).
351
448
 
352
449
  ## [1.4.0] - 2019-01-15
450
+
353
451
  ### Added
452
+
354
453
  - Added config option `honeybadgerApiKey` or ENV value `HONEYBADGER_API_KEY` so that errors can flow to HoneyBadger. [PR 93](https://github.com/shakacode/react_on_rails_pro/pull/75) by [ashgaliyev](https://github.com/ashgaliyev).
355
454
 
356
455
  ## [1.3.1] - 2018-12-26
456
+
357
457
  ### Added
458
+
358
459
  - Added option `cache_options:` to the cached_react_component_hash and cached_react_component
359
460
  a hash including values such as :compress, :expires_in, :race_condition_ttl
360
461
  - Added option `:if`, `:unless` to the cached_react_component_hash and cached_react_component
@@ -365,49 +466,61 @@ to ExecJS. Also, lengthened the lock timeouts for the bundle lock. [PR 100](http
365
466
  Above are in [PR 82](https://github.com/shakacode/react_on_rails_pro/pull/82) by [justin808](https://github.com/justin808)
366
467
 
367
468
  ## [1.3.0] - 2018-12-18
368
- * **Migration:** react_on_rails must be updated to version >= 11.2.1.
469
+
470
+ - **Migration:** react_on_rails must be updated to version >= 11.2.1.
369
471
 
370
472
  ### Added
473
+
371
474
  - Added `config.ssr_pre_hook_js` to call some JavaScript to clear out state from libraries that
372
475
  misbehave during server Rendering. For example, suppose that we had to call `SomeLibrary.clearCache()`
373
476
  between calls to server renderer. Note, SomeLibrary needs to be globally exposed in the server
374
477
  rendering webpack bundle.
375
478
 
376
479
  ## [1.2.1] - 2018-08-26
480
+
377
481
  ### Fixed
378
- * Major overhaul of the node-renderer. Improved logging and error handling, ready for async
379
- * Fixed race conditions with init of renderer
380
- * Improved logging
381
- * Ensuring all places that an error will result in a 400 sent to the rails server.
382
- * Handle threading issue with writing the bundle by using a lockfile.
383
- * Change internals so that async rendering is ready.
384
- * Add debugging instructions
385
- * Promisified some node APIs and wrote everything with careful async/await syntax, ensuring that errors are always caught and that promises are always returned from the async functions.
482
+
483
+ - Major overhaul of the node-renderer. Improved logging and error handling, ready for async
484
+ - Fixed race conditions with init of renderer
485
+ - Improved logging
486
+ - Ensuring all places that an error will result in a 400 sent to the rails server.
487
+ - Handle threading issue with writing the bundle by using a lockfile.
488
+ - Change internals so that async rendering is ready.
489
+ - Add debugging instructions
490
+ - Promisified some node APIs and wrote everything with careful async/await syntax, ensuring that errors are always caught and that promises are always returned from the async functions.
386
491
 
387
492
  Above are in [PR 65](https://github.com/shakacode/react_on_rails_pro/pull/65) by [justin808](https://github.com/justin808).
388
493
 
389
494
  ## [1.2.0]
390
- * **Migration:** react_on_rails must be updated to version 11.1.x+.
495
+
496
+ - **Migration:** react_on_rails must be updated to version 11.1.x+.
391
497
 
392
498
  ### Added
499
+
393
500
  - Added `serializer_globs` configuration value to add a MD5 of serializer files to the cache key for fragment caching. [#60](https://github.com/shakacode/react_on_rails_pro/pull/60) by [justin808](https://github.com/justin808).
394
501
  - More efficient calculation of the request digest. Previously, we would do a regexp replace to filter out the dom node id because if was randomized. React on Rails 11.1.x provides a default to say not to randomize. [#64](https://github.com/shakacode/react_on_rails_pro/pull/64) by [justin808](https://github.com/justin808).
395
502
 
396
503
  ### Fixed
504
+
397
505
  - Fix for truncation of code and better error logs. This fixes the issue with truncation of the code when over 1 MB due to large props. Max changes to 10 MB. [#63](https://github.com/shakacode/react_on_rails_pro/pull/63) by [justin808](https://github.com/justin808).
398
506
 
399
507
  ## [1.1.0]
508
+
400
509
  ### Added
510
+
401
511
  - Added `tracing` configuration flag to time server rendering calls
402
512
 
403
513
  ### Changed
514
+
404
515
  - Default usage of PORT and LOG_LEVEL for the node-renderer bin file changed to use values RENDERER_PORT and RENDERER_LOG_LEVEL
405
516
  - Default Rails config.server_render is "ExecJS". Previously was "VmRenderer"
406
517
 
407
518
  Above changes in [PR 52](https://github.com/shakacode/react_on_rails_pro/pull/52) by [justin808](https://github.com/justin808).
408
519
 
409
520
  ## [1.0.0]
521
+
410
522
  ### Added
523
+
411
524
  - support for node renderer & fallback renderer
412
525
  - support for javascript evaluation caching
413
526
  - advanced error handling
@@ -347,24 +347,13 @@ Contact Justin Gordon, [justin@shakacode.com](mailto:justin@shakacode.com) for r
347
347
 
348
348
  ## Prerequisites
349
349
 
350
- You need authentication for both public and private package registries:
350
+ You need authentication for public package registries:
351
351
 
352
352
  **Public packages (npmjs.org + rubygems.org):**
353
353
  - NPM: Run `npm login`
354
354
  - RubyGems: Standard credentials via `gem push`
355
355
 
356
- **Private packages (GitHub Packages):**
357
- - Get a GitHub personal access token with `write:packages` scope
358
- - Configure `~/.npmrc`:
359
- ```ini
360
- //npm.pkg.github.com/:_authToken=<TOKEN>
361
- always-auth=true
362
- ```
363
- - Configure `~/.gem/credentials`:
364
- ```yaml
365
- :github: Bearer <GITHUB_TOKEN>
366
- ```
367
- - Set environment variable: `export GITHUB_TOKEN=<TOKEN>`
356
+ All React on Rails and React on Rails Pro packages are now published publicly to npmjs.org and RubyGems.org.
368
357
 
369
358
  ## Release Command
370
359
 
@@ -50,6 +50,7 @@ group :development, :test do
50
50
  gem 'pry-rails' # Causes rails console to open pry. `DISABLE_PRY_RAILS=1 rails c` can still open with IRB
51
51
  gem 'pry-theme' # An easy way to customize Pry colors via theme files
52
52
 
53
+ gem "rbs", require: false
53
54
  gem "rubocop", "1.36.0", require: false
54
55
  gem 'rubocop-performance', "1.15.0", require: false
55
56
  gem 'rubocop-rspec', "2.13.2", require: false