Skip to content

Rework Pro page around build-free adoption, not a feature paywall#111

Merged
justin808 merged 6 commits into
mainfrom
jg-conductor/review-pro-page-content
May 31, 2026
Merged

Rework Pro page around build-free adoption, not a feature paywall#111
justin808 merged 6 commits into
mainfrom
jg-conductor/review-pro-page-content

Conversation

@justin808

@justin808 justin808 commented May 29, 2026

Copy link
Copy Markdown
Member

What & why

The /pro/ page presented React on Rails Pro as a locked-feature tier you unlock by paying. That doesn't match the product:

  • The gem and npm package are publicbundle add react_on_rails_pro (RubyGems: ~26.7k downloads; npm react-on-rails-pro).
  • Nothing is access-gated. With no license configured, Pro keeps running and just logs its license status (and adds an HTML comment) — it never blocks the app.
  • A license covers production use + maintainer support, not access. Docs, demos, and example apps are all open to everyone.

So the old "Feature Comparison" table was misleading, and two rows in particular ("React Server Components performance guides — OSS: Docs only / Pro: Included" and "Public RSC demo — view-only / Pro: Included implementation patterns") implied documentation and a public demo were paywalled.

Changes (pro.tsx + pro.module.css)

  • Replace the OSS-vs-Pro table with an honest "What Pro adds" feature list.
  • Surface the real streaming-performance work (verified against the react_on_rails unified CHANGELOG). The grid now names the capabilities that actually shipped instead of two generic bullets: React Server Components, Streaming SSR with Suspense (stream_react_component), Concurrent component rendering (async_react_component, parallel renders through the Node renderer), Immediate hydration (hydrate as HTML streams in; auto-enabled on Pro), Streaming-aware caching (fragment + prerender caching that covers streamed components), dedicated Node renderer (Fastify pool), and code splitting + bundle caching.
  • Add "See everything before you commit" — links the public proof instead of gating it: the live RSC performance demo, the marketplace demo repo + its performance guide, and the Pro example app.
  • Lead with bundle add react_on_rails_pro + a "Free to build with" note. Single primary CTA "Start building with Pro" (hero trimmed from 4 competing buttons to 3).
  • Fix the false kicker "Performance tier, not separate product" → "An additive layer on open-source React on Rails" (Pro is a separate gem that depends on the OSS gem).
  • Reword the 3-step path to be build-first: add the gem → turn on the features you need → license for production.

Aligns with the goal of maximizing adoption: build with all of it for free, license when you ship to production.

