react_on_rails 16.6.0.rc.1 → 16.6.0

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: 5c525aa58afae47bf65f4118b11472b00b06649b2b3eba698fa6f7b82a6a6050
4
- data.tar.gz: 2fe64e5d5ce2306b56408b26ffef471177ed33319732336f2f4d203b4917b742
3
+ metadata.gz: bd57c5ba417fed762b468a17579ea7bdf04bb314730eb62e9b2ae210fd873c9c
4
+ data.tar.gz: a860a8fafb5f17aaf1bb9f07d519a3d73bbc6f3b997b44d7398c7fce7e4c45ab
5
5
  SHA512:
6
- metadata.gz: 8e580e7e342ed62b643a5d89a8b8b9f145a3edb2e51089c240575445824b1b7c5b8d82286e477a6a8457d54ed26d64fb4a05f6a42a9cbca229e3512bfdbeddc8
7
- data.tar.gz: 95539a4061db5f32a57c0e0d0e4665ba2fea563de45686ff0fecc10d94ce28f5f043348d29af748acee96f078c9337fd805677f388c903b34b1562c90571c22d
6
+ metadata.gz: 36ac38e9d74615e2970df360ce082bbfc625624347deaf0ddddf4756c21c112a76572795652ccd94f8f0cc05e8bbf51b6499a68a36c61a0e32eac06b17268721
7
+ data.tar.gz: 6a084e79ce8b4b8b5f9328d3243d71d740a2f34291f07c57fc56e33985d75242015171fc7c15b74a36545dc40263e603ece9cb0d4d722e4d624060fb56c14726
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- react_on_rails (16.6.0.rc.1)
4
+ react_on_rails (16.6.0)
5
5
  addressable
6
6
  connection_pool
7
7
  execjs (~> 2.5)
@@ -52,29 +52,39 @@ module ReactOnRails
52
52
  # Include this module in generator classes and call setup_js_dependencies
53
53
  # to handle all JS dependency installation via package_json gem.
54
54
  module JsDependencyManager
55
+ # Third-party dependencies are pinned to ^major.0.0 ranges to prevent breaking
56
+ # changes from uncontrolled major version bumps (e.g., peer dependency conflicts)
57
+ # while still allowing minor/patch updates. Pre-1.0 packages are left bare since
58
+ # ^0.x ranges pin to the minor version, which is too narrow.
59
+ # Exception: SWC deps are pinned to match Shakapacker's own version constraints
60
+ # (swc-loader@^0.2.0 is pre-1.0 but deliberately pinned for Shakapacker compat).
61
+ #
62
+ # Update these pins deliberately when adopting a new major version.
63
+
55
64
  # Core React dependencies required for React on Rails
56
65
  # Note: @babel/preset-react is handled separately in BABEL_REACT_DEPENDENCIES
57
66
  # and is added only when SWC is not the active transpiler.
58
67
  REACT_DEPENDENCIES = %w[
59
- react
60
- react-dom
61
- prop-types
68
+ react@^19.0.0
69
+ react-dom@^19.0.0
70
+ prop-types@^15.0.0
62
71
  ].freeze
63
72
 
64
73
  # Babel preset needed by the generated babel.config.js for non-SWC setups.
65
74
  BABEL_REACT_DEPENDENCIES = %w[
66
- @babel/preset-react
75
+ @babel/preset-react@^7.0.0
67
76
  ].freeze
68
77
 
69
78
  # CSS processing dependencies for webpack
70
79
  CSS_DEPENDENCIES = %w[
71
- css-loader
72
- css-minimizer-webpack-plugin
73
- mini-css-extract-plugin
74
- style-loader
80
+ css-loader@^7.0.0
81
+ css-minimizer-webpack-plugin@^8.0.0
82
+ mini-css-extract-plugin@^2.0.0
83
+ style-loader@^4.0.0
75
84
  ].freeze
76
85
 
77
86
  # Development-only dependencies for hot reloading (Webpack)
