-
-
Notifications
You must be signed in to change notification settings - Fork 638
Upgrade Shakapacker from 8.2.0 to 9.0.0 #1904
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This is a minimal upgrade to Shakapacker 9.0.0, focusing on core compatibility changes needed to get the gem working with the new version. Key changes: - Update shakapacker dependency from 8.2.0 to 9.0.0 in package.json and Gemfile - Add SWC dependencies (@swc/core, swc-loader) for Shakapacker 9.0 compatibility - Add precompile_hook configuration to shakapacker.yml - Create bin/shakapacker-precompile-hook script for ReScript builds and pack generation - Fix CSS Modules configuration to use default exports for backward compatibility - Update sass-resources-loader to work with all SCSS rules (both .scss and .module.scss) This upgrade provides a stable foundation for testing with Shakapacker 9.0.0 before proceeding with upgrades to 9.1.x and 9.2.x. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
|
Warning Rate limit exceeded@justin808 has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 18 minutes and 35 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (5)
WalkthroughThis PR upgrades shakapacker from 8.2.0 to 9.0.0 across the project and implements compatibility adjustments. A new precompile hook script automates ReScript and React-on-Rails pack generation, webpack configuration is updated for CSS Module backward compatibility, dependency tracking is refined, and module resolution paths are adjusted. Changes
Sequence Diagram(s)sequenceDiagram
participant Build as Build Process
participant Hook as shakapacker-precompile-hook
participant RS as ReScript Toolchain
participant RoR as React-on-Rails
participant Rails as Rails/Rake
Build->>Hook: Execute precompile hook
activate Hook
Hook->>Hook: Discover Rails root
alt ReScript present (bsconfig.json or rescript.json)
Hook->>RS: Attempt build (yarn/npm)
RS-->>Hook: Success or exit non-zero
end
alt React-on-Rails configured
Hook->>Hook: Check Rails initializer<br/>(auto_load_bundle, components_subdirectory)
Hook->>Hook: Validate bundle tool & rake task exists
Hook->>Rails: Execute bundle exec rails<br/>react_on_rails:generate_packs
Rails-->>Hook: Success or failure
end
Hook-->>Build: Report result (exit code)
deactivate Hook
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (2 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Code Review: Shakapacker 8.2.0 to 9.0.0 UpgradeI've reviewed this PR and have the following feedback: ✅ Strengths
🔴 Critical Issues1. RuboCop violations MUST be fixed before merge (spec/dummy/bin/shakapacker-precompile-hook:87:1)The new script has a RuboCop offense for
Fix: Simplify 2. Missing newline at end of file (spec/dummy/bin/shakapacker-precompile-hook:100)Per CLAUDE.md:
Fix: Add a trailing newline to the script. 3. Missing CHANGELOG entryPer CLAUDE.md changelog guidelines:
|
Code Review: Shakapacker 8.2.0 → 9.0.0 UpgradeThank you for this upgrade PR! I've reviewed the changes and have the following feedback: ✅ Strengths
🔍 Code Quality ObservationsPrecompile Hook Script (
|
Fixes Jest test failures and knip warnings by: - Update babel.config.js to use correct Shakapacker 9.0 preset path (.js extension required) - Remove unused SWC dependencies (@swc/core, swc-loader) - not needed when using Babel - Update knip.ts to reflect Shakapacker 9.0 dependency detection improvements All CI tests now pass: - Jest tests: 2 passed, 2 total - Knip: No critical errors (only informational hints) - RuboCop: 0 violations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Pull Request Review: Upgrade Shakapacker from 8.2.0 to 9.0.0Thank you for working on this upgrade! This is a solid foundation for Shakapacker 9.0 compatibility. Below is my detailed review: ✅ Strengths
🔍 Code Quality Observationsspec/dummy/bin/shakapacker-precompile-hook (New file - Main concerns here)Critical Issues:
Performance Considerations:
Code Style:
spec/dummy/config/webpack/commonWebpackConfig.jsGood:
Potential Issues:
spec/dummy/babel.config.js
knip.tsGood:
Questions:
🧪 Test CoverageMissing:
📋 Pull Request Checklist ItemsPer the PR template:
🔒 Security Concerns
🚀 Performance Considerations
📝 Documentation & Code Comments
✨ Suggestions for Follow-up PRs
🎯 SummaryBlocking Issues Before Merge:
Recommended Improvements:
Overall Assessment: This is solid foundational work for Shakapacker 9.0 compatibility. The main gaps are around testing, documentation, and some code safety improvements in the precompile hook. Once the blocking items are addressed, this should be ready to merge. Great work on maintaining backward compatibility with CSS Modules and taking a thoughtful, incremental approach to the upgrade! 🎉 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
spec/dummy/config/webpack/commonWebpackConfig.js (1)
31-55: Backward compatibility for CSS Modules imports.This configuration overrides Shakapacker 9.0's default
namedExport: trueto maintain compatibility with existing code usingimport styles from './file.module.css'syntax.Note: Named exports (
namedExport: true) enable better tree shaking and bundle size optimization. Consider planning a migration to the named export pattern (import * as styles from './file.module.css') in a future PR to benefit from these optimizations.Based on learnings.
spec/dummy/bin/shakapacker-precompile-hook (1)
74-76: Consider error handling for rake task detection.The
bundle exec rails -T 2>&1command could fail if bundle isn't properly configured. Consider handling potential errors explicitly rather than silently returning.# Check if rake task exists (cross-platform) task_list = `bundle exec rails -T 2>&1` +return unless $?.success? return unless task_list.include?("react_on_rails:generate_packs")
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (3)
Gemfile.lockis excluded by!**/*.lockspec/dummy/Gemfile.lockis excluded by!**/*.lockspec/dummy/yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (7)
Gemfile.development_dependencies(1 hunks)knip.ts(3 hunks)spec/dummy/babel.config.js(1 hunks)spec/dummy/bin/shakapacker-precompile-hook(1 hunks)spec/dummy/config/shakapacker.yml(1 hunks)spec/dummy/config/webpack/commonWebpackConfig.js(1 hunks)spec/dummy/package.json(1 hunks)
🧰 Additional context used
🧠 Learnings (7)
📓 Common learnings
Learnt from: alexeyr-ci2
Repo: shakacode/react_on_rails PR: 1732
File: spec/dummy/client/app-react16/startup/ReduxSharedStoreApp.client.jsx:40-44
Timestamp: 2025-04-26T21:55:55.874Z
Learning: In the react_on_rails project, files under `app-react16` directories are copied/moved to corresponding `/app` directories during the conversion process (removing the `-react16` suffix), which affects their relative import paths at runtime.
Learnt from: justin808
Repo: shakacode/react_on_rails PR: 1770
File: lib/generators/react_on_rails/templates/base/base/app/javascript/src/HelloWorld/ror_components/HelloWorld.client.jsx:2-2
Timestamp: 2025-09-16T08:01:11.146Z
Learning: React on Rails uses webpack CSS Modules configuration with namedExports: true, which requires the import syntax `import * as style from './file.module.css'` rather than the default export pattern. This configuration enables better tree shaking and bundle size optimization for CSS modules.
📚 Learning: 2025-02-12T16:38:06.537Z
Learnt from: Romex91
Repo: shakacode/react_on_rails PR: 1697
File: package-scripts.yml:28-28
Timestamp: 2025-02-12T16:38:06.537Z
Learning: The file `node_package/lib/ReactOnRails.full.js` is autogenerated during the build process and should not be present in the repository.
Applied to files:
spec/dummy/bin/shakapacker-precompile-hook
📚 Learning: 2025-04-26T21:55:55.874Z
Learnt from: alexeyr-ci2
Repo: shakacode/react_on_rails PR: 1732
File: spec/dummy/client/app-react16/startup/ReduxSharedStoreApp.client.jsx:40-44
Timestamp: 2025-04-26T21:55:55.874Z
Learning: In the react_on_rails project, files under `app-react16` directories are copied/moved to corresponding `/app` directories during the conversion process (removing the `-react16` suffix), which affects their relative import paths at runtime.
Applied to files:
spec/dummy/bin/shakapacker-precompile-hook
📚 Learning: 2025-07-08T05:57:29.630Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1745
File: node_package/src/RSCRequestTracker.ts:8-14
Timestamp: 2025-07-08T05:57:29.630Z
Learning: The global `generateRSCPayload` function in React on Rails Pro (RORP) is provided by the framework during rendering requests, not implemented in application code. The `declare global` statements are used to document the expected interface that RORP will inject at runtime.
Applied to files:
spec/dummy/bin/shakapacker-precompile-hook
📚 Learning: 2025-01-23T18:20:45.824Z
Learnt from: alexeyr-ci
Repo: shakacode/react_on_rails PR: 1687
File: spec/dummy/package.json:0-0
Timestamp: 2025-01-23T18:20:45.824Z
Learning: When adding or updating dependencies in spec/dummy/package.json, maintain version consistency with other package.json files in the codebase to avoid potential version conflicts.
Applied to files:
spec/dummy/package.jsonspec/dummy/babel.config.jsknip.ts
📚 Learning: 2025-09-16T08:01:11.146Z
Learnt from: justin808
Repo: shakacode/react_on_rails PR: 1770
File: lib/generators/react_on_rails/templates/base/base/app/javascript/src/HelloWorld/ror_components/HelloWorld.client.jsx:2-2
Timestamp: 2025-09-16T08:01:11.146Z
Learning: React on Rails uses webpack CSS Modules configuration with namedExports: true, which requires the import syntax `import * as style from './file.module.css'` rather than the default export pattern. This configuration enables better tree shaking and bundle size optimization for CSS modules.
Applied to files:
spec/dummy/config/webpack/commonWebpackConfig.jsknip.ts
📚 Learning: 2025-02-13T19:09:15.991Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1644
File: node_package/src/RSCWebpackLoader.ts:0-0
Timestamp: 2025-02-13T19:09:15.991Z
Learning: In React Server Components webpack loader, using `new Function('return import("react-server-dom-webpack/node-loader")')()` is necessary as a workaround to bypass TypeScript compilation issues with direct dynamic imports.
Applied to files:
knip.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
- GitHub Check: build
- GitHub Check: build-dummy-app-webpack-test-bundles
- GitHub Check: lint-js-and-ruby
- GitHub Check: build-dummy-app-webpack-test-bundles
- GitHub Check: claude-review
- GitHub Check: rspec-package-tests (3.4, latest)
- GitHub Check: rspec-package-tests (3.4, minimum)
- GitHub Check: rspec-package-tests (3.2, minimum)
- GitHub Check: rspec-package-tests (3.2, latest)
🔇 Additional comments (11)
spec/dummy/babel.config.js (1)
1-2: LGTM: Babel preset path updated for Shakapacker 9.0.The explicit
.jsextension is required by Shakapacker 9.0's module resolution. The ESLint directive is appropriate since this is an external dependency requirement.Gemfile.development_dependencies (1)
3-3: LGTM: Shakapacker gem version updated.Version 9.0.0 is consistent with the npm package version in spec/dummy/package.json.
spec/dummy/config/shakapacker.yml (1)
8-10: LGTM: Precompile hook configuration added.The precompile hook is properly documented and correctly references the script in
bin/shakapacker-precompile-hook. The hook will run before compilation in all environments.spec/dummy/config/webpack/commonWebpackConfig.js (1)
24-29: LGTM: Improved sass-resources-loader configuration.The new approach iterates all webpack rules and applies the sass-resources-loader to any SCSS rule, ensuring both
.scssand.module.scssfiles have access to shared variables. This is more robust than targeting a specific rule by index.knip.ts (3)
13-14: LGTM: Improved documentation.The comment more accurately describes how
npsis used in the project.
113-115: LGTM: Build-time dependency handling updated.The comment accurately reflects that these are build-time dependencies. The addition of
mini-css-extract-pluginis correct since it's a webpack plugin used during build but not detected by Knip's static analysis.
132-133: Verify the intentionality of webpack-merge version pinning in spec/dummy/package.json.The verification confirms the review comment is accurate:
webpack-mergeis both a direct dependency (pinned to 5.8.0) and a transitive dependency of shakapacker (5.10.0).The direct dependency appears intentional for version control. Confirm whether pinning 5.8.0 instead of allowing shakapacker's 5.10.0 to be used is required for compatibility or can be removed per the learnings on maintaining consistency across package.json files.
spec/dummy/bin/shakapacker-precompile-hook (3)
11-21: LGTM: Rails root detection implemented correctly.The function properly walks the directory tree to locate the Rails root by checking for
config/environment.rb, with appropriate handling for reaching the filesystem root.
24-49: LGTM: ReScript build logic is robust.The function correctly:
- Detects both old (
bsconfig.json) and new (rescript.json) ReScript configurations- Prefers yarn over npm for package management
- Provides clear feedback with emoji indicators
- Exits with appropriate status codes
91-100: LGTM: Clean error handling in main execution.The script properly orchestrates both build steps with comprehensive error handling, helpful debugging output, and correct exit codes.
spec/dummy/package.json (1)
54-54: Clarify SWC configuration intent.Shakapacker 9.0.0 marks
@swc/coreandswc-loaderas optional peer dependencies—they're required only if you explicitly opt into the Webpack+SWC (or Rspack+SWC) configuration. The current version bump is correct if you're not using SWC. However, confirm whether your project will use the SWC bundler configuration; if yes, you must explicitly add these packages to devDependencies.
Shakapacker 9.0 defaults to using SWC as the JavaScript transpiler, not Babel. The previous commit incorrectly removed @swc/core and swc-loader, causing webpack builds to fail with "swc-loader package is not installed" error. Changes: - Add back @swc/core and swc-loader to spec/dummy/package.json - Update knip.ts to ignore SWC dependencies (not detected by Knip webpack plugin) Note: Babel is still used for Jest tests via babel.config.js, while SWC is used for webpack builds. This is the default Shakapacker 9.0 configuration. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Code Review: Shakapacker 8.2.0 → 9.0.0 UpgradeOverviewThis is a well-structured upgrade PR with clear focus on core compatibility. The changes are minimal and purposeful, which is excellent for a major version bump. ✅ Strengths
🐛 Potential IssuesCritical: Missing Trailing Newlinespec/dummy/bin/shakapacker-precompile-hook:100Issue: File ends at line 100 without a trailing newline Possible Logic Bug in generate_packs_if_neededspec/dummy/bin/shakapacker-precompile-hook:71-72Concern: Silent failure if unless bundle_available
warn "⚠️ Warning: bundle not found. Skipping pack generation."
return
endCSS Loader Type Safetyspec/dummy/config/webpack/commonWebpackConfig.js:42Concern: The string check loader.loader.endsWith('css-loader') || loader.loader.endsWith('css-loader/dist/cjs.js')🔒 Security✅ No security concerns identified:
⚡ PerformancePositive Changes:
No Concerns: The additional checks in webpack config are O(n) but run once at build time. 🧪 Test CoverageMissing:
Recommendations:
📋 Code QualityRuby Code ⭐⭐⭐⭐⭐
JavaScript Code ⭐⭐⭐⭐
Dependency Management ⭐⭐⭐⭐⭐
📝 Required Changes Before Merge
💡 Suggestions for Enhancement1. Webpack Config Refactoring// Extract to helper function for readability
function configureCSSModulesBackwardCompatibility(webpackConfig) {
webpackConfig.module.rules.forEach((rule) => {
// ... existing logic
});
}2. Precompile Hook LoggingConsider adding a quiet mode or respecting def info(message)
puts message unless ENV['QUIET'] || ENV['RAILS_ENV'] == 'production'
end3. Error Context in Precompile HookThe backtrace on line 98 is good, but consider capturing stdout/stderr from failed commands: output = `yarn build:rescript 2>&1`
unless $?.success?
warn "❌ ReScript build failed:\n\#{output}"
exit 1
end🎯 ConclusionVerdict: ✅ Approve with Required Changes This is high-quality work that demonstrates good engineering practices. The upgrade strategy is sound, and the code changes are focused and well-documented. Before merging:
Estimated Risk: 🟢 Low (with suggested fixes applied) Great job on this upgrade! The incremental approach and attention to backward compatibility will make this a smooth transition for users. Review generated with attention to react_on_rails CLAUDE.md conventions |
Pull Request Review: Shakapacker 9.0.0 UpgradeI've reviewed this PR and have feedback across several areas. Overall, this is a well-structured upgrade with good attention to compatibility, but there are some areas that need attention. 🎯 Code Quality & Best Practices✅ Strengths:
|
Node 22.21.0 has a V8 bug that causes crashes when accessing cached bytecode: "Fatal error in , line 0 # unreachable code" This happens during GitHub Actions setup-node with yarn caching enabled. Fix: Add NODE_OPTIONS=--no-compilation-cache to disable V8 code caching. Reference: nodejs/node#56010 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Code Review: Shakapacker 8.2.0 → 9.0.0 UpgradeI've reviewed this PR and found it to be a solid foundation for the Shakapacker 9.0.0 upgrade. Here's my comprehensive feedback: ✅ Strengths
🐛 Potential Issues1. CSS Loader Configuration - Defensive Programming NeededIn // Current approach mutates deeply nested objects
loader.options.modules.namedExport = false;Recommendation: Add null checks before accessing nested properties: if (loader?.options?.modules && typeof loader.options.modules === 'object') {
loader.options.modules.namedExport = false;
}2. Precompile Hook - RuboCop Complexity Warning
Suggestion: Extract config file parsing into a separate method: def auto_pack_generation_enabled?(config_file)
config_file =~ /^\s*config\.auto_load_bundle\s*=/ ||
config_file =~ /^\s*config\.components_subdirectory\s*=/
end3. SCSS Loader Configuration ChangeThe change from targeting a specific SCSS rule (line 24-27) to iterating all rules (new lines 24-28) is more robust, but consider adding a guard: baseClientWebpackConfig.module.rules.forEach((rule) => {
if (rule?.test && '.scss'.match(rule.test) && Array.isArray(rule?.use)) {
rule.use.push(sassLoaderConfig);
}
});⚡ Performance Considerations
🔒 Security✅ No security concerns identified:
📋 Missing Checklist Items (from PR description)The PR description shows the checklist is incomplete:
Per CLAUDE.md: This upgrade should have a CHANGELOG entry since it's a dependency upgrade affecting users. Use the #### [PR 1904](https://github.com/shakacode/react_on_rails/pull/1904) by [justin808](https://github.com/justin808)
Upgrade Shakapacker from 8.2.0 to 9.0.0🧪 Testing Recommendations
📝 Code Quality Suggestions
🚀 Before MergingMANDATORY (per CLAUDE.md):
Overall AssessmentQuality: 8/10 - Solid upgrade with good attention to backward compatibility Recommendation: ✅ Approve with minor changes - Address the checklist items and consider the defensive programming suggestions before merging. Great work on this upgrade! The foundation is solid for the 9.1.x and 9.2.x upgrades mentioned in the description. |
Code Review: Shakapacker 8.2.0 to 9.0.0 UpgradeI've reviewed this PR and it looks like a solid, minimal upgrade approach. Here's my detailed feedback: ✅ Strengths
🔍 Potential Issues & Recommendations1. Missing Hook File in PR (Critical)The PR shows the hook file being created at
Recommendation: Check if the hook should be part of the install generator templates. 2. Babel Config Import Extension (Minor)// spec/dummy/babel.config.js
const defaultConfigFunc = require('shakapacker/package/babel/preset.js');The explicit
3. RuboCop Compliance (Critical per CLAUDE.md)According to the project's CLAUDE.md requirements, you MUST:
The new 4. Knip Configuration (Minor)Good job updating
5. Testing Coverage
6. DocumentationConsider updating:
📋 Checklist ItemsBased on the PR template, please ensure:
🔒 Security Considerations
⚡ Performance Considerations
🎯 Overall AssessmentThis is a well-executed upgrade PR. The main concerns are:
The technical approach is sound and the code quality is good. Once the documentation and linting are addressed, this should be ready to merge. 🤖 Generated with Claude Code |
Code Review: Shakapacker 8.2.0 to 9.0.0 UpgradeOverall AssessmentThis is a well-executed minimal upgrade to Shakapacker 9.0.0. The changes are focused and appropriate for establishing compatibility with the new version. The code quality is good, with thoughtful handling of backward compatibility concerns. Strengths1. Well-Structured Precompile Hook (
|
Code Review: Shakapacker 8.2.0 → 9.0.0 UpgradeOverall AssessmentThis is a well-executed upgrade PR with thoughtful compatibility handling. The changes are focused and minimal, addressing core breaking changes in Shakapacker 9.0.0. Code quality is strong with good documentation and error handling. Code Quality & Best Practices ✅Strengths:
Minor Improvements:
Potential Bugs & Issues
|
The previous fix using NODE_OPTIONS=--no-compilation-cache doesn't work because --no-compilation-cache is not allowed in NODE_OPTIONS for security. New approach: Conditionally disable yarn caching for Node 22 to avoid the V8 code cache bug in Node 22.21.0. This is a temporary workaround until the Node.js bug is fixed. Reference: nodejs/node#56010 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Root cause: Shakapacker 9.0 defaults to SWC transpiler, which has issues with PropTypes handling. This caused all React components to fail registration: JavaScript errors: - "Uncaught ReferenceError: PropTypes is not defined" - "Could not find component registered with name HelloWorld" Solution: Configure Shakapacker to use Babel transpiler for compatibility with existing code. Changes: - Set javascript_transpiler: babel in shakapacker.yml - Remove SWC dependencies (@swc/core, swc-loader) - no longer needed - Update knip.ts to remove SWC from ignore list This maintains backward compatibility while using Shakapacker 9.0. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Code Review: Shakapacker 8.2.0 → 9.0.0 UpgradeThank you for this well-structured upgrade PR! I've reviewed the changes based on the repository's conventions (CLAUDE.md) and here's my feedback: ✅ Strengths1. Excellent Commit History
2. Thoughtful Compatibility Approach
3. Good Code Quality
4. CI Workaround
🔍 Potential Issues & Concerns1. Security: Command Injection Risk
|
Addresses security issues and optimizations identified in code review: Security Fixes: - Fix command injection risk in precompile hook by using IO.popen with array form instead of backticks (spec/dummy/bin/shakapacker-precompile-hook:76) - Improve regex patterns to exclude commented configuration lines using negative lookahead to prevent false matches Code Quality: - Optimize webpack configuration to process rules in single pass instead of double iteration, improving build performance - Combine SCSS loader addition and CSS Modules configuration into one loop Documentation: - Add comprehensive CHANGELOG.md entry documenting Shakapacker 9.0.0 upgrade including configuration changes, precompile hook, and compatibility notes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
|
@claude review this PR |
|
I'll analyze this and get back to you. |

This is a minimal upgrade to Shakapacker 9.0.0, focusing on core compatibility changes needed to get the gem working with the new version.
Key changes:
This upgrade provides a stable foundation for testing with Shakapacker 9.0.0 before proceeding with upgrades to 9.1.x and 9.2.x.
🤖 Generated with Claude Code
Summary
Remove this paragraph and provide a general description of the code changes in your pull
request... were there any bugs you had fixed? If so, mention them. If
these bugs have open GitHub issues, be sure to tag them here as well,
to keep the conversation linked together.
Pull Request checklist
Remove this line after checking all the items here. If the item is not applicable to the PR, both check it out and wrap it by
~.Add the CHANGELOG entry at the top of the file.
Other Information
Remove this paragraph and mention any other important and relevant information such as benchmarks.
This change is
Summary by CodeRabbit
Release Notes