-
-
Notifications
You must be signed in to change notification settings - Fork 638
Comprehensive rewrite of React on Rails Pro README #1987
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 complete rewrite of the React on Rails Pro README.md to address all identified issues and better serve as the entry point for a commercial product. Key improvements: ### Structure & Content - Added comprehensive table of contents for easy navigation - Clear explanation of what React on Rails Pro is and its relationship to open source - Prominent licensing information (free for non-commercial, paid for production) - Added "Why Use Pro?" section with real-world performance case study (Popmenu) - Comparison table showing Pro vs. Open Source features - Complete FAQ section addressing licensing, technical, and getting started questions ### Installation & Getting Started - Quick start guide (5 minutes from zero to running) - Clear prerequisites and compatibility matrix - Instructions for installing from public monorepo (no more private GitHub packages confusion) - Step-by-step verification instructions ### Features - Expanded feature descriptions with code examples - Benefits listed for each feature - Links to detailed documentation - Practical examples showing actual usage ### Documentation - Organized docs into logical categories (Installation, Features, API) - Brief descriptions of what each doc contains - Clear upgrade guidance pointing to CHANGELOG ### Support & Contact - Multiple ways to get help (email, documentation) - Professional services information - About ShakaCode section ### Badges & Metadata - Removed fake CircleCI badge - Added real GitHub Actions badges for Pro workflows - Added commercial license badge - All badges link to actual workflows ### Examples - Explained the Pro dummy app and how to run it - Listed features demonstrated in the example - Linked to real-world production example (Popmenu) ### Licensing - Clear explanation that it's free for non-commercial use - Instructions to get FREE 3-month license in 30 seconds - Link to comprehensive LICENSE_SETUP.md - Explained difference between free and commercial licenses This README now properly positions React on Rails Pro as a commercial product while making it easy for developers to evaluate and get started. Fixes all 20+ issues documented in react_on_rails_pro_readme_issues.md. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
WalkthroughREADME for React on Rails Pro was fully rewritten into a marketing/documentation hub: licensing and pricing, high-level feature sections, requirements, getting started with license setup, examples, FAQ, support, and branding — replacing prior technical onboarding content. (47 words) Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10–15 minutes
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
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: React on Rails Pro README RewriteThis is an excellent and comprehensive rewrite of the Pro README. The transformation from a sparse technical document to a professional commercial product README is impressive. Here's my detailed feedback: ✅ Strengths1. Outstanding Structure & Organization
2. Licensing & Pricing Clarity ⭐
3. Marketing & Positioning
4. Technical Accuracy
5. Getting Started Experience
6. Comprehensive FAQ
🔍 Minor Issues & Suggestions1. Installation Instructions - Minor Clarity IssueLocation: Lines 297-308 The README shows two installation methods but doesn't clearly explain when to use each: # Method 1: From rubygems (implied but not stated)
gem 'react_on_rails_pro', '~> 4.0'
# Method 2: From GitHub
gem 'react_on_rails_pro', git: 'https://github.com/shakacode/react_on_rails.git',
glob: 'react_on_rails_pro/*.gemspec',
tag: 'v4.0.0'Suggestion: Add a brief explanation: # If published to RubyGems (recommended):
gem 'react_on_rails_pro', '~> 4.0'
# Or install directly from GitHub for pre-release versions:
gem 'react_on_rails_pro', git: 'https://github.com/shakacode/react_on_rails.git',
glob: 'react_on_rails_pro/*.gemspec',
tag: 'v4.0.0'Question for maintainers: Is Pro actually published to RubyGems? If not, remove method 1. 2. React Server Components Documentation GapLocation: Line 228 The RSC section says "Contact [email protected] for RSC documentation" but other features link to actual docs. Suggestion:
3. Compatibility Matrix VersioningLocation: Lines 269-272 The compatibility matrix shows:
Question: Is "React on Rails >= 16.0" correct? The main React on Rails gem is currently at v13.x-14.x range (based on typical versioning). This seems like it might be referencing React version instead of React on Rails version. Recommendation: Verify these version numbers against actual releases in CHANGELOG.md. 4. Example License Token FormatLocation: Line 91 Shows: Minor suggestion: Consider adding a comment that this is a JWT token format for clarity: # License is provided as a JWT token
export REACT_ON_RAILS_PRO_LICENSE="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."5. Node.js Version RequirementLocation: Line 264 States: "Node.js: >= 18 (for Node Renderer)" Question: Is Node 18 required for ALL Node Renderer use, or just for certain features (RSC/Streaming)? The earlier parts of the docs suggest Node Renderer can work with older Node versions for basic SSR. Suggestion: Clarify if this is a hard requirement or recommended version. 🎯 Best Practices Observations✅ Excellent
✅ Documentation Anti-Patterns Avoided
🔒 Security & Best Practices✅ Good
📊 Comparison to Original
📝 Final RecommendationsHigh Priority (Before Merge)
Medium Priority (Can Address Later)
Low Priority (Nice to Have)
✨ SummaryThis README is production-ready with minor clarifications needed. The transformation is exceptional:
Recommendation: Approve with minor revisions (clarify version numbers and installation methods). 🎉 KudosThis is how commercial open-source READMEs should be written. Great work on:
This README will significantly improve the Pro product's discoverability and adoption. 🚀 Generated by Claude Code | Need changes? Happy to help refine further! |
PR Review: Comprehensive rewrite of React on Rails Pro READMEOverall AssessmentVerdict: ✅ EXCELLENT - Ready to merge with minor suggestions This is a major improvement over the existing README. The rewrite transforms what was a minimal, developer-focused document into a comprehensive, professional README suitable for a commercial product. All 20+ identified issues have been addressed effectively. ✅ Strengths1. Professional Structure & Navigation
2. Licensing Clarity ⭐
3. Marketing & Value Proposition
4. Improved Installation Guide
5. Enhanced Feature Documentation
6. Comprehensive FAQ
7. Support & Contact Information
🔍 Code Quality AssessmentDocumentation Quality: ✅ Excellent
Accuracy: ✅ Verified
Consistency: ✅ Good
🐛 Potential IssuesMinor Issues Found: 21. Missing ruby-api.md File Path ReferenceLocation: Line ~216 and ~383 2. External Link ValidationIssue: Several external links should be verified:
Recommendation: Test these links before merge to ensure they work 💡 Suggestions for EnhancementHigh Priority1. Add Installation from RubyGems Once Published Suggestion: Add note about whether this gem is published to RubyGems or if it's GitHub-only. If GitHub-only, the current instructions are correct. 2. Consider Adding Versioning Badge Suggestion: Add version badge if gem is published to RubyGems: Medium Priority3. Add Visual Diagram for Architecture Suggestion: Consider adding a link to a visual architecture diagram if one exists, or note this as future enhancement. 4. Add Response Time Metrics Suggestion: Add specific numbers like "from 200ms to 54ms average response time" if available. 5. Consider Adding Troubleshooting Quick Links Suggestion: Add a "Common Issues" section or link to docs/troubleshooting.md 🔒 Security ConsiderationsNo Security Issues Found ✅
⚡ Performance ConsiderationsN/A - Documentation Only ✅This PR only modifies documentation, no code changes that would impact performance. 🧪 Test CoverageDocumentation Testing NeededRecommendations:
📋 Checklist Review (Per CLAUDE.md)Required Before Merge:
Documentation Standards:
🎯 Final RecommendationsMust Fix Before Merge: NoneShould Fix Before Merge:
Nice to Have (Future PRs):
📊 Impact AssessmentUser Impact: ⭐⭐⭐⭐⭐ Very High (Positive)Before: Users were confused about:
After: Users will understand:
Developer Impact: Low
🎉 ConclusionThis is an outstanding rewrite that transforms the Pro README from a minimal technical document into a comprehensive, professional README worthy of a commercial product. It addresses all critical issues, especially the confusing licensing and fake CircleCI badge. The README now:
Recommendation: Approve and merge after verifying external links. 📝 Suggested CHANGELOG EntryBased on CLAUDE.md guidelines, this is a user-visible documentation improvement: ```markdown Documentation
Great work on this comprehensive improvement! 🎉 Review completed by Claude Code following repository guidelines in CLAUDE.md |
- Fixed ASCII box borders to be straight - Changed "When You Need Pro" to bulleted list format - Changed "Node Renderer Pool" to "Proper Node Renderer" in comparison table - Fixed cached_react_component examples to use block syntax (not props: ->) - Updated FAQ: developers in an org can share the same license - Added "Early hydration" to Pro features list - Updated Node Renderer FAQ: "optional but recommended" - Clarified ExecJS is for "apps that do not require advanced performance features" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
React on Rails Pro README.md IssuesThis document outlines the issues found in Critical Issues1. CircleCI Badge is Incorrect
2. Missing Licensing Information
3. Missing Prerequisites/Requirements Section
4. Installation Instructions Incomplete
Content & Structure Issues5. Missing "What is React on Rails Pro" Section
6. Inconsistent Tone/Target Audience
7. Missing Badges
8. "Getting Started" Section Confusion
9. Missing Support/Contact Information
10. Missing Upgrade Guide
11. Installation.md Has Outdated Info
Missing Sections (Compared to Open Source README)12. No "Why Use Pro?" Section
13. No Quick Start/Getting Started Guide
14. No Examples/Use Cases
15. No Compatibility/Requirements Table
16. No FAQ Section
Documentation Structure Issues17. Docs References Incomplete
18. Feature Descriptions Too Brief
Inconsistencies with Actual Implementation19. LICENSE_SETUP.md Not Mentioned
20. GitHub Actions Pro Workflows Exist
Recommendations for Complete RewriteThe README should follow this structure:
Additional Notes
|
The detailed analysis of all 20+ issues has been added as a comment on the PR for reference. No need to keep it in the repository. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
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: 2
🧹 Nitpick comments (2)
react_on_rails_pro/README.md (2)
100-110: Consider using markdown heading for "Case Study: Popmenu".For better document structure and accessibility, consider converting the bold text on line 104 to a markdown heading:
### Real-World Performance Gains React on Rails Pro delivers **measurable performance improvements** for production applications: - **Case Study: Popmenu** + ### Case Study: Popmenu - **73% decrease** in average response times
284-346: Numbered steps could use markdown headings for better structure.The Quick Start steps (lines 286, 290, 297, 320, 331) use bold formatting instead of markdown headings. Converting these to
### 1. Get a License, etc. would improve document outline, accessibility, and generate a table of contents entry:### Quick Start (5 Minutes) - **1. Get a License** + ### 1. Get a License Visit [https://shakacode.com/react-on-rails-pro]... - **2. Set License Environment Variable** + ### 2. Set License Environment Variable ```bash ... - **3. Install the Gem** + ### 3. Install the Gem
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
react_on_rails_pro/README.md(1 hunks)
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
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.
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.
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.
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.
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.
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.
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: 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`.
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.
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.
📚 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-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/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:
react_on_rails_pro/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:
react_on_rails_pro/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:
react_on_rails_pro/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:
react_on_rails_pro/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:
react_on_rails_pro/README.md
🪛 LanguageTool
react_on_rails_pro/README.md
[grammar] ~77-~77: Use a hyphen to join words.
Context: ... License (Production) - Duration: 1 year subscription (or longer) - *Usage...
(QB_NEW_EN_HYPHEN)
🪛 markdownlint-cli2 (0.18.1)
react_on_rails_pro/README.md
42-42: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
104-104: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
286-286: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
290-290: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
297-297: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
320-320: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
331-331: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
514-514: Link fragments should be valid
(MD051, link-fragments)
⏰ 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). (2)
- GitHub Check: claude-review
- GitHub Check: markdown-link-check
🔇 Additional comments (6)
react_on_rails_pro/README.md (6)
1-12: Header and badges are well-structured.The badges reference actual GitHub Actions workflows and provide clear visual status indicators. The CHANGELOG link is appropriately positioned.
141-258: Feature descriptions are comprehensive and well-presented.Each feature includes practical code examples, clear benefits, and links to detailed documentation. The progression from basic to advanced features is logical and easy to follow.
350-373: Documentation section is well-organized.The categorized documentation links provide clear navigation. However, verify that all linked documentation files exist in the repository.
Please confirm that the following documentation files exist at their referenced paths:
docs/installation.mddocs/configuration.mddocs/caching.mddocs/bundle-caching.mddocs/node-renderer/basics.mddocs/node-renderer/js-configuration.mddocs/ruby-api.mdLICENSE_SETUP.mdIf any are missing or at different paths, update the README links accordingly.
377-416: Example application section is clear and navigable.The section provides good guidance on running the Pro dummy app and lists the features it demonstrates. Verify that:
- The path
react_on_rails_pro/spec/dummyis correct in the monorepo structure- The
spec/dummy/README.mdfile exists and is up to date
419-540: Support, Contact, and FAQ sections are comprehensive and helpful.The FAQ addresses key questions about licensing, technical requirements, and getting started. The support section provides multiple contact channels and professional service options.
Verify that the link fragment on line 514 (
#pro-vs-open-source) correctly maps to the heading "Pro vs. Open Source" on line 123. In most markdown renderers, this should work correctly (heading converted to lowercase with spaces replaced by hyphens), but test it in the final rendered output to be sure.
544-577: License and Contributing sections provide proper attribution and guidance.The license section clearly summarizes the commercial nature of the product and links to detailed setup. The footer provides professional branding.
Verify that
CONTRIBUTING.mdexists at the referenced paths:
./CONTRIBUTING.md(Pro-specific)../CONTRIBUTING.md(General)
|
|
||
| ### How It Relates to React on Rails | ||
|
|
||
| ``` |
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.
Specify language for ASCII art code block.
The fenced code block is marked as ruby but contains ASCII art. Use ```text or ``` (no language) for this block.
Apply this diff:
- ```ruby
+ ```text
┌─────────────────────────────────────────────────┐🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
42-42: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
In react_on_rails_pro/README.md around line 42, the fenced code block is
labelled as "ruby" but contains ASCII art; change the fence language to plain
text (e.g., use ```text or no language) so syntax highlighters don't
misinterpret it — update the opening fence from ```ruby to ```text (or just
```).
| #### 💼 Commercial License (Production) | ||
|
|
||
| - **Duration**: 1 year subscription (or longer) | ||
| - **Usage**: Production deployments and commercial applications | ||
| - **Support**: Professional support included | ||
| - **Contact**: [[email protected]](mailto:[email protected]) for pricing | ||
|
|
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.
Use hyphenated compound adjective for clarity.
Line 77 should use "1-year subscription" (hyphenated) since it's a compound adjective modifying the noun "subscription."
Apply this diff:
- - **Duration**: 1 year subscription (or longer)
+ - **Duration**: 1-year subscription (or longer)📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| #### 💼 Commercial License (Production) | |
| - **Duration**: 1 year subscription (or longer) | |
| - **Usage**: Production deployments and commercial applications | |
| - **Support**: Professional support included | |
| - **Contact**: [[email protected]](mailto:[email protected]) for pricing | |
| #### 💼 Commercial License (Production) | |
| - **Duration**: 1-year subscription (or longer) | |
| - **Usage**: Production deployments and commercial applications | |
| - **Support**: Professional support included | |
| - **Contact**: [[email protected]](mailto:[email protected]) for pricing |
🧰 Tools
🪛 LanguageTool
[grammar] ~77-~77: Use a hyphen to join words.
Context: ... License (Production) - Duration: 1 year subscription (or longer) - *Usage...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
In react_on_rails_pro/README.md around lines 75 to 81, the phrase "1 year
subscription" on line 77 should be hyphenated as "1-year subscription" because
it's a compound adjective modifying "subscription"; update that line to use the
hyphenated form and keep the rest of the section unchanged.
To align with PR #1997 which removes the immediate_hydration config and makes it automatic for Pro users, updated the README to use the correct terminology "Immediate hydration" instead of "Early hydration". 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
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: 2
♻️ Duplicate comments (2)
react_on_rails_pro/README.md (2)
42-57: Use plain text or no language for ASCII art code block.The fenced code block contains ASCII art, not Ruby code. Update the fence language.
Apply this diff:
- ``` + ```text ┌─────────────────────────────────────────────────┐
75-81: Hyphenate compound adjective "1-year subscription."When a compound adjective precedes a noun, it should be hyphenated.
Apply this diff:
- - **Duration**: 1 year subscription (or longer) + - **Duration**: 1-year subscription (or longer)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
react_on_rails_pro/README.md(1 hunks)
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
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.
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.
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: 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.
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.
📚 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-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/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:
react_on_rails_pro/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:
react_on_rails_pro/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:
react_on_rails_pro/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:
react_on_rails_pro/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:
react_on_rails_pro/README.md
🪛 LanguageTool
react_on_rails_pro/README.md
[grammar] ~77-~77: Use a hyphen to join words.
Context: ... License (Production) - Duration: 1 year subscription (or longer) - *Usage...
(QB_NEW_EN_HYPHEN)
🪛 markdownlint-cli2 (0.18.1)
react_on_rails_pro/README.md
42-42: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
104-104: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
286-286: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
290-290: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
297-297: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
320-320: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
331-331: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
514-514: Link fragments should be valid
(MD051, link-fragments)
⏰ 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). (5)
- GitHub Check: build-dummy-app-webpack-test-bundles
- GitHub Check: build-dummy-app-webpack-test-bundles
- GitHub Check: lint-js-and-ruby
- GitHub Check: claude-review
- GitHub Check: markdown-link-check
🔇 Additional comments (2)
react_on_rails_pro/README.md (2)
1-11: Excellent: Real CI badges replace fake CircleCI reference.The badges now correctly point to actual GitHub Actions workflows for Pro, addressing a critical issue identified in the PR objectives. The change from fake CircleCI badge to real integration/lint/package test workflows is a significant improvement to credibility.
1-571: Excellent marketing and documentation hub rewrite.The README successfully addresses all 20+ documented issues from the PR objectives:
✅ Real GitHub Actions badges (lines 3-6)
✅ Prominent licensing information with free/commercial distinction (lines 61-94)
✅ Compatibility matrix and prerequisites (lines 261-278)
✅ Quick Start with 5-minute setup (lines 282-339)
✅ Real-world case study (Popmenu, lines 104-109)
✅ Pro vs. Open Source comparison table (lines 125-137)
✅ Code examples for each feature (lines 143-257)
✅ Dummy app walkthrough (lines 381-409)
✅ Comprehensive FAQ (lines 452-541)
✅ Support contact information (lines 419-449)The rewrite maintains technical credibility while adding marketing context. The table of contents, clear section hierarchy, and multiple navigation paths improve discoverability. Links to LICENSE_SETUP.md and documentation are appropriately placed.
|
|
||
| React on Rails Pro delivers **measurable performance improvements** for production applications: | ||
|
|
||
| **Case Study: Popmenu** |
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.
Use proper Markdown headings instead of emphasis for step and subsection headers.
Lines 104 (Case Study), 286, 290, 297, 320, and 331 use bold text (**...**) for headers that should be proper Markdown headings. This violates MD036 and degrades document structure and accessibility.
Apply these diffs:
### When You Need Pro
- **Case Study: Popmenu**
+ #### Case Study: Popmenu
- **73% decrease** in average response times ### Quick Start (5 Minutes)
- **1. Get a License**
+ #### 1. Get a License
Visit [https://shakacode.com/react-on-rails-pro]...- **2. Set License Environment Variable**
+ #### 2. Set License Environment Variable
```bash- **3. Install the Gem**
+ #### 3. Install the Gem
Since React on Rails Pro...- **4. Configure (Optional)**
+ #### 4. Configure (Optional)
Create `config/initializers/react_on_rails_pro.rb`:- **5. Verify Installation**
+ #### 5. Verify Installation
```bashAlso applies to: 286-286, 290-290, 297-297, 320-320, 331-331
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
104-104: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
🤖 Prompt for AI Agents
react_on_rails_pro/README.md around lines 104, 286, 290, 297, 320, and 331:
replace the instances where bold text (e.g., **Case Study: Popmenu**) is being
used as section/subsection headers with proper Markdown heading syntax (e.g., #,
##, or ### as appropriate for the document hierarchy), ensure there is a blank
line before and after each heading, remove the surrounding bold markers, and
adjust the heading level to match surrounding sections so the document structure
and accessibility comply with MD036.
| **Q: Is React on Rails Pro compatible with my React version?** | ||
|
|
||
| A: Pro works with React 16.8+. For React Server Components and Streaming SSR, you need React 18+. [See requirements →](#requirements) | ||
|
|
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.
🧩 Analysis chain
Verify link fragment matches heading anchor.
The link [See requirements →](#requirements) on line 514 may not resolve correctly. The heading "## 📋 Requirements" (line 261) will generate an anchor with emoji handling applied. Verify the actual anchor slug.
To test link validity, use this script:
If the fragment is invalid, update it to match the generated anchor slug. You may need to test on GitHub or use their markdown parser to determine the exact slug.
🏁 Script executed:
#!/bin/bash
# Description: Extract heading anchors and verify link fragments in markdown
# Extract all heading-to-anchor mappings (simplified; GitHub handles this)
echo "=== Headings with potential emoji issues ==="
rg -n '##' react_on_rails_pro/README.md | head -20
# Check all internal links
echo "=== Internal links (fragments) ==="
rg -n '\]\(#' react_on_rails_pro/README.mdLength of output: 1484
Update link fragment on line 514 to match the generated anchor.
The link [See requirements →](#requirements) uses an incorrect fragment. Per the Table of Contents (line 20), the heading "## 📋 Requirements" generates anchor #-requirements. Update line 514 to use [See requirements →](#-requirements).
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
514-514: Link fragments should be valid
(MD051, link-fragments)
🤖 Prompt for AI Agents
In react_on_rails_pro/README.md around lines 512 to 515, the link fragment on
line 514 is incorrect — update the link target from [See requirements
→](#requirements) to [See requirements →](#-requirements) so it matches the
generated anchor for the "## 📋 Requirements" heading; edit that single link
fragment and keep the rest of the sentence unchanged.
Summary
Complete rewrite of the React on Rails Pro README.md to fix all identified issues and properly position it as a commercial product.
Changes
✅ Fixed All Critical Issues
📋 New Sections Added
🎯 Key Improvements
Structure & Navigation
Licensing
Installation
Features
Marketing/Positioning
📊 Addresses All Issues
This PR fixes all 20+ issues documented in
react_on_rails_pro_readme_issues.md:📝 Documentation Included
Created
react_on_rails_pro_readme_issues.mddocumenting all identified issues for reference.Testing
Impact
This README now:
🤖 Generated with Claude Code
Co-Authored-By: Claude [email protected]
This change is
Summary by CodeRabbit