Back to React On Rails

React on Rails Documentation - Detailed Problem Analysis

internal/planning/docs-improvement/01-problem-analysis.md

16.6.031.8 KB
Original Source

React on Rails Documentation - Detailed Problem Analysis

Date: September 30, 2025 Analyst: Ihab Goal: Identify specific issues preventing users from having a smooth, professional documentation experience


1. Information Architecture Problems

1.1 Unclear Category Hierarchy

Problem: The current 11-category structure lacks clear hierarchy and logical grouping.

Current Categories (defined in gatsby-node.js:31-44):

javascript
const reactOnRailsDocsFoldersOrder = [
  firstCategory, // Root-level files
  'Guides', // 18+ diverse topics
  'Rails', // Rails-specific integration
  'Javascript', // JS/webpack/bundling topics
  'Additional details', // Catch-all category
  'Deployment', // Production setup
  'React on rails pro', // Pro version features
  'Api', // API reference
  'Misc', // Another catch-all
  'Contributor info', // Developer-facing docs
  'Testimonials', // Marketing content
  'Outdated', // Deprecated docs
];

Specific Issues:

  1. "Additional details" - Vague catch-all containing:

    • migrating-from-react-rails.md (migration guide)
    • generator-details.md (technical reference)
    • recommended-project-structure.md (best practices)
    • updating-dependencies.md (maintenance)
    • These belong in different categories based on user intent
  2. "Misc" - Another unclear bucket with:

    • tips.md - General guidance (should be in guides)
    • doctrine.md - Philosophy/principles (should be in introduction)
    • style.md - Code style guide (contributor docs)
    • articles.md - External resources (should be separate section)
  3. "Guides" is too broad - Contains 18+ files ranging from:

    • Installation (installation-into-an-existing-rails-app.md)
    • Tutorials (tutorial.md)
    • Configuration (configuration.md)
    • Advanced features (streaming-server-rendering.md)
    • How-tos (how-to-conditionally-server-render-based-on-device-type.md)

Impact:

  • Users don't know where to look for specific information
  • No clear progression from beginner to advanced
  • Similar topics scattered across multiple categories

Source Files:

  • Category definition: /home/ihab/ihab/work/shakacode/sc-website/gatsby-node.js:31-44
  • Sidebar rendering: /home/ihab/ihab/work/shakacode/sc-website/src/styleguide/page-components/DocArticle/DocSidebar.tsx:178-253

1.2 Multiple, Conflicting Entry Points

Problem: Four different "starting point" documents create confusion about where to begin.

Entry Points Found:

  1. docs/README.md (173 lines)

    • Comprehensive navigation hub
    • Learning paths section (lines 13-36)
    • Popular use cases table (lines 40-49)
    • Complete TOC (lines 107-173)
    • Issue: Too long for a README, actually a full navigation page
  2. docs/home.md (29 lines)

    • Minimal landing page
    • Just links to other docs
    • Issue: Unclear purpose - why exists separately from README?
  3. docs/getting-started.md (254 lines)

    • Installation instructions
    • System requirements
    • Basic usage examples
    • Issue: Mixed beginner onboarding + reference material
  4. docs/quick-start/README.md (location referenced but not yet examined)

    • Promised "15-minute" quick start
    • Issue: Buried in subdirectory, not prominently featured

Confusion Points:

From README.md:9-11:

markdown
**→ [15-Minute Quick Start Guide](./quick-start/README.md)**

Already have Rails + Shakapacker? **→ [Add to existing app guide](./guides/installation-into-an-existing-rails-app.md)**

From getting-started.md:3-11:

markdown
> **šŸ’” Looking for the fastest way to get started?** Try our **[15-Minute Quick Start Guide](./quick-start/README.md)** instead.

## Choose Your Starting Point

...

### šŸš€ **New to React on Rails?**

**→ [15-Minute Quick Start](./quick-start/README.md)** - Get your first component working fast

Impact:

  • New users see 4 different "start here" options
  • Each document has different content and depth
  • No clear answer to "where do I actually start?"
  • Cross-references between docs create circular navigation

1.3 Mixing User-Facing and Internal Documentation

Problem: Navigation includes docs meant only for contributors, not end users.