87
+ # Both packages are pre-1.0, so left bare (see pinning note above).
78
88
  DEV_DEPENDENCIES = %w[
79
89
  @pmmmwh/react-refresh-webpack-plugin
80
90
  react-refresh
@@ -82,14 +92,15 @@ module ReactOnRails
82
92
 
83
93
  # Rspack core dependencies (only installed when --rspack flag is used)
84
94
  RSPACK_DEPENDENCIES = %w[
85
- @rspack/core
86
- rspack-manifest-plugin
95
+ @rspack/core@^1.0.0
96
+ rspack-manifest-plugin@^5.0.0
87
97
  ].freeze
88
98
 
89
99
  # Rspack development dependencies for hot reloading
100
+ # react-refresh is pre-1.0, so left bare (see pinning note above).
90
101
  RSPACK_DEV_DEPENDENCIES = %w[
91
- @rspack/cli
92
- @rspack/plugin-react-refresh
102
+ @rspack/cli@^1.0.0
103
+ @rspack/plugin-react-refresh@^1.0.0
93
104
  react-refresh
94
105
  ].freeze
95
106
 
@@ -100,16 +111,17 @@ module ReactOnRails
100
111
  # - If users choose javascript_transpiler: 'babel', they should manually add @babel/preset-typescript
101
112
  # and configure it in their babel.config.js
102
113
  TYPESCRIPT_DEPENDENCIES = %w[
103
- typescript
104
- @types/react
105
- @types/react-dom
114
+ typescript@^6.0.0
115
+ @types/react@^19.0.0
116
+ @types/react-dom@^19.0.0
106
117
  ].freeze
107
118
 
108
119
  # SWC transpiler dependencies (for Shakapacker 9.3.0+ default transpiler)
109
120
  # SWC is ~20x faster than Babel and is the default for new Shakapacker installations
121
+ # Version ranges match Shakapacker's own constraints.
110
122
  SWC_DEPENDENCIES = %w[
111
- @swc/core
112
- swc-loader
123
+ @swc/core@^1.3.0
124
+ swc-loader@^0.2.0
113
125
  ].freeze
114
126
 
115
127
  # React on Rails Pro dependencies (only installed when --pro or --rsc flag is used)
@@ -222,7 +234,8 @@ module ReactOnRails
222
234
  # RSC requires React 19.0.x specifically (not 19.1.x or later)
223
235
  # Pin to ~19.0.4 to allow patch updates while staying within 19.0.x
224
236
  react_deps = if respond_to?(:use_rsc?) && use_rsc?
225
- ["react@#{RSC_REACT_VERSION_RANGE}", "react-dom@#{RSC_REACT_VERSION_RANGE}", "prop-types"]
237
+ ["react@#{RSC_REACT_VERSION_RANGE}", "react-dom@#{RSC_REACT_VERSION_RANGE}",
238
+ "prop-types@^15.0.0"]
226
239
  else
227
240
  REACT_DEPENDENCIES
228
241
  end
@@ -6,14 +6,17 @@ require "json"
6
6
 
7
7
  # Script to switch between webpack and rspack bundlers
8
8
  class BundlerSwitcher
9
+ # Pinned to ^major.0.0 to prevent peer dependency conflicts from major version bumps.
10
+ # Pre-1.0 packages are left bare since ^0.x pins to the minor version.
11
+ # webpack-cli pinned to ^6 (not ^7) to stay within Shakapacker's supported peer range.
9
12
  WEBPACK_DEPS = {
10
- dependencies: %w[webpack webpack-assets-manifest webpack-merge],
11
- dev_dependencies: %w[webpack-cli webpack-dev-server @pmmmwh/react-refresh-webpack-plugin]
13
+ dependencies: %w[webpack@^5.0.0 webpack-assets-manifest@^6.0.0 webpack-merge@^6.0.0],
14
+ dev_dependencies: %w[webpack-cli@^6.0.0 webpack-dev-server@^5.0.0 @pmmmwh/react-refresh-webpack-plugin]
12
15
  }.freeze
13
16
 
14
17
  RSPACK_DEPS = {
15
- dependencies: %w[@rspack/core rspack-manifest-plugin],
16
- dev_dependencies: %w[@rspack/cli @rspack/plugin-react-refresh]
18
+ dependencies: %w[@rspack/core@^1.0.0 rspack-manifest-plugin@^5.0.0],
19
+ dev_dependencies: %w[@rspack/cli@^1.0.0 @rspack/plugin-react-refresh@^1.0.0]
17
20
  }.freeze
18
21
 
19
22
  def initialize(target_bundler)
@@ -83,11 +86,14 @@ class BundlerSwitcher
83
86
  remove_deps = @target_bundler == "rspack" ? WEBPACK_DEPS : RSPACK_DEPS
84
87
 
85
88
  # Remove old bundler dependencies
89
+ # Strip version suffix (e.g., "webpack@^5.0.0" -> "webpack") since package.json keys are bare names.
90
+ # The regex handles scoped (@scope/name@ver) and unscoped (name@ver) packages, and is a no-op for
91
+ # bare names without a version suffix (e.g., "@pmmmwh/react-refresh-webpack-plugin" stays unchanged).
86
92
  remove_deps[:dependencies].each do |dep|
87
- package_json["dependencies"]&.delete(dep)
93
+ package_json["dependencies"]&.delete(dep[%r{\A(@[^/]+/[^@]+|[^@]+)}])
88
94
  end
89
95
  remove_deps[:dev_dependencies].each do |dep|
90
- package_json["devDependencies"]&.delete(dep)
96
+ package_json["devDependencies"]&.delete(dep[%r{\A(@[^/]+/[^@]+|[^@]+)}])
91
97
  end
92
98
 
93
99
  puts "✅ Removed #{@target_bundler == 'rspack' ? 'webpack' : 'rspack'} dependencies"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ReactOnRails
4
- VERSION = "16.6.0.rc.1"
4
+ VERSION = "16.6.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: react_on_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.6.0.rc.1
4
+ version: 16.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Gordon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-04-08 00:00:00.000000000 Z
11
+ date: 2026-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable