react_on_rails_pro 16.2.1 → 16.3.0.rc.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c44a87b4e8401b0cdb0c0b8740b014635e337fc6a4c39b045cfd308dae75f027
4
- data.tar.gz: 73528efb629e2be5b53fba3a26899117b4c31cbe8a001081c47528a059117198
3
+ metadata.gz: 9bcbae8e9b968c6c6b8b9f707f9c7595015c56af77c29e3b0c069063469bd812
4
+ data.tar.gz: a084d5851b315254056a147320f70c14a2052fe5c4dee0244171d0281ae75053
5
5
  SHA512:
6
- metadata.gz: '0483f856ff441114ecf28309e76d6f7478356122e93e77eba41bc7de1a30bc328392e9434b1e67b33c42760e584506cbda6c2996990d674c67e158b5d5080d45'
7
- data.tar.gz: 28f79e61ec4caf549487fdda8ac2884704bf4e9fa4eb7deff073ac454044059a3a53bd129f8cb5c9a96bcabc807fb8339fdc6550b9cc51711555593fe32c08e0
6
+ metadata.gz: 0a5a0c698d58a49260e31acd91ac9cc8d7135229e838dd890df0aa415bec027a39db2afaee1257218fecf0e85c82c468b9d37bd92b5a27abbbd78bc16ce2500f
7
+ data.tar.gz: 520c471a7c2bbd168664f2d719d1ca3e8dd1e8d028d8bc2b8ebadccd1fe633cf6bdfa3e9bb4adca916d351ecf22f42ddc58db00fe6976353913700ed16ecc393
data/CHANGELOG.md CHANGED
@@ -6,8 +6,8 @@ All notable changes to this project will be documented in this file. Items under
6
6
 
7
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`).
8
8
 
9
- 1. **Gem**: `3.0.0.rc.1`
10
- 2. **Package**: `3.0.0-rc.1`
9
+ 1. **Gem**: `X.X.X.beta.X`
10
+ 2. **Package**: `X.X.X-beta.X`
11
11
 
12
12
  You can find the **package** version numbers from this repo's tags and below in this file.
13
13
 
@@ -19,9 +19,15 @@ You can find the **package** version numbers from this repo's tags and below in
19
19
 
20
20
  Changes since the last non-beta release.
21
21
 
22
- ### [v16.2.0.rc.0] - 2025-12-29
22
+ ### Changed
23
23
 
24
- Changes since the last non-beta release.
24
+ - **License-Optional Attribution Model**: React on Rails Pro now works without a license for evaluation, development, testing, and CI/CD. A paid license is only required for production deployments. Added `plan` field validation to both Ruby and Node.js license validators — only `"paid"` plan (or no plan field for backwards compatibility) is accepted. Old free licenses are now treated as invalid. Documentation overhauled across README and LICENSE_SETUP guides; removed CI_SETUP.md (CI needs no license configuration). [PR 2324](https://github.com/shakacode/react_on_rails/pull/2324) by [AbanoubGhadban](https://github.com/AbanoubGhadban).
25
+
26
+ ### Added
27
+
28
+ - **Node Renderer Master/Worker Exports**: Added public `master` and `worker` exports to `react-on-rails-pro-node-renderer` package, allowing users to import from `react-on-rails-pro-node-renderer/master` and `react-on-rails-pro-node-renderer/worker`. [PR 2326](https://github.com/shakacode/react_on_rails/pull/2326) by [justin808](https://github.com/justin808).
29
+
30
+ ## [16.2.0] - 2026-01-14
25
31
 
26
32
  ### Improved
27
33
 
@@ -34,7 +40,6 @@ Changes since the last non-beta release.
34
40
  - Added `cached_stream_react_component` helper method, similar to `cached_react_component` but for streamed components.
35
41
  - **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).
36
42
  - **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`:
37
-
38
43
  - `rsc_bundle_js_file` - Path to the RSC bundle file
39
44
  - `react_server_client_manifest_file` - Path to the React server client manifest