Contributor Docs in Main Navigation:

  1. contributor-info/ folder - 5 files:

    • linters.md - Linting setup for contributors
    • coding-agents-guide.md - Guide for AI coding assistants
    • errors-with-hooks.md - Git hooks troubleshooting
    • generator-testing.md - Testing generators during development
    • releasing.md - Release process for maintainers
    • pull-requests.md - PR guidelines
  2. Planning documents visible:

    • docs/planning/DOCUMENTATION_IMPROVEMENT_PLAN.md
    • docs/planning/DOCS_PR_SUMMARY.md
    • These are internal planning docs, not user documentation
  3. Root-level internal docs:

    • docs/MONOREPO_MERGER_PLAN.md (32KB)
    • docs/MONOREPO_MERGER_PLAN_REF.md
    • docs/DIRECTORY_LICENSING.md
    • Internal project management documents

Impact:

  • Cluttered navigation overwhelms users
  • Professional appearance undermined by internal notes
  • Users may read contributor docs and get confused
  • Signal-to-noise ratio is poor

Evidence: From gatsby-node.js:185-194, the build system includes ALL markdown files:

javascript
result.data.docs.edges.forEach(({ node: doc }) => {
  const [, relativePath] = doc.dir.split('gatsby-source-git/');
  const [repoName, , folder] = relativePath.split('/');
  // Creates pages for ALL .md files in docs/
});

1.4 Outdated Content Visible in Navigation

Problem: A category called "Outdated" is visible in primary navigation.

Outdated Folder Contents:

  • docs/outdated/deferred-rendering.md
  • docs/outdated/webpack-v1-notes.md
  • docs/outdated/rails3.md
  • docs/outdated/rails-assets.md
  • docs/outdated/rails-assets-relative-paths.md

Current Treatment: From gatsby-node.js:31-44, "Outdated" is the last category but still included:

javascript
const reactOnRailsDocsFoldersOrder = [
  // ... other categories
  'Outdated', // ← Still in navigation!
];

Issues:

  1. Confusing for users: Why show documentation that's explicitly marked outdated?
  2. Unprofessional appearance: Competitors don't expose deprecated docs in main navigation
  3. Decision fatigue: Users don't know if current docs might also be outdated
  4. SEO pollution: Old docs may rank in search results

Better Practices (from competitors):

  • Next.js: Outdated docs moved to versioned URLs (nextjs.org/docs/pages/... for old Pages Router)
  • TanStack: Clear version switcher, old versions in separate navigation trees
  • Rails Guides: Each version has separate docs site (guides.rubyonrails.org/v7.0/...)

Impact:

  • Undermines confidence in documentation quality
  • Wastes user time exploring irrelevant docs
  • Poor first impression for evaluating developers

2. Beginner Onboarding Gaps

2.1 Concepts Not Explained Before Usage

Problem: Documentation jumps into implementation details without explaining foundational concepts.

Example 1: Server-Side Rendering (SSR)

From getting-started.md:93-97:

erb
- **Server-Side Rendering**: Your React component is first rendered into HTML on the server. Use the **prerender** option:

  ```erb
  <%= react_component("HelloWorld", props: @some_props, prerender: true) %>

**Missing Context:**
- What is SSR and why does it matter?
- What's the difference between client-side and server-side rendering?
- When should I use `prerender: true` vs not using it?
- What are the performance implications?
- What are the limitations?

Users see `prerender: true` without understanding the "why" behind it.

---

**Example 2: Auto-Bundling**

From `getting-started.md:101-138`:
```markdown
## Auto-Bundling (includes Auto-Registration)

React on Rails supports **Auto-Bundling**, which automatically creates the webpack bundle _and_ registers your React components. This means you don't have to manually configure packs or call `ReactOnRails.register(...)`.

Missing Context:

  • What is "bundling" in the first place?
  • What's the difference between auto-bundling and manual bundling?
  • What are "packs"? (Assumed knowledge from Webpacker)
  • Why does component registration matter?
  • What happens under the hood?
  • When should I NOT use auto-bundling?

The comparison between manual and auto-bundling helps, but assumes user understands webpack concepts.


Example 3: Render Functions

From getting-started.md:178-204:

markdown
## Specifying Your React Components

You have two ways to specify your React components. You can either register the React component (either function or class component) directly, or you can create a function that returns a React component, which we using the name of a "render-function".

Missing Context:

  • What is a "render-function" conceptually?
  • Why would I need one vs. a regular component?
  • How is this different from React's render function?
  • Custom terminology ("render-function") not explained before use

