Fix broken links and update badges#2237
Conversation
|
Warning Rate limit exceeded@ihabadham has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 21 minutes and 48 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 (1)
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughExpanded Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes
Possibly related issues
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 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 - PR #2237: Fix broken links and update badges✅ Overall AssessmentThis is a well-executed cleanup PR that addresses broken links and outdated badges. The changes are narrowly scoped, well-documented, and address legitimate issues identified by the link checker. 🎯 What's Good1. Excellent Documentation & Investigation ⭐
2. Correct Badge Updates (README.md)
3. Smart Lychee Exclusions (.lychee.toml)
4. CHANGELOG Tag Prefix Fixes
|
There was a problem hiding this comment.
Actionable comments posted: 3
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
.lychee.toml(1 hunks)CHANGELOG.md(2 hunks)README.md(1 hunks)link-checker-checklist.md(1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{js,jsx,ts,tsx,json,css,scss,md}
📄 CodeRabbit inference engine (CLAUDE.md)
Use Prettier as the sole authority for formatting non-Ruby files
Files:
README.mdlink-checker-checklist.mdCHANGELOG.md
CHANGELOG.md
📄 CodeRabbit inference engine (CLAUDE.md)
Update
/CHANGELOG.mdfor open-source features, bug fixes, breaking changes, and performance improvements
Files:
CHANGELOG.md
🧠 Learnings (12)
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Exclude directories `/coverage`, `/tmp`, `/gen-examples`, `/packages/react-on-rails/lib`, `/node_modules`, and generated directories from IDE indexing to prevent slowdowns
Applied to files:
.lychee.tomlREADME.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to lib/react_on_rails/**/*.rb : Validate RBS signatures with `bundle exec rake rbs:validate` and run Steep type checker with `bundle exec rake rbs:steep` for Ruby files
Applied to files:
README.mdCHANGELOG.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to react_on_rails_pro/**/*.{js,ts,jsx,tsx,json,css,scss} : The `react_on_rails_pro/` directory has its own Prettier/ESLint configuration and will be linted separately in CI
Applied to files:
README.md
📚 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:
README.mdCHANGELOG.md
📚 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:
README.mdCHANGELOG.md
📚 Learning: 2025-09-15T21:24:48.207Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1781
File: node_package/src/ClientSideRenderer.ts:82-95
Timestamp: 2025-09-15T21:24:48.207Z
Learning: In React on Rails, the force_load feature includes both explicit `data-force-load="true"` usage and the ability to hydrate components during the page loading state (`document.readyState === 'loading'`). Both capabilities require a Pro license, so the condition `!railsContext.rorPro && (isComponentForceLoaded || document.readyState === 'loading')` correctly gates both scenarios.
Applied to files:
README.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to lib/react_on_rails/**/*.rb : Add RBS type signatures for new Ruby files in `lib/react_on_rails/` by creating corresponding `.rbs` files in `sig/react_on_rails/`
Applied to files:
README.mdCHANGELOG.md
📚 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:
README.mdCHANGELOG.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to packages/react-on-rails/src/**/*.tsx : For React component files, use TypeScript (.tsx extension) and follow the component registry pattern for registration
Applied to files:
README.md
📚 Learning: 2025-02-18T13:08:01.477Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1644
File: lib/react_on_rails/helper.rb:190-197
Timestamp: 2025-02-18T13:08:01.477Z
Learning: RSC support validation in React on Rails Pro is handled through a chain of validations:
1. Pro version check in `run_stream_inside_fiber`
2. RSC support check during pack generation via `ReactOnRailsPro.configuration.enable_rsc_support`
3. RSC support validation during component registration
This makes additional validation in the helper methods unnecessary.
Applied to files:
README.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to CHANGELOG.md : Update `/CHANGELOG.md` for open-source features, bug fixes, breaking changes, and performance improvements
Applied to files:
CHANGELOG.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to CHANGELOG_PRO.md : Update `/CHANGELOG_PRO.md` for Pro-only features, bug fixes, and performance improvements
Applied to files:
CHANGELOG.md
⏰ 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). (10)
- GitHub Check: dummy-app-integration-tests (3.4, 22, latest)
- GitHub Check: examples (3.4, latest)
- GitHub Check: build-dummy-app-webpack-test-bundles
- GitHub Check: rspec-package-tests (3.4, latest)
- GitHub Check: pro-lint-js-and-ruby
- GitHub Check: build-dummy-app-webpack-test-bundles
- GitHub Check: build
- GitHub Check: precompile-check
- GitHub Check: markdown-link-check
- GitHub Check: claude-review
🔇 Additional comments (2)
.lychee.toml (1)
48-62: LGTM! Well-documented exclusions.The three categories of exclusions are appropriate:
- Historical untagged releases prevent false positives for versions documented in CHANGELOG but never tagged
- Deleted GitHub user accounts prevent 404 errors for contributors whose accounts no longer exist
- Private repo exclusion prevents authentication failures
The regex patterns are properly escaped and the inline comments clearly explain the purpose of each exclusion.
README.md (1)
12-16: LGTM! Badge updates align with workflow renames.The badge updates correctly reflect:
- Workflow renames from PR #2020 (main.yml → integration-tests.yml, rspec-package-specs.yml → gem-tests.yml)
- Switch to shields.io for gem downloads badge after Heroku free tier shutdown
All URLs are correctly formatted and point to the appropriate GitHub Actions workflows.
Code Review: Fix broken links and update badgesOverall Assessment✅ Excellent PR - Well-documented, focused scope, and addresses legitimate maintenance issues. The changes are appropriate and follow best practices for link validation exclusions. Strengths
Code Quality & Best Practices✅ .lychee.toml
✅ CHANGELOG.md
Recommendation: Verify these tag names exist in the repository before merging: # Verify the beta tags exist
gh api repos/shakacode/react_on_rails/git/refs/tags/v16.2.0.beta.19 --jq '.ref'
gh api repos/shakacode/react_on_rails/git/refs/tags/v16.2.0.beta.20 --jq '.ref'
# Verify the 2.0.x tags
gh api repos/shakacode/react_on_rails/git/refs/tags/2.0.0 --jq '.ref'
gh api repos/shakacode/react_on_rails/git/refs/tags/v2.0.1 --jq '.ref'✅ README.md
✅ link-checker-checklist.md
Potential Issues1. Tag Name Verification (Medium Priority)The CHANGELOG changes assume specific tag naming conventions. If these tags don't exist with the exact names used, the compare links will still be broken. Action: Run the verification commands above to confirm tag names before merging. 2. Inconsistent Tag Naming PatternThe changes reveal inconsistent tag naming across versions:
Suggestion: Consider documenting the tag naming convention or standardizing it going forward. 3. Missing Pro Badge UpdateThe checklist shows:
This appears to be unchecked and not included in this PR. Question: Is this intentional (separate PR) or an oversight? Security Considerations✅ No security concerns - this PR only updates documentation, badges, and link checker configuration. Performance Considerations✅ No performance impact - documentation and configuration changes only. Test CoverageThe PR mentions:
Recommendation: Verify all three items before merging, especially:
Suggestions
Final Recommendation✅ Approve with minor verification This PR is well-researched and properly addresses legitimate link checker failures. Before merging:
Great work on the thorough investigation and documentation! The 🤖 Generated with Claude Code |
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
README.md(2 hunks)link-checker-checklist.md(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{js,jsx,ts,tsx,json,css,scss,md}
📄 CodeRabbit inference engine (CLAUDE.md)
Use Prettier as the sole authority for formatting non-Ruby files
Files:
link-checker-checklist.mdREADME.md
🧠 Learnings (12)
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to lib/react_on_rails/**/*.rb : Validate RBS signatures with `bundle exec rake rbs:validate` and run Steep type checker with `bundle exec rake rbs:steep` for Ruby files
Applied to files:
README.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to react_on_rails_pro/**/*.{js,ts,jsx,tsx,json,css,scss} : The `react_on_rails_pro/` directory has its own Prettier/ESLint configuration and will be linted separately in CI
Applied to files:
README.md
📚 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:
README.md
📚 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:
README.md
📚 Learning: 2025-09-15T21:24:48.207Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1781
File: node_package/src/ClientSideRenderer.ts:82-95
Timestamp: 2025-09-15T21:24:48.207Z
Learning: In React on Rails, the force_load feature includes both explicit `data-force-load="true"` usage and the ability to hydrate components during the page loading state (`document.readyState === 'loading'`). Both capabilities require a Pro license, so the condition `!railsContext.rorPro && (isComponentForceLoaded || document.readyState === 'loading')` correctly gates both scenarios.
Applied to files:
README.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to lib/react_on_rails/**/*.rb : Add RBS type signatures for new Ruby files in `lib/react_on_rails/` by creating corresponding `.rbs` files in `sig/react_on_rails/`
Applied to files:
README.md
📚 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:
README.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to packages/react-on-rails/src/**/*.tsx : For React component files, use TypeScript (.tsx extension) and follow the component registry pattern for registration
Applied to files:
README.md
📚 Learning: 2025-02-18T13:08:01.477Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1644
File: lib/react_on_rails/helper.rb:190-197
Timestamp: 2025-02-18T13:08:01.477Z
Learning: RSC support validation in React on Rails Pro is handled through a chain of validations:
1. Pro version check in `run_stream_inside_fiber`
2. RSC support check during pack generation via `ReactOnRailsPro.configuration.enable_rsc_support`
3. RSC support validation during component registration
This makes additional validation in the helper methods unnecessary.
Applied to files:
README.md
📚 Learning: 2025-10-23T17:22:01.074Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1875
File: lib/react_on_rails/utils.rb:112-124
Timestamp: 2025-10-23T17:22:01.074Z
Learning: In React on Rails, when Pro is installed but not licensed, the intended behavior is to raise an error on boot. The `react_on_rails_pro?` method validates licenses and should raise errors early (including during path resolution in methods like `server_bundle?`) to enforce licensing requirements rather than failing later with obscure errors.
Applied to files:
README.md
📚 Learning: 2025-02-18T13:08:01.477Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1644
File: lib/react_on_rails/helper.rb:190-197
Timestamp: 2025-02-18T13:08:01.477Z
Learning: RSC support validation is handled in deeper level calls of the React on Rails Pro codebase, so it doesn't need to be validated again in the `rsc_payload_react_component` helper method.
Applied to files:
README.md
📚 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:
README.md
⏰ 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). (10)
- GitHub Check: build-dummy-app-webpack-test-bundles (3.4, 22, latest)
- GitHub Check: rspec-package-tests (3.4, latest)
- GitHub Check: examples (3.4, latest)
- GitHub Check: build-dummy-app-webpack-test-bundles
- GitHub Check: precompile-check
- GitHub Check: pro-lint-js-and-ruby
- GitHub Check: build
- GitHub Check: build-dummy-app-webpack-test-bundles
- GitHub Check: markdown-link-check
- GitHub Check: claude-review
🔇 Additional comments (3)
README.md (3)
12-12: Approve badge consolidation and Gem Downloads replacement.The consolidation of status badges and replacement of the deprecated Heroku gem download badge with shields.io's gem/dt endpoint is correct. The badge URL structure follows shields.io conventions, and removing the
type=totalquery parameter doesn't impact functionality.
151-151: LGTM on i18n line formatting.The internationalization line formatting is correct and maintains proper Markdown table structure.
14-16: Workflow files are correctly configured.All referenced workflow files exist in
.github/workflows/with the correct names:integration-tests.yml,gem-tests.yml, andpackage-js-tests.yml.
8e4d761 to
6f1bdaa
Compare
Code Review - PR #2237: Fix broken links and update badges✅ Overall AssessmentThis is a well-executed maintenance PR that addresses link checker failures and outdated badges. The changes are focused, well-documented, and follow the repository's conventions. 🎯 Strengths
📋 Code Quality✅ .lychee.toml changes:
✅ CHANGELOG.md changes:
✅ README.md changes:
✅ link-checker-checklist.md:
🔍 Observations & Suggestions1. Verification of Tag Prefixes (Minor)The CHANGELOG changes assume certain tags have # Verify these tags exist as expected:
git ls-remote --tags origin | grep -E "(16\.2\.0\.beta\.(19|20)|2\.0\.[012])"The changes look correct, but explicit verification would add confidence. 2. link-checker-checklist.md Location (Question)Per CLAUDE.md guidelines, analysis documents should go in mv link-checker-checklist.md analysis/link-checker-cleanup-2237.mdThis is a tracking document for ongoing work, so it could reasonably stay at root temporarily, but eventually should move to 3. Follow-up PR Tracking (Suggestion)The checklist mentions 16 remaining CI errors and references pending PRs (#2236, #2238). Consider:
4. Badge.fury.io Exclusion (Minor)The checklist notes that 🔒 Security Considerations✅ No security concerns. The changes are documentation-only. ⚡ Performance Considerations✅ No performance impact. Changes only affect:
🧪 Test CoverageVerification checklist from PR description:
Recommendation: Before merging, confirm that the link checker CI passes with these exclusions. 📝 Adherence to Repository Guidelines✅ Follows CLAUDE.md requirements:
Note: Per CLAUDE.md, changelog should only be updated for user-visible changes. Link checker fixes and badge updates are internal/cosmetic, so correctly omitted. 🎨 Minor Nitpicks
✅ RecommendationAPPROVE with minor follow-up suggestions This PR is ready to merge. The suggested improvements are minor and can be addressed in follow-up PRs if needed:
Great work on systematically cleaning up the link checker errors! 🎉 Related PRs to watch:
|
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (3)
CHANGELOG.md (2)
1873-1875: LGTM! Beta version compare links correctly use v prefix.These changes correctly add the
vprefix to match the actual git tag names. As confirmed in previous review validation, the beta versions (v16.2.0.beta.19 and v16.2.0.beta.20) exist with thevprefix in the repository tags.
2017-2018: LGTM! Compare links correctly match actual git tag naming.These changes correctly reflect the actual git tag names in the repository. As confirmed in previous review validation:
- Tag
2.0.0exists WITHOUT v prefix- Tags
v2.0.1andv1.2.2exist WITH v prefixThe compare links now accurately reference the actual tags.
link-checker-checklist.md (1)
1-101: 🚫 Remove this temporary tracking file before merging.As noted in previous reviews and the PR objectives, this checklist is a temporary tracking document that should not be merged into the repository.
Action required: Delete this file from the commit before merging.
To remove the file:
git rm link-checker-checklist.md git commit -m "Remove temporary tracking checklist"Suggested alternatives for preserving the content:
- Post as a comment on issue #2232 for tracking reference
- Keep locally in your working directory
- Use GitHub Projects or Issues to track remaining remediation work
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
.lychee.toml(1 hunks)CHANGELOG.md(2 hunks)README.md(3 hunks)docs/upgrading/upgrading-react-on-rails.md(1 hunks)link-checker-checklist.md(1 hunks)react_on_rails_pro/README.md(1 hunks)react_on_rails_pro/docs/caching.md(12 hunks)react_on_rails_pro/docs/home-pro.md(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- README.md
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{js,jsx,ts,tsx,json,css,scss,md}
📄 CodeRabbit inference engine (CLAUDE.md)
Use Prettier as the sole authority for formatting non-Ruby files
Files:
link-checker-checklist.mdreact_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/README.mddocs/upgrading/upgrading-react-on-rails.mdCHANGELOG.mdreact_on_rails_pro/docs/caching.md
CHANGELOG.md
📄 CodeRabbit inference engine (CLAUDE.md)
Update
/CHANGELOG.mdfor open-source features, bug fixes, breaking changes, and performance improvements
Files:
CHANGELOG.md
🧠 Learnings (14)
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Exclude directories `/coverage`, `/tmp`, `/gen-examples`, `/packages/react-on-rails/lib`, `/node_modules`, and generated directories from IDE indexing to prevent slowdowns
Applied to files:
.lychee.tomldocs/upgrading/upgrading-react-on-rails.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to react_on_rails_pro/**/*.{js,ts,jsx,tsx,json,css,scss} : The `react_on_rails_pro/` directory has its own Prettier/ESLint configuration and will be linted separately in CI
Applied to files:
react_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/README.mddocs/upgrading/upgrading-react-on-rails.mdreact_on_rails_pro/docs/caching.md
📚 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:
react_on_rails_pro/docs/home-pro.mddocs/upgrading/upgrading-react-on-rails.mdCHANGELOG.mdreact_on_rails_pro/docs/caching.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to CHANGELOG_PRO.md : Update `/CHANGELOG_PRO.md` for Pro-only features, bug fixes, and performance improvements
Applied to files:
react_on_rails_pro/README.mdCHANGELOG.md
📚 Learning: 2025-10-23T17:22:01.074Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1875
File: lib/react_on_rails/utils.rb:112-124
Timestamp: 2025-10-23T17:22:01.074Z
Learning: In React on Rails, when Pro is installed but not licensed, the intended behavior is to raise an error on boot. The `react_on_rails_pro?` method validates licenses and should raise errors early (including during path resolution in methods like `server_bundle?`) to enforce licensing requirements rather than failing later with obscure errors.
Applied to files:
react_on_rails_pro/README.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to lib/react_on_rails/**/*.rb : Validate RBS signatures with `bundle exec rake rbs:validate` and run Steep type checker with `bundle exec rake rbs:steep` for Ruby files
Applied to files:
react_on_rails_pro/README.mddocs/upgrading/upgrading-react-on-rails.mdCHANGELOG.md
📚 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:
docs/upgrading/upgrading-react-on-rails.mdreact_on_rails_pro/docs/caching.md
📚 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:
docs/upgrading/upgrading-react-on-rails.mdCHANGELOG.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to {package.json,Rakefile,**/webpack.config.js,config/**/*.js} : Validate that no hardcoded paths need updating after resolving merge conflicts in build configuration files
Applied to files:
docs/upgrading/upgrading-react-on-rails.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Create webpack debugging scripts in the dummy app root to inspect actual webpack configuration when encountering webpack/Shakapacker issues, then remove debug scripts before committing
Applied to files:
docs/upgrading/upgrading-react-on-rails.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to packages/react-on-rails/src/**/*.tsx : For React component files, use TypeScript (.tsx extension) and follow the component registry pattern for registration
Applied to files:
docs/upgrading/upgrading-react-on-rails.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to lib/react_on_rails/**/*.rb : Add RBS type signatures for new Ruby files in `lib/react_on_rails/` by creating corresponding `.rbs` files in `sig/react_on_rails/`
Applied to files:
docs/upgrading/upgrading-react-on-rails.mdreact_on_rails_pro/docs/caching.md
📚 Learning: 2025-12-16T19:45:54.357Z
Learnt from: alexeyr-ci2
Repo: shakacode/react_on_rails PR: 2183
File: docs/building-features/react-helmet.md:6-12
Timestamp: 2025-12-16T19:45:54.357Z
Learning: In all end-user documentation under docs/, ensure package-manager-agnostic installation instructions include npm, yarn, and pnpm. Reserve the pnpm-only policy for internal development files (package.json, scripts, CI configs, developer guides like CLAUDE.md/WARP.md).
Applied to files:
docs/upgrading/upgrading-react-on-rails.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to CHANGELOG.md : Update `/CHANGELOG.md` for open-source features, bug fixes, breaking changes, and performance improvements
Applied to files:
CHANGELOG.md
🪛 LanguageTool
react_on_rails_pro/docs/caching.md
[grammar] ~25-~25: Ensure spelling is correct
Context: ... Timing of the cached view helper which maybe calling server rendering. Here's a sam...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~47-~47: Use a hyphen to join words.
Context: ... Rendering) Caching ### Why? 1. Server side rendering is typically done like a ...
(QB_NEW_EN_HYPHEN)
[grammar] ~52-~52: Ensure spelling is correct
Context: ...f you're using regular caching for most componentas (cached_react_component_hash), and you ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~52-~52: Ensure spelling is correct
Context: ...ll your rendering calls, increasing the liklihood of premature cache ejection. In the fu...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~54-~54: Use a hyphen to join words.
Context: ...eful server rendering. Thus, your server side JavaScript depend on externalities,...
(QB_NEW_EN_HYPHEN)
[style] ~190-~190: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’.
Context: ... Pro returns both the raw cache key and whether or not there was a cache hit. ### Your JavaSc...
(WHETHER)
🪛 markdownlint-cli2 (0.18.1)
react_on_rails_pro/docs/caching.md
7-7: Images should have alternate text (alt text)
(MD045, no-alt-text)
⏰ 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). (10)
- GitHub Check: dummy-app-integration-tests (3.4, 22, latest)
- GitHub Check: rspec-package-tests (3.4, latest)
- GitHub Check: examples (3.4, latest)
- GitHub Check: pro-lint-js-and-ruby
- GitHub Check: precompile-check
- GitHub Check: build
- GitHub Check: build-dummy-app-webpack-test-bundles
- GitHub Check: build-dummy-app-webpack-test-bundles
- GitHub Check: claude-review
- GitHub Check: markdown-link-check
🔇 Additional comments (5)
docs/upgrading/upgrading-react-on-rails.md (1)
279-279: URL reference is accurate and currently maintained.The react-on-rails-v9-rc-generator repository exists and contains the webpacker.yml example. The same URL is referenced in official ShakaCode upgrade documentation, confirming this is the canonical reference for the webpacker configuration during v9 upgrades. The change is appropriate.
react_on_rails_pro/docs/caching.md (1)
1-245: Scope mismatch: Document reformatting outside PR objectives.The PR objectives focus on fixing broken links and updating badges in README. However, this file shows comprehensive cosmetic reformatting (list numbering, whitespace, wording adjustments). Please clarify if these changes are intentional as part of this PR or if they should be separated into a distinct documentation cleanup PR. This helps keep the review scope focused and makes it easier to track the purpose of each change.
Per the retrieved learnings, the
react_on_rails_pro/directory has its own Prettier/ESLint configuration and will be linted separately in CI. Are these changes aligned with that separate linting process, or should formatting concerns be deferred to that pipeline?react_on_rails_pro/README.md (1)
6-6: LGTM! Badge update is consistent with workflow rename.The badge URL and link have been correctly updated to reflect the workflow rename from
pro-package-tests.ymltopro-test-package-and-gem.yml. Both the badge image source and the link target are updated consistently.react_on_rails_pro/docs/home-pro.md (1)
42-42: Documentation link is correct and points to the existing configuration reference file.The link to
docs/api-reference/configuration.mdis valid and properly formatted..lychee.toml (1)
41-64: Link checker exclusions are well-documented and appropriately categorized.The new exclusions are properly organized with clear justifications:
- Badge services that block automated requests (badge.fury.io)
- Sites from PROJECTS.md that block bots or are unreliable (foxford.ru, airgoat.com, first.io, estately.com, careerbuilder.com, blog.shakacode.com, hiring.careerbuilder.com)
- Historical releases never tagged (8.0.7 and 10.1.2) with reference to issue #2232 for investigation details
- Deleted GitHub user accounts (alleycat-at-git, Conturbo, jblasco3, nostophilia, railsme, samphilipd, wouldntsavezion)
- Private repository requiring authentication (react_on_rails_pro)
The comments clearly explain why each exclusion is necessary, and the regex patterns are correctly formatted.
Code Review - PR #2237: Fix broken links and update badgesOverall Assessment: ✅ Excellent WorkThis PR demonstrates excellent documentation maintenance practices with thorough investigation, clear documentation, and comprehensive fixes. The code quality is high and follows repository conventions. Strengths1. Exceptional Documentation 📝
2. Comprehensive Link Fixes 🔗
3. Accurate Badge Updates ✨
4. CHANGELOG Tag Consistency 📋
Code Quality Observations✅ Best Practices Followed
📊 File Changes Analysis
Suggestions for Future Work1. Link Checker Checklist Location 📁Consider: The new
Recommendation: Move to 2. Lychee Exclusion Maintenance 🧹The exclusions list is growing. Consider adding a comment section in # Last reviewed: 2025-12-19
# Next review: 2026-06-19 (test if sites are back online)This helps future maintainers know when to re-validate exclusions. 3. Documentation Cross-References 🔗The Pro
Testing Observations✅ Verification Steps (Recommended): # Verify badges render correctly
# Check: https://github.com/shakacode/react_on_rails/tree/ihabadham/link-checker-cleanup
# Run link checker locally
bin/check-links
# Verify CHANGELOG compare links work
# Example: https://github.com/shakacode/react_on_rails/compare/v16.2.0.beta.19...v16.2.0.beta.20Security Considerations✅ No security concerns:
Performance Considerations✅ Positive impact:
Potential Issues
|
df3287f to
e67067e
Compare
Code Review - Link Checker Cleanup✅ Overall AssessmentThis is a well-executed documentation cleanup PR. The changes are focused, well-documented, and follow project conventions. The systematic approach to fixing broken links demonstrates thoroughness. 📝 Strengths
🔍 Code QualityREADME.md Changes:
CHANGELOG.md Changes:
.lychee.toml Changes:
link-checker-checklist.md:
🐛 Potential IssuesNone identified - this is a low-risk documentation change. 🔒 Security ConcernsNone - purely documentation/configuration changes. ⚡ Performance ConsiderationsPositive impact: Better link checker exclusions will make CI runs faster and more reliable. 🧪 Test CoverageN/A for this PR - documentation changes don't require code tests. Recommended verification:
📋 Recommendations
✨ Praise
🎯 VerdictAPPROVED ✅ This PR is ready to merge. It's a clean, well-documented improvement to project documentation and CI reliability. Suggested merge message: Reviewed per CLAUDE.md guidelines ✓ |
There was a problem hiding this comment.
Actionable comments posted: 0
♻️ Duplicate comments (2)
react_on_rails_pro/docs/caching.md (1)
25-25: Address previously flagged grammar and spelling errors still present in modified lines.These issues were identified in a past review and remain unfixed in the current changeset, despite being in lines marked as changed. LanguageTool has again flagged them:
- Line 25: "which maybe calling" → "which may be calling"
- Line 47: "Server side rendering" → "Server-side rendering" (compound adjective requires hyphen)
- Line 52: "componentas" → "components"; "liklihood" → "likelihood"
- Line 54: "server side JavaScript" → "server-side JavaScript" (compound adjective)
- Line 206: "THe goal" → "The goal"
- Line 190: "whether or not there was a cache hit" → consider shortening to "whether there was a cache hit"
🔎 Proposed fixes
- - **cached_react_component** and **cached_react_component_hash**: Timing of the cached view helper which maybe calling server rendering. + - **cached_react_component** and **cached_react_component_hash**: Timing of the cached view helper which may be calling server rendering. - 1. Server side rendering is typically done like a stateless functional component, meaning that the result should be idempotent from based on props passed in. + 1. Server-side rendering is typically done like a stateless functional component, meaning that the result should be idempotent from based on props passed in. - If you're using regular caching for most componentas (cached_react_component_hash), and you don't want to use caching for other components, then having prerender caching still results in caching for all your rendering calls, increasing the liklihood of premature cache ejection. + If you're using regular caching for most components (cached_react_component_hash), and you don't want to use caching for other components, then having prerender caching still results in caching for all your rendering calls, increasing the likelihood of premature cache ejection. - In the future, React on Rails will allow stateful server rendering. Thus, your server side JavaScript depend on externalities, such as AJAX calls for + In the future, React on Rails will allow stateful server rendering. Thus, your server-side JavaScript depend on externalities, such as AJAX calls for - Cache key composition can be confirmed in development mode with the following steps. THe goal is to confirm that some change that should trigger new cached data actually triggers a new cache key. + Cache key composition can be confirmed in development mode with the following steps. The goal is to confirm that some change that should trigger new cached data actually triggers a new cache key. - Note in the above example, React on Rails Pro returns both the raw cache key and whether or not there was a cache hit. + Note in the above example, React on Rails Pro returns both the raw cache key and whether there was a cache hit.Also applies to: 47-47, 52-52, 54-54, 206-206, 190-190
link-checker-checklist.md (1)
1-88: Remove temporary tracking file before merging.As noted in previous review comments, this checklist is a temporary tracking document that should not be committed to the repository. Temporary files create clutter and will quickly become outdated after merge.
Action required: Delete this file before merging the PR.
Recommended alternatives for preserving this information:
- Post as a comment on PR #2237 or issue #2232 for visibility
- Keep locally in your working directory
- Use GitHub Projects or Milestones to track remediation work
- Archive in wiki, discussions, or internal documentation
Once the cleanup work is complete and related PRs are merged, this tracking document can be discarded.
🧹 Nitpick comments (1)
react_on_rails_pro/docs/home-pro.md (1)
42-42: Use relative path for consistency.This change introduces an absolute GitHub URL while other references to the same file (lines 62, 164) use relative paths (
./configuration.md). Mixing absolute and relative URLs creates maintenance overhead and can break when the repository is forked or viewed locally.🔎 Proposed fix: Use consistent relative path
If linking to the Pro configuration docs in the same repository:
-For more details, see [Rails Configuration](https://github.com/shakacode/react_on_rails/blob/master/docs/api-reference/configuration.md). +For more details, see [Rails Configuration](./configuration.md).If the intent is to link to the main (non-Pro) React on Rails configuration docs, verify the target file exists and consider adding a comment explaining why this reference differs from the others.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (10)
.lychee.toml(1 hunks)CHANGELOG.md(3 hunks)NEWS.md(1 hunks)README.md(3 hunks)docs/upgrading/upgrading-react-on-rails.md(1 hunks)link-checker-checklist.md(1 hunks)react_on_rails_pro/README.md(1 hunks)react_on_rails_pro/docs/caching.md(12 hunks)react_on_rails_pro/docs/home-pro.md(1 hunks)react_on_rails_pro/docs/release-notes/v4-react-server-components.md(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- react_on_rails_pro/README.md
🚧 Files skipped from review as they are similar to previous changes (4)
- CHANGELOG.md
- NEWS.md
- README.md
- docs/upgrading/upgrading-react-on-rails.md
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{js,jsx,ts,tsx,json,css,scss,md}
📄 CodeRabbit inference engine (CLAUDE.md)
Use Prettier as the sole authority for formatting non-Ruby files
Files:
react_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/docs/release-notes/v4-react-server-components.mdlink-checker-checklist.mdreact_on_rails_pro/docs/caching.md
🧠 Learnings (17)
📓 Common learnings
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to CHANGELOG.md : Update `/CHANGELOG.md` for open-source features, bug fixes, breaking changes, and performance improvements
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to CHANGELOG_PRO.md : Update `/CHANGELOG_PRO.md` for Pro-only features, bug fixes, and performance improvements
📚 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:
react_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/docs/release-notes/v4-react-server-components.mdreact_on_rails_pro/docs/caching.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to react_on_rails_pro/**/*.{js,ts,jsx,tsx,json,css,scss} : The `react_on_rails_pro/` directory has its own Prettier/ESLint configuration and will be linted separately in CI
Applied to files:
react_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/docs/caching.md
📚 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:
react_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/docs/release-notes/v4-react-server-components.mdreact_on_rails_pro/docs/caching.md
📚 Learning: 2025-09-15T21:24:48.207Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1781
File: node_package/src/ClientSideRenderer.ts:82-95
Timestamp: 2025-09-15T21:24:48.207Z
Learning: In React on Rails, the force_load feature includes both explicit `data-force-load="true"` usage and the ability to hydrate components during the page loading state (`document.readyState === 'loading'`). Both capabilities require a Pro license, so the condition `!railsContext.rorPro && (isComponentForceLoaded || document.readyState === 'loading')` correctly gates both scenarios.
Applied to files:
react_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/docs/caching.md
📚 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:
react_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/docs/caching.md
📚 Learning: 2025-10-23T17:22:01.074Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1875
File: lib/react_on_rails/utils.rb:112-124
Timestamp: 2025-10-23T17:22:01.074Z
Learning: In React on Rails, when Pro is installed but not licensed, the intended behavior is to raise an error on boot. The `react_on_rails_pro?` method validates licenses and should raise errors early (including during path resolution in methods like `server_bundle?`) to enforce licensing requirements rather than failing later with obscure errors.
Applied to files:
react_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/docs/caching.md
📚 Learning: 2025-02-13T16:50:47.848Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1644
File: node_package/src/clientStartup.ts:18-21
Timestamp: 2025-02-13T16:50:47.848Z
Learning: In the react_on_rails module, the `reactOnRailsPageUnloaded` function in clientStartup.ts is intentionally kept private as it's only used internally as a callback for `onPageUnloaded`.
Applied to files:
react_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/docs/release-notes/v4-react-server-components.mdreact_on_rails_pro/docs/caching.md
📚 Learning: 2025-02-18T13:08:01.477Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1644
File: lib/react_on_rails/helper.rb:190-197
Timestamp: 2025-02-18T13:08:01.477Z
Learning: RSC support validation in React on Rails Pro is handled through a chain of validations:
1. Pro version check in `run_stream_inside_fiber`
2. RSC support check during pack generation via `ReactOnRailsPro.configuration.enable_rsc_support`
3. RSC support validation during component registration
This makes additional validation in the helper methods unnecessary.
Applied to files:
react_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/docs/caching.md
📚 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:
react_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/docs/release-notes/v4-react-server-components.mdreact_on_rails_pro/docs/caching.md
📚 Learning: 2025-04-09T12:56:10.756Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1696
File: node_package/src/RSCPayloadContainer.ts:0-0
Timestamp: 2025-04-09T12:56:10.756Z
Learning: In the react_on_rails codebase, RSC payloads are already stringified using `JSON.stringify()` before being processed by the `escapeScript` function, which handles escaping of special characters. The function only needs to handle specific HTML markers like comments and closing script tags.
Applied to files:
react_on_rails_pro/docs/home-pro.mdreact_on_rails_pro/docs/caching.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to react_on_rails/spec/dummy/e2e/playwright/**/*.spec.js : In Playwright E2E tests, use `app('clean')` in `beforeEach` to ensure clean database state, and leverage Rails helpers (appFactories, appEval) instead of UI setup
Applied to files:
react_on_rails_pro/docs/home-pro.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Exclude directories `/coverage`, `/tmp`, `/gen-examples`, `/packages/react-on-rails/lib`, `/node_modules`, and generated directories from IDE indexing to prevent slowdowns
Applied to files:
.lychee.toml
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to lib/react_on_rails/**/*.rb : Add RBS type signatures for new Ruby files in `lib/react_on_rails/` by creating corresponding `.rbs` files in `sig/react_on_rails/`
Applied to files:
react_on_rails_pro/docs/caching.md
📚 Learning: 2025-02-18T13:08:01.477Z
Learnt from: AbanoubGhadban
Repo: shakacode/react_on_rails PR: 1644
File: lib/react_on_rails/helper.rb:190-197
Timestamp: 2025-02-18T13:08:01.477Z
Learning: RSC support validation is handled in deeper level calls of the React on Rails Pro codebase, so it doesn't need to be validated again in the `rsc_payload_react_component` helper method.
Applied to files:
react_on_rails_pro/docs/caching.md
📚 Learning: 2024-10-08T20:53:47.076Z
Learnt from: theforestvn88
Repo: shakacode/react_on_rails PR: 1620
File: spec/dummy/client/app/startup/HelloTurboStream.jsx:3-3
Timestamp: 2024-10-08T20:53:47.076Z
Learning: The `RailsContext` import in `spec/dummy/client/app/startup/HelloTurboStream.jsx` is used later in the project, as clarified by the user theforestvn88.
Applied to files:
react_on_rails_pro/docs/caching.md
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to lib/react_on_rails/**/*.rb : Validate RBS signatures with `bundle exec rake rbs:validate` and run Steep type checker with `bundle exec rake rbs:steep` for Ruby files
Applied to files:
react_on_rails_pro/docs/caching.md
🪛 LanguageTool
react_on_rails_pro/docs/caching.md
[grammar] ~25-~25: Ensure spelling is correct
Context: ... Timing of the cached view helper which maybe calling server rendering. Here's a sam...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~47-~47: Use a hyphen to join words.
Context: ... Rendering) Caching ### Why? 1. Server side rendering is typically done like a ...
(QB_NEW_EN_HYPHEN)
[grammar] ~52-~52: Ensure spelling is correct
Context: ...f you're using regular caching for most componentas (cached_react_component_hash), and you ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~52-~52: Ensure spelling is correct
Context: ...ll your rendering calls, increasing the liklihood of premature cache ejection. In the fu...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~54-~54: Use a hyphen to join words.
Context: ...eful server rendering. Thus, your server side JavaScript depend on externalities,...
(QB_NEW_EN_HYPHEN)
[style] ~190-~190: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’.
Context: ... Pro returns both the raw cache key and whether or not there was a cache hit. ### Your JavaSc...
(WHETHER)
⏰ 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). (10)
- GitHub Check: dummy-app-integration-tests (3.4, 22, latest)
- GitHub Check: rspec-package-tests (3.4, latest)
- GitHub Check: examples (3.4, latest)
- GitHub Check: build-dummy-app-webpack-test-bundles
- GitHub Check: pro-lint-js-and-ruby
- GitHub Check: build
- GitHub Check: build-dummy-app-webpack-test-bundles
- GitHub Check: precompile-check
- GitHub Check: claude-review
- GitHub Check: markdown-link-check
🔇 Additional comments (2)
react_on_rails_pro/docs/release-notes/v4-react-server-components.md (1)
66-66: LGTM: Wayback Machine archive preserves dead reference.Replacing the dead questlab.pro link with a Wayback Machine archive is the correct approach for maintaining historical references in documentation.
.lychee.toml (1)
41-73: LGTM: Well-documented exclusions handle legitimate CI failures.The added exclusions appropriately handle various categories of link-checking issues:
- Badge services and sites that block automated requests
- Timeout-prone external sites
- Historical references to never-tagged releases
- Deleted contributor accounts
- Private repositories
The regex patterns are correctly escaped and anchored, and the comments clearly document the reason for each exclusion.
Code Review - PR #2237: Fix broken links and update badgesSummaryThis PR addresses infrastructure hygiene by fixing broken links and updating badges after workflow renames. The changes are well-documented and follow a clear pattern of fixing historical issues that cannot be corrected at the source. ✅ Strengths1. Excellent Documentation
2. Comprehensive Approach
3. Good Separation of Concerns
🔍 Observations & Suggestions1. CHANGELOG Tag Prefix Inconsistency [unreleased]: https://github.com/shakacode/react_on_rails/compare/v16.2.0.beta.20...master
[16.2.0.beta.20]: https://github.com/shakacode/react_on_rails/compare/v16.2.0.beta.19...v16.2.0.beta.20
[16.2.0.beta.19]: https://github.com/shakacode/react_on_rails/compare/16.1.1...v16.2.0.beta.19Question: Should git tag | grep "16\.1\.1"2. Lychee Configuration Changes
This is reasonable for CI flakiness, but consider:
3. Redux GitHub URL Update ✅ 4. Historical Tag Exclusions ## [8.0.7] - Never Released
<!-- Note: This version was documented but never tagged. Changes were included in 9.0.0 -->5. Minor: Deleted Account Exclusions 🧪 Testing RecommendationsPre-merge checklist: # 1. Verify the workflow badges render correctly
# Visit the README on your PR branch and check all badges load
# 2. Verify git tags match your CHANGELOG fixes
git tag | grep -E "(16\.2\.0\.beta\.(19|20)|16\.1\.1|2\.0\.[01])"
# 3. Run link checker locally to confirm exclusions work
# (Assuming lychee is available)
lychee --config .lychee.toml README.md CHANGELOG.md
# 4. Verify the gem download badge shows correct count
curl -I "https://img.shields.io/gem/dt/react_on_rails" | grep -i location🎯 Code Quality Assessment
🚀 RecommendationAPPROVE with minor verification suggested for CHANGELOG tag prefixes. This is solid infrastructure work that will prevent CI failures and keep documentation accurate. The systematic approach to categorizing link issues is exemplary. Action items before merge:
📚 Adherence to Project Guidelines✅ Follows CLAUDE.md requirements:
Great work on the systematic cleanup! This kind of infrastructure maintenance is often overlooked but crucial for project health. 🙌 |
PR Review: Fix broken links and update badgesOverall AssessmentThis is a well-executed documentation maintenance PR that addresses broken links and outdated badges. The changes are straightforward, low-risk, and improve the project documentation quality. Strengths1. Comprehensive Link Audit
2. Well-Documented ExclusionsThe .lychee.toml additions are excellent:
3. Proper Tag Prefix CorrectionsThe CHANGELOG fixes show attention to detail - ensures compare links work correctly with actual git tags. 4. Follows CLAUDE.md Guidelines
Minor Observations1. Badge URL ChangeAdding alt text Gem Downloads is good for accessibility. The shields.io endpoint should be reliable long-term. 2. Lychee Exclusion ScopeThe exclusions for deleted GitHub accounts use exact username matches with dollar sign anchors, which only excludes profile pages. If you want to exclude all links to these users (including PRs, issues, comments), consider removing the dollar sign anchor. Current: Only excludes profile pages 3. Historical Tag DocumentationThe comments about never-tagged releases are excellent and prevent future confusion. Testing RecommendationsPre-merge:
Post-merge:
Risk AssessmentRisk Level: Very Low
Suggestions (Non-blocking)
RecommendationAPPROVE - This PR is ready to merge once CI passes. The changes are well-documented, low-risk, and improve documentation quality. The exclusion comments in .lychee.toml are particularly well done and will help future maintainers. Related DocumentationPer CLAUDE.md:
Great work on the thorough link audit and documentation! |
## Summary Fixes grammar and spelling errors in `react_on_rails_pro/docs/caching.md`: - "which maybe calling" → "which may be calling" - "componentas" → "components" - "liklihood" → "likelihood" - "THe goal" → "The goal" - "idempotent from based on" → "idempotent based on" - "particulary" → "particularly" Initially identified by CodeRabbit in [PR #2237 review](#2237 (comment)). Additional typos identified by Claude review. 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Improved clarity and accuracy in caching documentation with corrections to spelling, grammar, punctuation, and formatting. <sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub> <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 4.5 <[email protected]>
Temporary file to track investigation of 43 broken links. Will be deleted before merging. Related to #2232
- Update workflow badges in README.md (main.yml → integration-tests.yml, rspec-package-specs.yml → gem-tests.yml) after PR #2020 renamed them - Replace dead ruby-gem-downloads-badge.herokuapp.com with shields.io (Heroku free tier shutdown Nov 2022) - Fix CHANGELOG tag prefixes to match actual git tags: - Add v prefix to 16.2.0.beta.19/20 (tags have v prefix) - Remove v prefix from 2.0.0 (tag has no v prefix) - Add lychee exclusions for: - Historical releases never tagged (8.0.7, 10.1.2 - CHANGELOG updated but git tag + version bump forgotten) - Deleted GitHub user accounts (7 contributors) - Private react_on_rails_pro repo Part of #2232 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
.lychee.toml (1)
97-97: Consider removing the$anchor for broader matching.The
$end anchor restricts this pattern to exact profile URLs (e.g.,https://github.com/alleycat-at-git). However, CHANGELOG entries might also reference these users' repositories, commits, or pull requests (e.g.,https://github.com/alleycat-at-git/some-repo/pull/123), which won't be matched.🔎 More permissive pattern
- '^https://github\.com/(alleycat-at-git|Conturbo|jblasco3|nostophilia|railsme|samphilipd|wouldntsavezion)$', + '^https://github\.com/(alleycat-at-git|Conturbo|jblasco3|nostophilia|railsme|samphilipd|wouldntsavezion)(/|$)',This pattern matches both the profile page and any subpaths (repos, commits, PRs, etc.).
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.lychee.toml(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to CHANGELOG_PRO.md : Update `/CHANGELOG_PRO.md` for Pro-only features, bug fixes, and performance improvements
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Applies to CHANGELOG.md : Update `/CHANGELOG.md` for open-source features, bug fixes, breaking changes, and performance improvements
📚 Learning: 2025-12-16T03:39:07.980Z
Learnt from: CR
Repo: shakacode/react_on_rails PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-16T03:39:07.980Z
Learning: Exclude directories `/coverage`, `/tmp`, `/gen-examples`, `/packages/react-on-rails/lib`, `/node_modules`, and generated directories from IDE indexing to prevent slowdowns
Applied to files:
.lychee.toml
🔇 Additional comments (1)
.lychee.toml (1)
17-81: Excellent reorganization!The file structure is now much clearer with consistent section headers and logical grouping. Most importantly, the
pivotaltracker.comandundeveloped.compatterns (lines 78-79) are now correctly placed under "EXTERNAL SITES THAT TIMEOUT DURING CI CHECKS," addressing the earlier feedback. The visual separation with blank lines and=dividers significantly improves maintainability.
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
pro-package-tests.yml was renamed to pro-test-package-and-gem.yml in PR #2020. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
- caching.md: docs/basics/generator-functions-and-railscontext.md → docs/core-concepts/render-functions-and-railscontext.md - home-pro.md: docs/configuration.md → docs/api-reference/configuration.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Returns 403 for automated requests but works in browsers. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
/docs/api/ → /docs/api-reference/ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Point to react-on-rails-v9-rc-generator which still has the historical webpacker.yml config (same repo used elsewhere in this doc section). The react-webpack-rails-tutorial repo migrated to shakapacker.yml. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Change http://www.reactrails.com to https://reactrails.com. The www subdomain with http:// was not responding. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
The questlab.pro domain expired. Using archived copy to preserve the Meta RSC migration case study reference. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Planned spec/dummy demo deployment not yet live. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
- Update reactjs/redux to reduxjs/redux (repo moved) - Remove outdated 2016 coaching line with dead shakacode.com/work link - Add lychee exclusions for sites that timeout in CI: pivotaltracker.com, undeveloped.com, devchat.tv, chlg.co 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
All 15 fixes complete, 2 remaining items covered by PR #2236. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
- Delete link-checker-checklist.md (temporary tracking file, preserved in git history) - Increase retries from 4 to 5 and wait time from 15s to 30s for transient 504 errors 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
reactrails.com returns 504 from GitHub Actions IPs but works locally. Reverted retry settings (5/30s → 4/15s) since increased retries didn't help. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
a2301a0 to
e3c1a2d
Compare
…ntries - Add visual section separators with ============== style headers - Move pivotaltracker.com and undeveloped.com to 'EXTERNAL SITES THAT TIMEOUT DURING CI CHECKS' section - Add blank lines between major categories for better readability - Improve category naming for clarity (e.g., 'SITES FROM PROJECTS.MD' -> 'SITES FROM PROJECTS.MD THAT BLOCK BOTS OR ARE UNRELIABLE') Co-authored-by: Ihab Adham <[email protected]>
Summary
Details
Workflow Badges (README.md)
PR #2020 renamed workflows but didn't update README badges:
main.yml→integration-tests.ymlrspec-package-specs.yml→gem-tests.ymlDownload Badge (README.md)
ruby-gem-downloads-badge.herokuapp.comdied when Heroku removed free tier (Nov 2022). Replaced with shields.io:img.shields.io/gem/dt/react_on_railsCHANGELOG Tag Prefixes
Fixed compare links to match actual git tags:
16.2.0.beta.19/20→v16.2.0.beta.19/20(tags have v prefix)v2.0.0→2.0.0(tag has no v prefix)Lychee Exclusions
Added exclusions for issues that can't be fixed:
react_on_rails_prorequires authenticationRelated
Test plan
🤖 Generated with Claude Code
Summary by CodeRabbit
Documentation
Chores
✏️ Tip: You can customize this high-level summary in your review settings.