Before / after

  • Before (live): https://reactonrails.com/pro/
  • After: verified locally — full production build (npm run build) passes with no new broken links, and /pro/ renders with no console errors. Before/after screenshots were captured from a local dev build and reviewed in the working session. (Happy to attach them here on request — GitHub needs a web/API upload that the CLI can't do.)

Test plan

  • npm run build succeeds (pre-existing broken-anchor warnings in synced upstream docs are unrelated to this page)
  • tsc typecheck passes
  • /pro/ renders, no console errors
  • All internal links (/docs/pro, /docs/pro/upgrading-to-pro) resolve; external links point at the public gem/demo/repo
  • Feature claims cross-checked against the react_on_rails CHANGELOG (async_react_component PR 2139, concurrent streaming PR 2015, immediate hydration v16.2.0, cached_stream_react_component)
  • Reviewer gut-check on copy/tone

🤖 Generated with Claude Code


Note

Low Risk
Marketing page, CSS, and optional Mermaid docs dependency only; no auth, API, or production app logic changes.

Overview
Reworks the React on Rails Pro marketing page so adoption is build-first, not a paywalled feature tier: the hero leads with bundle add react_on_rails_pro, a Free to build with note, and CTAs aimed at Pro installation docs instead of upgrade-only flows.

Content and layout: Drops the OSS-vs-Pro comparison table in favor of a What Pro adds card grid (RSC, streaming SSR, async rendering, caching, Node renderer, code splitting) with links into Pro docs. Adds a See it running, read the source section for the RSC marketplace and TanStack starter demos, reframes the three-step path as add gem → enable features → license for production, and tightens licensing copy (license = production + support, not access).

Site wiring: Extends docsRoutes with Pro doc paths used by the new cards and primary CTA. Styles add install snippet, feature/demo card grids, and responsive card layout (replacing table styles).

Docs tooling: Adds @docusaurus/theme-mermaid, enables markdown.mermaid, and updates lockfiles (including a minimal root package-lock.json).

Reviewed by Cursor Bugbot for commit 45cc017. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by CodeRabbit

Release Notes

  • New Features

    • Diagram and flowchart rendering support added to documentation pages
    • Redesigned Pro page with feature highlights, live demo showcase, and updated licensing information
  • Documentation

    • New Pro installation documentation added
    • Pro page updated with streamlined onboarding steps and revised messaging

Review Change Stack

@coderabbitai

coderabbitai Bot commented May 29, 2026

Copy link
Copy Markdown

Walkthrough

Enables Mermaid diagram support in Docusaurus, adds the required theme dependency, and redesigns the Pro landing page with a card-based layout, updated feature/demo sections, new messaging focused on building without upfront licensing, and refreshed upgrade steps.

Changes

Pro Landing Page Redesign with Mermaid

Layer / File(s) Summary
Mermaid infrastructure setup
docusaurus.config.ts, package.json
Docusaurus markdown configuration enables Mermaid rendering, @docusaurus/theme-mermaid is added as a dependency, and the themes array is restructured to always include the Mermaid theme with conditional local search theme inclusion based on Algolia configuration.
Pro page data structures and routing
src/constants/docsRoutes.ts, src/pages/pro.tsx
New route constant proInstall is added for /docs/pro/installation, and page data is restructured with proFeatures and demos arrays and a rewritten three-step upgradeSteps sequence.
Pro page styling redesign
src/pages/pro.module.css
Card-based layout replaces table styling with new classes for .install, .demoGrid (2-column grid), .cardGrid, .featureCard, and nested typography/link helpers; responsive breakpoints updated to collapse .demoGrid and .featureCard at smaller viewports.
Pro page content and layout
src/pages/pro.tsx
Hero section messaging updated with install-focused copy and license highlight; new "What Pro adds" and "See it running, read the source" sections render feature and demo cards; license/support messaging rewritten to "Build now. License when you ship." with consultation booking link added.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • shakacode/reactonrails.com#103: Both PRs modify the Pro landing page implementation with changes to prototypes/docusaurus/src/pages/pro.tsx and pro.module.css to update Pro-related marketing and styling.

Poem

🐰 Mermaid flows now swim in Docusaurus pages,
Cards bloom where tables fade through the digital ages,
"Build now, license later," the Pro path doth gleam,
Features and demos dance in a card-based dream!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: reworking the Pro page's messaging and positioning from a feature paywall model to a build-free adoption model, which aligns with the core objective across all modified files.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jg-conductor/review-pro-page-content

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@greptile-apps

greptile-apps Bot commented May 29, 2026

Copy link
Copy Markdown

Greptile Summary

This PR rewrites the /pro/ marketing page to reflect that the Pro gem and npm package are publicly installable — no paywall, no token required to evaluate. The old OSS-vs-Pro comparison table (which implied docs and a public demo were gated) is replaced with an honest feature list and a "See everything before you commit" section linking to live demos and public repos.

  • Hero and CTAs: kicker corrected from "Performance tier, not separate product" to "An additive layer on open-source React on Rails"; 4 competing buttons trimmed to 3; install command snippet and "Free to build with" callout added.
  • Feature cards: New cardGrid layout replaces the removed comparison table, covering RSC, streaming SSR, fragment caching, Node renderer, and code splitting; CSS table styles removed with no orphaned selectors.
  • Proof section: Three cards link to the live RSC demo, the marketplace demo repo + performance guide, and the Pro example app — all public.

Confidence Score: 4/5

Safe to merge — changes are copy and layout only, with no logic, data, or routing changes that could break anything.

All internal route references resolve, all CSS class names used in the TSX exist in the module, and no imports were removed. The two observations are visual: the primary CTA label ("Start building with Pro") lands on a page titled "upgrading to Pro" which may confuse net-new users, and the 5-item feature grid leaves an uneven second row in the 3-column layout. Neither blocks functionality.

pro.tsx — the primary CTA destination and the 5-card grid layout are worth a quick visual check before merging.

Important Files Changed

Filename Overview
prototypes/docusaurus/src/pages/pro.tsx Rewrites Pro page copy and structure: replaces OSS-vs-Pro comparison table with a feature card grid, adds a proof section with public links, and trims hero from 4 CTAs to 3. All routes and CSS class references resolve correctly; minor semantic concern with CTA label vs destination.
prototypes/docusaurus/src/pages/pro.module.css Removes table styles (.tableWrap, .table) and adds .install, .cardGrid, .featureCard, and .cardLink. Mobile breakpoint for .cardGrid collapses to single column. No orphaned selectors.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Visitor lands on /pro/] --> B[Hero: kicker + install snippet\n+ Free to build callout]
    B --> C{CTA choice}
    C --> D["Start building with Pro\n→ /docs/pro/upgrading-to-pro"]
    C --> E["See the live RSC demo\n→ rsc.reactonrails.com"]
    C --> F["Pro docs overview\n→ /docs/pro"]
    A --> G[What Pro adds\n5-card feature grid]
    A --> H[See everything before you commit\n3-card proof links]
    H --> H1[Live RSC demo]
    H --> H2[Marketplace demo repo]
    H --> H3[Pro example app]
    A --> I[Three steps to build with Pro\n+ License model card]
    I --> J{Ready to ship?}
    J -->|Yes| K[pro.reactonrails.com\npaid license]
    J -->|Budget-constrained| L[Email justin@shakacode.com\nfree/low-cost license]
Loading

Reviews (1): Last reviewed commit: "Rework Pro page around build-free adopti..." | Re-trigger Greptile

Comment on lines 104 to +106
<div className={styles.actions}>
<Link className="button button--primary button--lg" to={docsRoutes.proUpgrade}>
Review the upgrade guide
</Link>
<Link
className="button button--secondary button--lg"
to={docsRoutes.proOverview}>
Open Pro docs overview
Start building with Pro

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 "Start building" CTA lands on the upgrade guide

The primary button label says "Start building with Pro" but navigates to /docs/pro/upgrading-to-pro. A user who has never used the OSS gem will encounter a page framed around upgrading from OSS, which conflicts with the new "install and start fresh" messaging in the hero. Consider linking to a general getting-started or Pro overview page instead (docsRoutes.proOverview), or renaming the destination page — otherwise the label sets an expectation the landing page doesn't satisfy.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Good catch — fixed in 41e410c. The primary CTA now links to /docs/pro/installation (added docsRoutes.proInstall) so 'Start building with Pro' lands on a fresh-install page that matches the hero's install-and-build framing, rather than the upgrade-from-OSS guide.

Comment on lines +126 to +133
<div className={styles.cardGrid}>
{proFeatures.map((feature) => (
<article className={styles.featureCard} key={feature.title}>
<h3>{feature.title}</h3>
<p>{feature.description}</p>
</article>
))}
</div>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 5-item grid leaves an uneven second row

cardGrid is declared as repeat(3, minmax(0, 1fr)), but proFeatures has 5 items. This renders 3 cards on row 1 and 2 left-aligned cards on row 2, each occupying only 2/3 of the available width. Consider using a 5-column layout, reducing to 4 features, bumping to 6, or applying grid-column: span 1 with a centering wrapper so the orphan cards don't leave a blank third column.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Fixed in 41e410c. Switched .cardGrid from a 3-column grid to centered flex-wrap with a thirds-based card width, so the 5-card 'What Pro adds' second row (2 cards) centers cleanly instead of leaving an empty third slot. The 3-card proof grid still fills a single row. Verified in a production build screenshot.

justin808 added a commit that referenced this pull request May 29, 2026
Two follow-ups from automated review on PR #111:

- "Start building with Pro" now links to /docs/pro/installation instead of
  the upgrade-from-OSS guide, matching the install-and-build-fresh framing.
  Adds docsRoutes.proInstall.
- The "What Pro adds" grid had 5 cards in a 3-column layout, leaving an
  empty third slot on the second row. Switched .cardGrid to centered
  flex-wrap so the orphan row centers cleanly; the 3-card proof grid is
  unaffected.

Verified with npm run build (success, no new broken links); the built
/pro/ HTML confirms the CTA href is /docs/pro/installation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@github-actions

github-actions Bot commented May 29, 2026

Copy link
Copy Markdown

Cloudflare preview deployed.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

justin808 added a commit that referenced this pull request May 30, 2026
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@justin808

Copy link
Copy Markdown
Member Author

Update: demo consistency, tighter copy, Mermaid diagrams

This iteration fixes the demo/proof inconsistencies, cuts repeated copy, and turns on Mermaid rendering.