40
45
  - `react_client_manifest_file` - Path to the React client manifest
@@ -42,7 +47,6 @@ Changes since the last non-beta release.
42
47
  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.
43
48
 
44
49
  - **Streaming View Helpers Now Pro-Exclusive**: The following view helpers are now defined exclusively in the Pro gem:
45
-
46
50
  - `stream_react_component` - Progressive SSR using React 18+ streaming
47
51
  - `rsc_payload_react_component` - RSC payload rendering
48
52
 
@@ -66,8 +70,6 @@ Changes since the last non-beta release.
66
70
 
67
71
  - **Body Duplication Bug On Streaming**: Fixed a bug that happens while streaming if the node renderer connection closed after streaming some chunks to the client. [PR 1995](https://github.com/shakacode/react_on_rails/pull/1995) by [AbanoubGhadban](https://github.com/AbanoubGhadban).
68
72
 
69
- ### Changed
70
-
71
73
  ### Deprecated
72
74
 
73
75
  - **Node Renderer Configuration**: Renamed `bundlePath` configuration option to `serverBundleCachePath` in the node renderer to better describe its purpose and avoid confusion with Shakapacker's public bundle path. The old `bundlePath` option continues to work with deprecation warnings. Both `RENDERER_SERVER_BUNDLE_CACHE_PATH` (new) and `RENDERER_BUNDLE_PATH` (deprecated) environment variables are supported. [PR 2008](https://github.com/shakacode/react_on_rails/pull/2008) by [justin808](https://github.com/justin808).
@@ -121,7 +123,6 @@ Changes since the last non-beta release.
121
123
  ### Changed
122
124
 
123
125
  - [PR 511](https://github.com/shakacode/react_on_rails_pro/pull/511) by [Romex91](https://github.com/Romex91)
124
-
125
126
  - Set `bodyLimit` to 100 MB by default to fix error 413.
126
127
  - Add `fastifyServerOptions` to the config
127
128
 
@@ -268,7 +269,6 @@ React 18 is now supported! Check the [React on Rails CHANGELOG.md](https://githu
268
269
  ### Added
269
270
 
270
271
  - [PR 220](https://github.com/shakacode/react_on_rails_pro/pull/220) by [justin808](https://github.com/justin808).
271
-
272
272
  - **Add `ssr_timeout` configuration** so the Rails server will not wait more than this many seconds for a SSR request to return once issued.
273
273
  - Change default for `renderer_use_fallback_exec_js` to `false`.
274
274
  - Change default log level to info.
@@ -547,9 +547,8 @@ Above changes in [PR 52](https://github.com/shakacode/react_on_rails_pro/pull/52
547
547
  - support for javascript evaluation caching
548
548
  - advanced error handling
549
549
 
550
- [HEAD compared to 3.2.1]: https://github.com/shakacode/react_on_rails_pro/compare/3.3.1...HEAD
551
- [Unreleased]: https://github.com/shakacode/react_on_rails/compare/v16.2.0.rc.0...master
552
- [v16.2.0.rc.0]: https://github.com/shakacode/react_on_rails/compare/16.1.1...v16.2.0.rc.0
550
+ [Unreleased]: https://github.com/shakacode/react_on_rails/compare/v16.2.0...master
551
+ [16.2.0]: https://github.com/shakacode/react_on_rails/compare/v16.2.0.beta.0...v16.2.0
553
552
  [4.0.0-rc.15]: https://github.com/shakacode/react_on_rails_pro/compare/4.0.0-rc.14...4.0.0-rc.15
554
553
  [4.0.0.rc.11]: https://github.com/shakacode/react_on_rails_pro/compare/4.0.0-rc.9...4.0.0-rc.11
555
554
  [4.0.0.rc.9]: https://github.com/shakacode/react_on_rails_pro/compare/4.0.0-rc.6...4.0.0-rc.9
@@ -6,11 +6,9 @@ eval_gemfile File.expand_path("../Gemfile.shared_dev_dependencies", __dir__)
6
6
 
7
7
  git_source(:github) { |repo| "https://github.com/#{repo}.git" }
8
8
 
9
- ruby '3.3.7'
10
-
11
9
  gem "react_on_rails", path: "../"
12
10
 
13
- gem "shakapacker", "9.4.0"
11
+ gem "shakapacker", "9.5.0"
14
12
  gem "bootsnap", require: false
15
13
  gem "rails", "~> 7.1"
16
14
  gem "puma", "~> 6"
data/Gemfile.lock CHANGED
@@ -9,7 +9,7 @@ GIT
9
9
  PATH
10
10
  remote: ..
11
11
  specs:
12
- react_on_rails (16.2.1)
12
+ react_on_rails (16.3.0.rc.1)
13
13
  addressable
14
14
  connection_pool
15
15
  execjs (~> 2.5)
@@ -20,7 +20,7 @@ PATH
20
20
  PATH
21
21
  remote: .
22
22
  specs:
23
- react_on_rails_pro (16.2.1)
23
+ react_on_rails_pro (16.3.0.rc.1)
24
24
  addressable
25
25
  async (>= 2.6)
26
26
  connection_pool
@@ -29,7 +29,7 @@ PATH
29
29
  httpx (~> 1.5)
30
30
  jwt (~> 2.7)
31
31
  rainbow
32
- react_on_rails (= 16.2.1)
32
+ react_on_rails (= 16.3.0.rc.1)
33
33
 
34
34
  GEM
35
35
  remote: https://rubygems.org/
@@ -119,7 +119,7 @@ GEM
119
119
  traces (~> 0.18)
120
120
  base64 (0.3.0)
121
121
  benchmark (0.5.0)
122
- bigdecimal (3.3.1)
122
+ bigdecimal (4.0.1)
123
123
  bindex (0.8.1)
124
124
  bootsnap (1.18.3)
125
125
  msgpack (~> 1.2)
@@ -137,13 +137,13 @@ GEM
137
137
  capybara-screenshot (1.0.26)
138
138
  capybara (>= 1.0, < 4)
139
139
  launchy
140
- cgi (0.5.0)
140
+ cgi (0.5.1)
141
141
  childprocess (5.0.0)
142
142
  coderay (1.1.3)
143
143
  commonmarker (1.1.4-arm64-darwin)
144
144
  commonmarker (1.1.4-x86_64-darwin)
145
145
  commonmarker (1.1.4-x86_64-linux)
146
- concurrent-ruby (1.3.5)
146
+ concurrent-ruby (1.3.6)
147
147
  connection_pool (3.0.2)
148
148
  console (1.34.2)
149
149
  fiber-annotation
@@ -159,13 +159,13 @@ GEM
159
159
  bigdecimal
160
160
  rexml
161
161
  crass (1.0.6)
162
- date (3.5.0)
162
+ date (3.5.1)
163
163
  diff-lcs (1.5.1)
164
164
  docile (1.4.0)
165
165
  drb (2.2.3)
166
166
  equivalent-xml (0.6.0)
167
167
  nokogiri (>= 1.4.3)
168
- erb (6.0.0)
168
+ erb (6.0.1)
169
169
  erubi (1.13.1)
170
170
  execjs (2.10.0)
171
171
  fakefs (2.8.0)
@@ -190,11 +190,11 @@ GEM
190
190
  http-2 (1.1.1)
191
191
  httpx (1.6.3)
192
192
  http-2 (>= 1.0.0)
193
- i18n (1.14.7)
193
+ i18n (1.14.8)
194
194
  concurrent-ruby (~> 1.0)
195
- io-console (0.8.1)
195
+ io-console (0.8.2)
196
196
  io-event (1.14.2)
197
- irb (1.15.3)
197
+ irb (1.16.0)
198
198
  pp (>= 0.6.0)
199
199
  rdoc (>= 4.0.0)
200
200
  reline (>= 0.4.2)
@@ -216,7 +216,7 @@ GEM
216
216
  rb-fsevent (~> 0.10, >= 0.10.3)
217
217
  rb-inotify (~> 0.9, >= 0.9.10)
218
218
  logger (1.7.0)
219
- loofah (2.24.1)
219
+ loofah (2.25.0)
220
220
  crass (~> 1.0.2)
221
221
  nokogiri (>= 1.12.0)
222
222
  mail (2.9.0)
@@ -230,7 +230,8 @@ GEM
230
230
  method_source (1.1.0)
231
231
  metrics (0.15.0)
232
232
  mini_mime (1.1.5)
233
- minitest (5.26.2)
233
+ minitest (6.0.1)
234
+ prism (~> 1.5)
234
235
  mize (0.4.1)
235
236
  protocol (~> 2.0)
236
237
  msgpack (1.7.2)
@@ -246,11 +247,11 @@ GEM
246
247
  net-smtp (0.5.1)
247
248
  net-protocol
248
249
  nio4r (2.7.5)
249
- nokogiri (1.18.10-arm64-darwin)
250
+ nokogiri (1.19.0-arm64-darwin)
250
251
  racc (~> 1.4)
251
- nokogiri (1.18.10-x86_64-darwin)
252
+ nokogiri (1.19.0-x86_64-darwin)
252
253
  racc (~> 1.4)
253
- nokogiri (1.18.10-x86_64-linux-gnu)
254
+ nokogiri (1.19.0-x86_64-linux-gnu)
254
255
  racc (~> 1.4)
255
256
  package_json (0.2.0)
256
257
  parallel (1.27.0)
@@ -274,7 +275,7 @@ GEM
274
275
  pry (>= 0.13.0)
275
276
  pry-theme (1.3.1)
276
277
  coderay (~> 1.1)
277
- psych (5.2.6)
278
+ psych (5.3.1)
278
279
  date
279
280
  stringio
280
281
  public_suffix (7.0.0)
@@ -329,7 +330,7 @@ GEM
329
330
  ffi (~> 1.0)
330
331
  rbs (3.9.5)
331
332
  logger
332
- rdoc (6.16.1)
333
+ rdoc (7.1.0)
333
334
  erb
334
335
  psych (>= 4.0.0)
335
336
  tsort
@@ -415,7 +416,7 @@ GEM
415
416
  websocket (~> 1.0)
416
417
  semantic_range (3.1.0)
417
418
  sexp_processor (4.17.1)
418
- shakapacker (9.4.0)
419
+ shakapacker (9.5.0)
419
420
  activesupport (>= 5.2)
420
421
  package_json
421
422
  rack-proxy (>= 0.6.1)
@@ -440,12 +441,12 @@ GEM
440
441
  sqlite3 (1.7.3-arm64-darwin)
441
442
  sqlite3 (1.7.3-x86_64-darwin)
442
443
  sqlite3 (1.7.3-x86_64-linux)
443
- stringio (3.1.9)
444
+ stringio (3.2.0)
444
445
  sync (0.5.0)
445
446
  term-ansicolor (1.10.2)
446
447
  mize
447
448
  tins (~> 1.0)
448
- thor (1.4.0)
449
+ thor (1.5.0)
449
450
  tilt (2.4.0)
450
451
  timeout (0.4.4)
451
452
  tins (1.33.0)
@@ -482,7 +483,7 @@ GEM
482
483
  xpath (3.2.0)
483
484
  nokogiri (~> 1.8)
484
485
  yard (0.9.36)
485
- zeitwerk (2.7.3)
486
+ zeitwerk (2.7.4)
486
487
 
487
488
  PLATFORMS
488
489
  arm64-darwin-24
@@ -530,7 +531,7 @@ DEPENDENCIES
530
531
  sass-rails
531
532
  scss_lint
532
533
  selenium-webdriver (= 4.9.0)
533
- shakapacker (= 9.4.0)
534
+ shakapacker (= 9.5.0)
534
535
  spring
535
536
  spring-watcher-listen
536
537
  sprockets
@@ -541,8 +542,5 @@ DEPENDENCIES
541
542
  webmock
542
543
  yard
543
544
 
544
- RUBY VERSION
545
- ruby 3.3.7p123
546
-
547
545
  BUNDLED WITH
548
546
  2.5.4
data/LICENSE_SETUP.md CHANGED
@@ -1,35 +1,53 @@
1
1
  # React on Rails Pro License Setup
2
2
 
3
- This document explains how to configure your React on Rails Pro license.
3
+ This document explains how to configure your React on Rails Pro license for production use.
4
4
 
5
- ## Getting a FREE License
5
+ ## License-Optional Model
6
6
 
7
- **All users need a license** - even for development and evaluation!
7
+ React on Rails Pro works **without a license** for evaluation, development, testing, and CI/CD. No registration or license key is needed to get started.
8
8
 
9
- ### Get Your FREE Evaluation License (3 Months)
9
+ **A paid license is required only for production deployments.**
10
10
 
11
- 1. Visit [https://shakacode.com/react-on-rails-pro](https://shakacode.com/react-on-rails-pro)
12
- 2. Register with your email
13
- 3. Receive your FREE 3-month evaluation license immediately
14
- 4. Use it for development, testing, and evaluation
11
+ | Environment | License Required? |
12
+ | ------------------ | ----------------- |
13
+ | Development | No |
14
+ | Test | No |
15
+ | CI/CD | No |
16
+ | Staging (non-prod) | No |
17
+ | Production | **Yes** (paid) |
15
18
 
16
- **No credit card required!**
19
+ ## Upgrading from Previous Versions
17
20
 
18
- **⚠️ Important: The free 3-month evaluation license is intended for personal, educational, and evaluation purposes only. It should NOT be used for production deployments. Production use requires a paid license.**
21
+ If you're upgrading from an earlier version of React on Rails Pro, note these changes:
19
22
 
20
- ## License Types
23
+ ### Breaking Changes
21
24
 
22
- ### Free License
23
- - **Duration**: 3 months
24
- - **Usage**: Personal, educational, and evaluation purposes only (development, testing, evaluation, CI/CD) - **NOT for production**
25
- - **Cost**: FREE - just register with your email
26
- - **Renewal**: Get a new free license or upgrade to paid
25
+ - **`ReactOnRailsPro::Utils.licensed?` has been removed** — Use `ReactOnRailsPro::LicenseValidator.license_status == :valid` instead
26
+ - **`ReactOnRailsPro::LicenseValidator.license_data` has been removed** Only `license_status` and `license_expiration` are available
27
+ - **The app will no longer crash on invalid/missing licenses** License issues are now logged as warnings in production and info in non-production environments
27
28
 
28
- ### Paid License
29
- - **Duration**: 1 year (or longer)
30
- - **Usage**: Production deployment
31
- - **Cost**: Subscription-based
32
- - **Support**: Includes professional support
29
+ ### Migration Steps
30
+
31
+ 1. **Remove any custom error handling for license exceptions** — The license validator no longer raises exceptions
32
+ 2. **Update license status checks:**
33
+
34
+ ```ruby
35
+ # Old (removed)
36
+ ReactOnRailsPro::Utils.licensed?
37
+
38
+ # New
39
+ ReactOnRailsPro::LicenseValidator.license_status == :valid
40
+ ```
41
+
42
+ 3. **Remove any code that accessed `license_data`** — This method is no longer available
43
+
44
+ ### Behavior Changes
45
+
46
+ - **Missing license**: Previously raised an error in production. Now logs a warning and continues running.
47
+ - **Expired license**: Previously raised an error. Now logs a warning and continues running.
48
+ - **Invalid license**: Previously raised an error. Now logs a warning and continues running.
49
+
50
+ This change allows your application to start even with license issues, giving you time to resolve them without downtime.
33
51
 
34
52
  ## Installation
35
53
 
@@ -44,17 +62,14 @@ export REACT_ON_RAILS_PRO_LICENSE="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
44
62
  **For different environments:**
45
63
 
46
64
  ```bash
47
- # Development (.env file)
48
- REACT_ON_RAILS_PRO_LICENSE=your_license_token_here
49
-
50
65
  # Production (Heroku)
51
66
  heroku config:set REACT_ON_RAILS_PRO_LICENSE="your_token"
52
67
 
53
68
  # Production (Docker)
54
69
  # Add to docker-compose.yml or Dockerfile ENV
55
70
 
56
- # CI/CD
57
- # Add to your CI environment variables (see CI_SETUP.md)
71
+ # CI/CD (optional — CI works without a license)
72
+ # Add to your CI environment variables if needed
58
73
  ```
59
74
 
60
75
  ### Method 2: Configuration File
@@ -82,126 +97,76 @@ The license is validated at multiple points:
82
97
  2. **Node Renderer**: When the Node renderer process starts
83
98
  3. **Browser Package**: Trusts server-side validation (via `railsContext.rorPro`)
84
99
 
85
- ### All Environments Require Valid License
86
-
87
- React on Rails Pro requires a valid license in **all environments**:
88
-
89
- - ✅ **Development**: Requires license (use FREE license) - **Fails immediately on expiration**
90
- - ✅ **Test**: Requires license (use FREE license) - **Fails immediately on expiration**
91
- - ✅ **CI/CD**: Requires license (use FREE license) - **Fails immediately on expiration**
92
- - ✅ **Production**: Requires license (use paid license) - **1-month grace period after expiration**
93
-
94
- Get your FREE evaluation license in 30 seconds - no credit card required!
95
-
96
- ### Production Grace Period
97
-
98
- **Production environments only** receive a **1-month grace period** when a license expires:
99
-
100
- - ⚠️ **During grace period**: Application continues to run but logs ERROR messages on every startup
101
- - ❌ **After grace period**: Application fails to start (same as dev/test)
102
- - 🔔 **Warning messages**: Include days remaining in grace period
103
- - ✅ **Development/Test**: No grace period - fails immediately (helps catch expiration early)
104
-
105
- **Important**: The grace period is designed to give production deployments time to renew, but you should:
106
- 1. Monitor your logs for license expiration warnings
107
- 2. Renew licenses before they expire
108
- 3. Test license renewal in development/staging first
100
+ When no license is present, the application runs in **unlicensed mode**. This is fine for development, testing, and CI/CD. Production deployments should always have a valid paid license.
109
101
 
110
102
  ## Team Setup
111
103
 
112
104
  ### For Development Teams
113
105
 
114
- Each developer should:
106
+ No license setup is needed for development. Developers can install and use React on Rails Pro immediately.
115
107
 
116
- 1. Get their own FREE license from [shakacode.com](https://shakacode.com/react-on-rails-pro)
117
- 2. Store it locally using one of the methods above
118
- 3. Ensure `config/react_on_rails_pro_license.key` is in your `.gitignore`
108
+ For production deployments, share a paid license via environment variable or configuration file.
119
109
 
120
110
  ### For CI/CD
121
111
 
122
- Set up CI with a license (see [CI_SETUP.md](./CI_SETUP.md) for detailed instructions):
123
-
124
- 1. Get a FREE license (can use any team member's or create `ci@yourcompany.com`)
125
- 2. Add to CI environment variables as `REACT_ON_RAILS_PRO_LICENSE`
126
- 3. Renew every 3 months (or use a paid license)
127
-
128
- **Recommended**: Use GitHub Secrets, GitLab CI Variables, or your CI provider's secrets management.
112
+ CI/CD environments work without a license. If your CI pipeline deploys to production, ensure the production environment has a valid paid license configured.
129
113
 
130
114
  ## Verification
131
115
 
132
116
  ### Verify License is Working
133
117
 
134
118
  **Ruby Console:**
119
+
135
120
  ```ruby
136
121
  rails console
137
122
  > ReactOnRails::Utils.react_on_rails_pro?
138
123
  # Should return: true
139
124
  ```
140
125
 
141
- **Note:** With startup validation enabled, your Rails app won't start with an invalid license. If you can run the Rails console, your license is valid.
142
-
143
- **Check License Details:**
144
- ```ruby
145
- > ReactOnRailsPro::LicenseValidator.license_data
146
- # Shows: {"sub"=>"your@email.com", "exp"=>1234567890, "plan"=>"free", ...}
147
- ```
148
-
149
126
  **Browser JavaScript Console:**
127
+
150
128
  ```javascript
151
- window.railsContext.rorPro
129
+ window.railsContext.rorPro;
152
130
  // Should return: true
153
131
  ```
154
132
 
155
133
  ## Troubleshooting
156
134
 
157
- ### Error: "No license found"
135
+ ### Warning: "No license found"
158
136
 
159
- **Solutions:**
160
- 1. Verify environment variable: `echo $REACT_ON_RAILS_PRO_LICENSE`
161
- 2. Check config file exists: `ls config/react_on_rails_pro_license.key`
162
- 3. **Get a FREE license**: [https://shakacode.com/react-on-rails-pro](https://shakacode.com/react-on-rails-pro)
137
+ This is expected behavior in development, test, and CI environments. The application will run in unlicensed mode. For production, ensure the `REACT_ON_RAILS_PRO_LICENSE` environment variable is set.
163
138
 
164
139
  ### Error: "Invalid license signature"
165
140
 
166
141
  **Causes:**
142
+
167
143
  - License token was truncated or modified
168
144
  - Wrong license format (must be complete JWT token)
169
145
 
170
146
  **Solutions:**
147
+
171
148
  1. Ensure you copied the complete license (starts with `eyJ`)
172
149
  2. Check for extra spaces or newlines
173
- 3. Get a new FREE license if corrupted
150
+ 3. Contact [support@shakacode.com](mailto:support@shakacode.com) for a replacement
174
151
 
175
152
  ### Error: "License has expired"
176
153
 
177
- **What happens:**
178
- - **Development/Test/CI**: Application fails to start immediately
179
- - **Production**: 1-month grace period with ERROR logs, then fails to start
180
-
181
154
  **Solutions:**
182
- 1. **Free License**: Get a new 3-month FREE license
183
- 2. **Paid License**: Contact support to renew
184
- 3. Visit: [https://shakacode.com/react-on-rails-pro](https://shakacode.com/react-on-rails-pro)
185
155
 
186
- **If you see grace period warnings in production:**
187
- - You have time to renew, but don't wait!
188
- - The warning shows how many days remain
189
- - Plan your license renewal before the grace period ends
156
+ 1. Contact [support@shakacode.com](mailto:support@shakacode.com) to renew your paid license
157
+ 2. Update the `REACT_ON_RAILS_PRO_LICENSE` environment variable with the new token
190
158
 
191
- ### Error: "License is missing required expiration field"
159
+ ### Error: "License plan is not valid for production use"
192
160
 
193
- **Cause:** You may have an old license format
161
+ **Cause:** The license has a plan that is not authorized for production use (e.g., an old free evaluation license).
194
162
 
195
- **Solution:** Get a new FREE license from [shakacode.com](https://shakacode.com/react-on-rails-pro)
163
+ **Solution:** Purchase a paid license. Contact [justin@shakacode.com](mailto:justin@shakacode.com) for pricing.
196
164
 
197
- ### Application Won't Start
165
+ ### Error: "License is missing required expiration field"
198
166
 
199
- If your application fails to start due to license issues:
167
+ **Cause:** You may have an old or malformed license token.
200
168
 
201
- 1. **Quick fix**: Set a valid license environment variable
202
- 2. **Get FREE license**: Takes 30 seconds at [shakacode.com](https://shakacode.com/react-on-rails-pro)
203
- 3. Check logs for specific error message
204
- 4. Ensure license is accessible to all processes (Rails + Node renderer)
169
+ **Solution:** Contact [support@shakacode.com](mailto:support@shakacode.com) for a new license.
205
170
 
206
171
  ## License Technical Details
207
172
 
@@ -211,12 +176,12 @@ The license is a JWT (JSON Web Token) signed with RSA-256, containing:
211
176
 
212
177
  ```json
213
178
  {
214
- "sub": "user@example.com", // Your email (REQUIRED)
215
- "iat": 1234567890, // Issued at timestamp (REQUIRED)
216
- "exp": 1234567890, // Expiration timestamp (REQUIRED)
217
- "plan": "free", // License plan: "free" or "paid" (Optional)
218
- "organization": "Your Company", // Organization name (Optional)
219
- "iss": "api" // Issuer identifier (Optional, standard JWT claim)
179
+ "sub": "user@example.com", // Your email (REQUIRED)
180
+ "iat": 1234567890, // Issued at timestamp (REQUIRED)
181
+ "exp": 1234567890, // Expiration timestamp (REQUIRED)
182
+ "plan": "paid", // License plan (Optional only "paid" is valid for production)
183
+ "organization": "Your Company", // Organization name (Optional)
184
+ "iss": "api" // Issuer identifier (Optional, standard JWT claim)
220
185
  }
221
186
  ```
222
187
 
@@ -229,7 +194,6 @@ The license is a JWT (JSON Web Token) signed with RSA-256, containing:
229
194
 
230
195
  ### Privacy
231
196
 
232
- - We only collect email during registration
233
197
  - No usage tracking or phone-home in the license system
234
198
  - License is validated offline using cryptographic signatures
235
199
 
@@ -237,36 +201,23 @@ The license is a JWT (JSON Web Token) signed with RSA-256, containing:
237
201
 
238
202
  Need help?
239
203
 
240
- 1. **Quick Start**: Get a FREE license at [shakacode.com/react-on-rails-pro](https://shakacode.com/react-on-rails-pro)
241
- 2. **Documentation**: Check [CI_SETUP.md](./CI_SETUP.md) for CI configuration
242
- 3. **Email**: support@shakacode.com
243
- 4. **License Management**: [shakacode.com/react-on-rails-pro](https://shakacode.com/react-on-rails-pro)
204
+ 1. **Email**: support@shakacode.com
205
+ 2. **Sales**: [justin@shakacode.com](mailto:justin@shakacode.com) for pricing
244
206
 
245
207
  ## Security Best Practices
246
208
 
247
- 1. ✅ **Never commit licenses to Git** - Add `config/react_on_rails_pro_license.key` to `.gitignore`
209
+ 1. ✅ **Never commit licenses to Git** Add `config/react_on_rails_pro_license.key` to `.gitignore`
248
210
  2. ✅ **Use environment variables in production**
249
- 3. ✅ **Use CI secrets for CI/CD environments**
211
+ 3. ✅ **Use CI secrets for production deployment pipelines**
250
212
  4. ✅ **Don't share licenses publicly**
251
- 5. ✅ **Each developer gets their own FREE license**
252
- 6. ✅ **Renew before expiration** (we'll send reminders)
253
213
 
254
214
  ## FAQ
255
215
 
256
- **Q: Why do I need a license for development?**
257
- A: We provide FREE 3-month licenses so we can track usage and provide better support. Registration takes 30 seconds!
258
-
259
- **Q: Can I use a free license in production?**
260
- A: Free licenses are for evaluation only. Production deployments require a paid license.
216
+ **Q: Do I need a license for development?**
217
+ A: No. React on Rails Pro works without a license for development, testing, and evaluation.
261
218
 
262
- **Q: Can multiple developers share one license?**
263
- A: Each developer should get their own FREE license. For CI, you can share one license via environment variable.
264
-
265
- **Q: What happens when my free license expires?**
266
- A: Get a new 3-month FREE license, or upgrade to a paid license for production use.
219
+ **Q: Do I need a license for CI?**
220
+ A: No. CI/CD environments work without a license. Only production deployments require a paid license.
267
221
 
268
222
  **Q: Do I need internet to validate the license?**
269
223
  A: No! License validation is completely offline using cryptographic signatures.
270
-
271
- **Q: Is my email shared or sold?**
272
- A: Never. We only use it to send you license renewals and important updates.