Pattern Observed:

The docs follow a "reference manual" pattern:

  1. Here's a feature
  2. Here's the syntax
  3. Here's an example

Instead of a "learning guide" pattern:

  1. Here's a problem you might have
  2. Here's how this feature solves it
  3. Here's when to use it
  4. Here's how to implement it

Impact:

  • High cognitive load for beginners
  • Users copy-paste without understanding
  • Harder to debug when things go wrong
  • Users can't make informed architectural decisions

2.2 Installation Instructions Scattered

Problem: Installation steps are fragmented across multiple documents without clear ownership.

Installation Information Locations:

  1. getting-started.md:38-76 - "Basic Installation"

    • Rails app creation
    • Shakapacker prerequisites
    • Generator command
    • Starting the app
  2. guides/installation-into-an-existing-rails-app.md - Full guide

    • (Not yet examined but referenced multiple times)
    • Seems to be the canonical installation guide
    • But not clearly marked as THE starting point
  3. quick-start/README.md - Quick installation

    • Promised "15-minute" path
    • Unclear how it differs from other guides
  4. README.md:44 - Installation link in table:

markdown
| **Add React to existing Rails app** | [Installation Guide](./guides/installation-into-an-existing-rails-app.md) |
  1. guides/tutorial.md - Tutorial installation
    • Likely has its own installation steps
    • May differ from other guides

Inconsistencies:

From getting-started.md:50-56:

bash
bundle add react_on_rails --version=16.0.0 --strict

# Commit this to git (or else you cannot run the generator in the next step unless you pass the option `--ignore-warnings`).

Questions raised:

  • Why must I commit before running generator?
  • What happens if I don't commit?
  • What is --ignore-warnings?
  • Why is version hardcoded to 16.0.0?

These concerns aren't addressed in context.

Impact:

  • Users don't know which guide to follow
  • Different guides may have conflicting steps
  • Hard to maintain consistency across guides
  • Users may skip crucial setup steps

2.3 Missing Prerequisites and Assumptions

Problem: Documentation assumes knowledge that beginners may not have.

Assumed Knowledge Examples:

1. Shakapacker (critical dependency)

From getting-started.md:36:

markdown
> **Don't have Shakapacker?** It's the modern replacement for Webpacker and required for React on Rails.