Demos — the proof section is now two real demos, each with a live app + source, instead of three tiles (the old layout split LocalHub's live demo and its repo into separate tiles, and showcased the spec/dummy CI fixture as an "example app"):

  • LocalHub — RSC performance demo (live + source)
  • TanStack starter — Rails-centered React (live + source), the strongest current example. Also added to the Examples page.

Copy — removed licensing / "build-free" repetition that appeared up to 5×. Hero highlight now covers the free side, the license card the paid side, no overlap. Feature grid rebalanced 7 → 6 (no orphan card). Hero CTAs 3 → 2 (the live demo moved into the demo section).

Mermaid — added @docusaurus/theme-mermaid + markdown.mermaid. This renders the existing RSC rendering-flow sequence diagram, which previously shipped as a raw ```mermaid code block on the live docs.

Pro page — before / after (desktop)

Before:

Pro page before

After:

Pro page after

After — mobile

Pro page after, mobile

RSC rendering-flow diagram now renders (was a raw code block)

RSC rendering flow diagram

Note: the new diagrams that show Pro vs non-Pro differences live in the upstream react_on_rails docs (this site mirrors docs/ at build time), so they ship as a separate PR there. This PR enables the rendering so they appear once synced.

justin808 and others added 5 commits May 29, 2026 22:26
The /pro/ page framed React on Rails Pro as a locked-feature tier you
unlock by paying. That misrepresents the product: the gem and npm package
are public (bundle add react_on_rails_pro), nothing is access-gated, and an
unlicensed app keeps running and just logs its license status. A license
covers production use and maintainer support, not access.

Changes to prototypes/docusaurus/src/pages/pro.tsx (+ pro.module.css):

- Replace the misleading "Feature Comparison" OSS-vs-Pro table with an
  honest "What Pro adds" feature list: React Server Components, Streaming
  SSR, Fragment caching, dedicated Node renderer, and code splitting +
  bundle caching (the canonical "What Pro Adds" list from the upstream
  docs).
- Drop the two rows that implied documentation and the public RSC demo
  were paywalled ("React Server Components performance guides" and the
  "view-only" demo row). Guides and demos are public to everyone.
- Add a "See everything before you commit" section linking the public
  proof: the live RSC performance demo, the marketplace demo repo + its
  performance guide, and the Pro example app.
- Lead the hero with `bundle add react_on_rails_pro` and a "Free to build
  with" note; make "Start building with Pro" the single primary CTA and
  trim the hero from four competing buttons to three.
- Fix the false "Performance tier, not separate product" kicker. Pro is a
  separate, additive gem that depends on the OSS gem.
- Reword the three-step upgrade path to be build-first: add the gem, turn
  on the features you need, then license for production.

Verified with a local production build (npm run build) and a rendered
screenshot of /pro/; no new broken links or console errors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two follow-ups from automated review on PR #111:

- "Start building with Pro" now links to /docs/pro/installation instead of
  the upgrade-from-OSS guide, matching the install-and-build-fresh framing.
  Adds docsRoutes.proInstall.
- The "What Pro adds" grid had 5 cards in a 3-column layout, leaving an
  empty third slot on the second row. Switched .cardGrid to centered
  flex-wrap so the orphan row centers cleanly; the 3-card proof grid is
  unaffected.

Verified with npm run build (success, no new broken links); the built
/pro/ HTML confirms the CTA href is /docs/pro/installation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Pro feature grid listed generic "Streaming SSR" and "Fragment
caching" but omitted the streaming-performance work that actually
shipped in React on Rails Pro: parallel rendering via
async_react_component, immediate hydration, and caching that covers
streamed components. Name these real capabilities so the page reflects
what Pro does, and sharpen the RSC, streaming, and Node-renderer
descriptions to match.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rework the Pro marketing page for consistency and concision, and turn on
Mermaid rendering across the docs.

Pro page (pro.tsx / pro.module.css):
- Replace the three-tile proof section with two real demos, each linking to
  both a live app and its source: LocalHub (RSC performance) and the new
  TanStack starter. The old layout split LocalHub's live demo and its repo
  into two separate tiles and showcased the spec/dummy CI fixture as an
  example app.
- Drop the spec/dummy CI test app from the marketing page.
- Cut repeated licensing / build-free copy that appeared up to five times.
  The hero highlight now covers the free side and the license card the paid
  side, with no overlap.
- Merge Immediate hydration into Streaming SSR so the feature grid is a
  balanced 3x2 (6 cards) instead of 7 with an orphan.
- Reduce three competing hero CTAs to two; the live demo now lives in the
  demo section.

examples.tsx:
- Add the TanStack starter (live demo + source repo), the strongest current
  example, which was missing from the page.

Enable Mermaid (docusaurus.config.ts / package.json / lockfile):
- Add @docusaurus/theme-mermaid and markdown.mermaid. This renders the
  existing RSC rendering-flow sequence diagram, which previously shipped as a
  raw code block, and unblocks diagrams synced from the upstream docs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@justin808 justin808 merged commit 2014113 into main May 31, 2026
4 checks passed
@justin808 justin808 deleted the jg-conductor/review-pro-page-content branch May 31, 2026 06:30
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.

1 participant