Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ After a release, run `/update-changelog` in Claude Code to analyze commits, writ

### [Unreleased]

#### Changed

- **Bump Rspack dependencies to v2**: Updated generator and `bin/switch-bundler` Rspack dependencies from v1 to v2 (`@rspack/core@^2.0.0-0`, `@rspack/cli@^2.0.0-0`, `@rspack/plugin-react-refresh@^2.0.0`). The `-0` prerelease suffix ensures RC builds are included until stable 2.0.0 lands. `rspack-manifest-plugin` remains at `^5.0.0` (already compatible with Rspack v2). Closes [Issue 3082](https://github.com/shakacode/react_on_rails/issues/3082). [PR 3084](https://github.com/shakacode/react_on_rails/pull/3084) by [justin808](https://github.com/justin808).

### [16.6.0] - 2026-04-09

#### Removed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,16 +91,19 @@ module JsDependencyManager
].freeze

# Rspack core dependencies (only installed when --rspack flag is used)
# @rspack/core uses ^2.0.0-0 (with -0 prerelease suffix) to include RC/beta prereleases
# of 2.0.0 until the stable 2.0.0 release lands.
RSPACK_DEPENDENCIES = %w[
@rspack/core@^1.0.0
@rspack/core@^2.0.0-0
rspack-manifest-plugin@^5.0.0
].freeze

# Rspack development dependencies for hot reloading
# react-refresh is pre-1.0, so left bare (see pinning note above).
# @rspack/cli uses ^2.0.0-0 to match @rspack/core's prerelease range.
RSPACK_DEV_DEPENDENCIES = %w[
@rspack/cli@^1.0.0
@rspack/plugin-react-refresh@^1.0.0
@rspack/cli@^2.0.0-0
@rspack/plugin-react-refresh@^2.0.0
react-refresh
].freeze

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ class BundlerSwitcher
}.freeze

RSPACK_DEPS = {
dependencies: %w[@rspack/core@^1.0.0 rspack-manifest-plugin@^5.0.0],
dev_dependencies: %w[@rspack/cli@^1.0.0 @rspack/plugin-react-refresh@^1.0.0]
dependencies: %w[@rspack/core@^2.0.0-0 rspack-manifest-plugin@^5.0.0],
dev_dependencies: %w[@rspack/cli@^2.0.0-0 @rspack/plugin-react-refresh@^2.0.0]
}.freeze

def initialize(target_bundler)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -667,7 +667,9 @@ class ActiveSupport::TestCase
it "switch-bundler has version-pinned deps and strips versions before deletion" do
assert_file "bin/switch-bundler" do |content|
# Version pins are present in the constants
expect(content).to include("@rspack/core@^1.0.0")
expect(content).to include("@rspack/core@^2.0.0-0")
expect(content).to include("@rspack/cli@^2.0.0-0")
expect(content).to include("@rspack/plugin-react-refresh@^2.0.0")
expect(content).to include("webpack@^5.0.0")
# Version-stripping regex is used for package.json key deletion
expect(content).to include('dep[%r{\A(@[^/]+/[^@]+|[^@]+)}]')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,14 +140,14 @@ def errors

it "defines RSPACK_DEPENDENCIES" do
expect(ReactOnRails::Generators::JsDependencyManager::RSPACK_DEPENDENCIES).to eq(%w[
@rspack/core@^1.0.0
@rspack/core@^2.0.0-0
rspack-manifest-plugin@^5.0.0
])
end

it "defines RSPACK_DEV_DEPENDENCIES" do
expect(ReactOnRails::Generators::JsDependencyManager::RSPACK_DEV_DEPENDENCIES).to(
eq(%w[@rspack/cli@^1.0.0 @rspack/plugin-react-refresh@^1.0.0 react-refresh])
eq(%w[@rspack/cli@^2.0.0-0 @rspack/plugin-react-refresh@^2.0.0 react-refresh])
)
end

Expand Down
Loading