Issues:

  • What is Shakapacker? (one sentence doesn't explain it)
  • Why is it required?
  • What if I'm using Vite or another bundler?
  • How do I install it?
  • Link to Shakapacker docs, but user leaves React on Rails docs

2. Webpack Configuration

Multiple references to webpack throughout docs assume user understanding:

  • docs/guides/webpack-configuration.md - Entire guide about webpack
  • docs/javascript/webpack.md - Another webpack guide
  • References to "packs", "bundles", "entry points"

No explanation of:

  • What webpack is
  • Why React on Rails needs it
  • How it integrates with Rails

3. Rails Asset Pipeline

From getting-started.md:82-83:

markdown
- Configure `config/initializers/react_on_rails.rb`. You can adjust some necessary settings and defaults.
- Configure `config/shakapacker.yml`. If you used the generator and the default Shakapacker setup, you don't need to touch this file.

Assumptions:

  • User knows what Rails initializers are
  • User understands YAML configuration
  • User knows where config files live
  • User can debug if generator didn't create these files

4. Node.js Ecosystem

From getting-started.md:34:

markdown
āœ… **Node.js 18+**

Missing information:

  • How to install Node.js
  • Why this specific version?
  • How to manage multiple Node versions
  • What if my Rails app uses a different version?

Impact:

  • Beginners get stuck on prerequisites
  • Support burden increases with basic questions
  • Users abandon setup process
  • Poor first impression compared to competitors with better onboarding

3. Content Organization Issues

3.1 No Clear Progressive Disclosure

Problem: All information presented at once without difficulty levels or learning paths.

Current Structure (Flat):

From README.md:52-79, the "Complete Documentation" section lists everything:

markdown
## šŸ“– Complete Documentation

### Core Guides

- Getting Started
- Tutorial
- Configuration
- View Helpers

### Features

- Server-Side Rendering
- Auto-Bundling
- Redux Integration
- React Router
- Internationalization

### Development

- Hot Module Replacement
- Testing
- Debugging

### Deployment & Performance

- Deployment
- Performance
- Bundle Optimization

Issues:

  1. No difficulty indicators: All topics appear equal in complexity
  2. No prerequisites shown: Can't tell what to read first
  3. No estimated time: Users can't plan their learning
  4. No "required vs. optional": Everything seems equally important

Example of Confusion:

A beginner might click "Streaming Server Rendering" (advanced) before understanding basic "Server-Side Rendering" (fundamental).

From the docs structure:

  • docs/guides/react-server-rendering.md - Basic SSR
  • docs/guides/streaming-server-rendering.md - Advanced SSR
  • Both in same "Guides" category with no indication of order

Better Pattern (from competitors):

Next.js Approach:

Getting Started (15 min)
ā”œā”€ā”€ Installation
ā”œā”€ā”€ Project Structure
└── Your First Page

Building Your Application
ā”œā”€ā”€ Routing
ā”œā”€ā”€ Data Fetching
ā”œā”€ā”€ Rendering
└── Styling

[Much later...]

Advanced Features
ā”œā”€ā”€ Streaming
ā”œā”€ā”€ Server Actions
└── Partial Prerendering

Clear progression with time estimates and prerequisites.


TanStack Router Approach:

šŸ”° Quick Start
šŸ“˜ Guide (Basics)
šŸ“— Guide (Advanced)
šŸ“• API Reference

Visual indicators show learning level.


React on Rails Current Experience:

A user could accidentally read in this order:

  1. "Streaming Server Rendering" (advanced Pro feature)
  2. "How to conditionally server render based on device type" (advanced how-to)
  3. "React Server Rendering" (basic concept)

Because all are in "Guides" with alphabetical ordering.

Impact:

  • Beginners get overwhelmed by advanced topics
  • Advanced users frustrated by basic content mixed in
  • No clear path from "beginner" to "expert"
  • Higher abandonment rate during learning

3.2 API Reference Mixed with Guides

Problem: Reference documentation not clearly separated from learning guides.

Current "API" Category:

From docs/api/ folder:

  • README.md - API overview
  • view-helpers-api.md - react_component helper reference
  • redux-store-api.md - Redux store API
  • javascript-api.md - JavaScript API reference

BUT, API information also appears in:

  1. getting-started.md:86-90 - Shows react_component usage:
erb
<%= react_component("HelloWorld", props: @some_props) %>
  1. getting-started.md:206-222 - Documents react_component_hash:
markdown
## react_component_hash for Render-Functions

Another reason to use a Render-Function is that sometimes in server rendering, specifically with React Router, you need to return the result of calling ReactDOMServer.renderToString(element).
  1. guides/configuration.md - Config API reference
  2. guides/render-functions-and-railscontext.md - API for render functions

Problems:

  1. Duplication: Same API documented in multiple places with potential inconsistencies
  2. No single source of truth: Where do I look for definitive API docs?
  3. Mixed purposes: Guides teach concepts, references list options - both needed but should be separate
  4. Discoverability: If API is split across docs, users miss options

Example of Confusion:

User wants to know all options for react_component helper:

  • Should they read getting-started.md?
  • Or api/view-helpers-api.md?
  • Or both?
  • Are they consistent?

Better Pattern:

Guides (Learning):

markdown
# Server-Side Rendering Guide

Learn how to render React components on the server for better performance and SEO.

## When to Use SSR

[Conceptual explanation...]

## Basic Example

[Simple working example...]

## Common Patterns

[Real-world use cases...]

šŸ“š See full API: [react_component API Reference](/api/view-helpers-api)

API Reference (Looking up specifics):

markdown
# react_component API Reference

Quick reference for all options and parameters.

## Syntax

<%= react_component(component_name, options) %>

## Parameters

### component_name (String, required)

The name of your registered React component.

### options (Hash, optional)

| Option    | Type    | Default | Description                  |
| --------- | ------- | ------- | ---------------------------- |
| props     | Hash    | {}      | Data to pass to component    |
| prerender | Boolean | false   | Enable server-side rendering |
| trace     | Boolean | false   | Enable render tracing        |

[Complete table of all options...]

## Examples

[Brief examples for quick reference...]

šŸ“˜ Learn more: [Server-Side Rendering Guide](/guides/ssr)

Impact:

  • Users can't quickly look up API options
  • Risk of following outdated examples in guides
  • Harder to maintain documentation
  • Professional developers frustrated by poor reference docs

3.3 Testimonials and Marketing in Technical Docs

Problem: Marketing content mixed with technical documentation creates unprofessional impression.

Current Structure:

From gatsby-node.js:41-42:

javascript
"Testimonials",
"Outdated",

"Testimonials" is a top-level category in the technical documentation.

Testimonials Folder Contents:

  • docs/testimonials/testimonials.md - List of testimonials
  • docs/testimonials/hvmn.md - HVMN case study
  • docs/testimonials/resortpass.md - ResortPass case study

Issues:

  1. Wrong audience: Users reading technical docs want to solve problems, not read testimonials
  2. Wrong context: Testimonials belong on marketing site, not in documentation navigation
  3. Navigation clutter: Takes up space in sidebar that could be used for technical content
  4. Unprofessional: Major frameworks don't mix these concerns

Where Users Expect Testimonials:

  • Main marketing site homepage
  • Dedicated "Case Studies" section on website
  • "Why Choose React on Rails" landing page
  • NOT in technical documentation sidebar

Comparison with Competitors:

Next.js:

  • Technical docs: nextjs.org/docs
  • Showcase/testimonials: nextjs.org/showcase
  • Clearly separated

Rails Guides:

  • Technical docs: guides.rubyonrails.org
  • Testimonials: rubyonrails.org/ (marketing site)
  • Never mixed

TanStack:

  • Docs: [tanstack.com/router/latest/docs](https://tanstack.com/router/latest/docs/framework/react/overview)
  • No testimonials in technical docs
  • Marketing content on separate pages

What to Do with Testimonials:

  1. Move to marketing site: ShakaCode website should host these
  2. Create "Showcase" page: Separate from docs navigation
  3. Link from introduction: "See who uses React on Rails" → external page
  4. Remove from docs navigation: Keep technical docs technical

Impact:

  • Reduced professional credibility
  • Distraction from learning and reference tasks
  • Longer navigation lists with less relevant content
  • Inconsistent with industry standards

3.4 Inconsistent Document Depth and Style

Problem: Documentation files vary wildly in length, detail, and writing style without clear purpose differentiation.

Examples:

1. Extremely Short Docs:

docs/home.md - 29 lines:

markdown
# React on Rails

## Details

1. [Overview](./guides/react-on-rails-overview.md)
1. [Getting Started](./getting-started.md)
   ...

Just a list of links. Why does this exist separately from README?


2. Extremely Long Docs:

docs/getting-started.md - 254 lines

  • Installation
  • Configuration
  • Usage examples
  • API reference
  • Render functions
  • Error handling
  • I18n
  • Additional resources

Tries to be everything: tutorial, reference, guide, and quickstart.

docs/README.md - 173 lines

  • Navigation hub
  • Learning paths
  • Use case table
  • Complete TOC
  • Multiple entry points

Tries to be landing page, navigation, and TOC all at once.


3. Unclear Purpose:

docs/javascript/troubleshooting-build-errors.md vs. docs/javascript/troubleshooting-when-using-shakapacker.md vs. docs/troubleshooting/README.md

Three troubleshooting docs - when do I use which one?

docs/guides/webpack-configuration.md vs. docs/javascript/webpack.md

Two webpack guides in different categories. What's the difference?


4. Style Inconsistencies:

Some docs are conversational: From getting-started.md:3:

markdown
> **šŸ’” Looking for the fastest way to get started?** Try our **[15-Minute Quick Start Guide](./quick-start/README.md)** instead.

Some are formal reference: From API docs:

markdown
## react_component_hash for Render-Functions

Another reason to use a Render-Function is that sometimes in server rendering, specifically with React Router, you need to return the result of calling ReactDOMServer.renderToString(element).

Some use checkboxes: From getting-started.md:30-34:

markdown
āœ… **🚨 React on Rails 16.0+** (this guide covers modern features)
āœ… **🚨 Shakapacker 6+** (7+ recommended for React on Rails 16)
āœ… **Rails 7+** (Rails 5.2+ supported)

Some use tables: From README.md:42-49:

markdown
| I want to...                        | Go here                                                                   |
| ----------------------------------- | ------------------------------------------------------------------------- |
| **Add React to existing Rails app** | [Installation Guide](./guides/installation-into-an-existing-rails-app.md) |

Impact:

  • Users don't know what to expect from each document
  • Some docs overwhelming, others too brief
  • Inconsistent voice hurts professionalism
  • Hard to maintain as team grows
  • No clear document templates or guidelines

Better Pattern:

Clear document types with defined purposes:

  1. Tutorial: Step-by-step, conversational, builds something, 20-40 min
  2. Guide: Explains concept deeply, includes examples, 10-15 min read
  3. How-To: Solves specific problem, terse, 5 min read
  4. Reference: Lists all options, technical, quick lookup

Each type has:

  • Consistent structure
  • Expected length
  • Appropriate tone
  • Clear template

4. Technical Issues

Problem: Documentation uses relative links that may break during site reorganization.

Examples of Relative Link Patterns:

From getting-started.md:

markdown
See file [docs/basics/configuration.md](./guides/configuration.md)

From README.md:

markdown
- **[Quick Start](./quick-start/README.md)**
- **[Tutorial](./guides/tutorial.md)**
- **[Installation Guide](./guides/installation-into-an-existing-rails-app.md)**

Risks:

  1. Gatsby transformation: Website build (gatsby-node.js) transforms these paths:
javascript
// From: ./guides/tutorial.md
// To: /react-on-rails/docs/guides/tutorial/
  1. Link checking: No automated link validation in CI
  2. Refactoring risk: Moving files breaks links in multiple places
  3. Cross-references: Complex web of interdependencies

Evidence of Potential Issues:

From docs/planning/DOCUMENTATION_IMPROVEMENT_PLAN.md exists but may have broken links to docs that were moved.


4.2 Images and Assets Organization

Problem: Image references and asset management unclear.

From getting-started.md:168:

markdown
![Basic Hello World Example](./images/bundle-splitting-hello-world.png)

Questions:

  • Where are images stored? (docs/images/ folder exists)
  • How are they served on the website?
  • Are images optimized for web?
  • Are there broken image links?
  • How to add new images?

4.3 Search and Discoverability

Problem: No clear search functionality or metadata for discovery.

Observations:

  1. No frontmatter: Most docs lack YAML frontmatter:
markdown
---
title: Getting Started
description: Install React on Rails
keywords: [installation, setup, rails]
---
  1. No tags/categories in files: Categories only in website code
  2. No search optimization: Content not structured for search
  3. No related docs links: Each doc is isolated

Impact:

  • Users can't search documentation effectively
  • Hard to discover related content
  • Poor SEO for documentation pages
  • Rely entirely on navigation structure

5. Missing Content

5.1 No "Why React on Rails?"

Critical Missing Page: Introduction explaining the value proposition.

What's Missing:

  1. Problem statement:

    • Why integrate React with Rails?
    • What problems does React on Rails solve?
    • What are the alternatives?
  2. Comparison with alternatives:

    • vs. plain Rails views
    • vs. separate React frontend
    • vs. react-rails gem
    • vs. Hotwire/Turbo
    • vs. Inertia.js
  3. When to use / when not to use:

    • Best fit use cases
    • When to choose something else
    • Migration scenarios
  4. Architecture overview:

    • How does it work at a high level?
    • What's the request/response flow?
    • Where does React run? (client/server)

Current Situation:

docs/guides/react-on-rails-overview.md exists but not clearly positioned as THE introduction.

Impact:

  • Developers can't make informed decisions
  • No clear pitch for managers/stakeholders
  • Users jump into "how" before understanding "why"
  • Harder to advocate for using React on Rails in teams

5.2 No Migration Paths

Problem: Sparse guidance on migrating existing applications.

What Exists:

  • docs/additional-details/migrating-from-react-rails.md - Only one migration guide
  • docs/guides/upgrading-react-on-rails.md - Version upgrades

What's Missing:

  1. Migrating from plain Rails views:

    • How to gradually introduce React
    • Which views to convert first
    • Hybrid approach patterns
  2. Migrating from separate React frontend:

    • Moving from React SPA to React on Rails
    • Sharing components
    • Authentication/session handling
  3. Migrating from Hotwire/Turbo:

    • When to switch
    • How to coexist
    • Gradual migration strategy
  4. Version-to-version migration:

    • Breaking changes documentation
    • Automated migration tools
    • Rollback strategies

Impact:

  • Teams with existing apps hesitant to adopt
  • No clear path from evaluation to production
  • Risk assessment difficult
  • Support burden with migration questions

5.3 No Troubleshooting Decision Tree

Problem: Troubleshooting docs are scattered without clear starting point.

Current Troubleshooting Docs:

  • docs/troubleshooting/README.md
  • docs/javascript/troubleshooting-build-errors.md
  • docs/javascript/troubleshooting-when-using-shakapacker.md
  • docs/javascript/troubleshooting-when-using-webpacker.md

What's Missing:

  1. Diagnostic flow:

    Issue → Is it build-time or run-time?
         → Client or server?
         → Webpack or Rails?
         → [Specific guide]
    
  2. Common error messages:

    • Database of actual error text
    • Direct solutions
    • Search optimization
  3. Debugging tools:

    • How to enable trace mode
    • How to inspect SSR output
    • Browser devtools setup
  4. Getting help:

    • What info to provide
    • Where to ask
    • How to create minimal reproduction

Impact:

  • Users stuck without clear next steps
  • Repeated support questions
  • Frustration during debugging
  • Higher abandonment rate

6. Competitive Analysis Gaps

6.1 Compared to Next.js Docs

Next.js Strengths We're Missing:

  1. Clear learning path:

    • Installation → Creating routes → Data fetching → Deployment
    • Each step builds on previous
    • Time estimates provided
  2. Interactive examples:

    • Code playground integration
    • Copy-paste ready examples
    • Visual diagrams
  3. Version switcher:

    • App Router vs Pages Router clearly separated
    • Easy to switch between versions
    • Migration guides prominent
  4. Rich media:

    • Diagrams explaining concepts
    • Video tutorials
    • GIFs showing features

Source: https://nextjs.org/docs


6.2 Compared to TanStack Docs

TanStack Strengths We're Missing:

  1. Clear difficulty levels:

    • šŸ”° Quick Start (beginner)
    • šŸ“˜ Guide (intermediate)
    • šŸ“• API Reference (lookup)
  2. Framework adapters clearly separated:

    • React, Vue, Svelte, etc. in tabs
    • Don't mix framework-specific advice
  3. Examples repository:

    • Linked examples for every major feature
    • Can clone and run locally
    • Multiple implementation approaches shown
  4. API documentation generated from code:

    • Always in sync with implementation
    • TypeScript types shown
    • Inline JSDoc comments

Source: https://tanstack.com/router/latest/docs/framework/react/overview


6.3 Compared to Rails Guides

Rails Guides Strengths We're Missing:

  1. Consistent structure:

    • Every guide follows same template
    • Predictable sections
    • Known length and depth
  2. Glossary:

    • Terms defined
    • Linked throughout docs
    • No assumed knowledge
  3. Contributing guide prominent:

    • Clear how to improve docs
    • Documentation standard
    • Review process
  4. Edge guides separate:

    • Cutting-edge features clearly marked
    • Stable vs experimental obvious
    • Version compatibility clear

Source: https://guides.rubyonrails.org


Summary of Critical Issues

Highest Impact Problems:

  1. āš ļø Multiple entry points with no clear starting path (Section 1.2)
  2. āš ļø Concepts not explained before usage (Section 2.1)
  3. āš ļø Unclear category hierarchy (Section 1.1)
  4. āš ļø No "Why React on Rails?" introduction (Section 5.1)
  5. āš ļø Installation scattered across multiple docs (Section 2.2)

Secondary Problems:

  1. Contributor docs mixed with user docs (Section 1.3)
  2. Outdated content in navigation (Section 1.4)
  3. No progressive disclosure (Section 3.1)
  4. Testimonials in technical docs (Section 3.3)
  5. Inconsistent document styles (Section 3.4)

Technical Debt:

  1. Link management risk (Section 4.1)
  2. No search metadata (Section 4.3)
  3. Missing migration guides (Section 5.2)
  4. Scattered troubleshooting (Section 5.3)

Next Steps

This analysis will inform:

  1. Information architecture redesign proposal
  2. Content reorganization plan
  3. Writing style guide
  4. Documentation templates
  5. Migration strategy

Priority Order:

  1. Fix critical user journey (entry points, onboarding)
  2. Restructure categories (IA redesign)
  3. Hide internal docs (contributor/outdated)
  4. Standardize document types (templates)
  5. Add missing content (why, migration)