ShakaCode open source

Ship modern React in Rails — fast, and prove it.

ShakaStack is four open-source projects from ShakaCode that take your Rails + React app from idea to proven-fast in production — build, deploy, and prove — without the frontend chaos.

4open-source projects
2013shipping React in Rails since
RSCReact 19 & Server Components
the_shaka_stack.rb▟ build → prove
BuildReact on Rails01
BundleShakapacker02
DeployControl Plane Flow03
ProveShakaPerf04
The problem

Modern React on Rails is harder than it should be.

You picked Rails because it’s productive and joyful. Then the frontend got complicated — and somewhere along the way your app got slow, your config got fragile, and your bills went up.

01

Bolting React onto Rails

Webpacker’s deprecated, SSR is fiddly, and React 19 / RSC feel out of reach. You’re duct-taping a frontend instead of shipping features.

02

Pages that lost their speed

Slow LCP and hydration drag down SEO and conversions — and you’ve no rigorous way to measure it or prove a fix actually worked.

03

The infra & config tax

Heroku bills climb, build configs rot, and every upgrade is a gamble. The stack fights you instead of working for you.

You shouldn’t have to choose between the joy of Rails and a fast, modern React frontend.

Your guide

We’ve shipped React in Rails since 2013.

ShakaCode has been a performance-obsessed consultancy since 2011 — and we felt every one of these pains first-hand. So we built, open-sourced, and still maintain the tools that fix them, from our home base in Paia, Hawai‘i. We make slow web apps fast.

2013 Shipping React in Rails since
Only Rails framework with React Server Components
80–90% Faster pages for clients like HVMN & Popmenu
Paia, HI Open-source maintainers — not a faceless vendor
The plan

Build → deploy → prove.

Three phases, four open-source projects — because bundling is part of building. Tap a layer to see how it moves your app forward.

01BuildRender React in Rails, then bundle the assets.
02DeployShip it to production.
03ProveProve every page is faster.
Build

React on Rails

Render React inside Rails — SSR, hydration, and RSC.

Rails-first ReactRender components from views & controllers. Keep Rails routes, conventions, and your team.
Production SSRServer rendering, hydration, and streaming paths built for mature Rails deployments.
OSS → Pro pathStart free. Add Pro for RSC, higher SSR throughput, and guided support when you need it.
The projects

Each layer, up close.

Open source, production-tested, and maintained by the ShakaCode team. Use one, use all four.

Build · 01

React on Rails

Render React inside Rails — SSR, hydration, and RSC.

Mount React components straight from Rails views and controllers. Server-side rendering, hydration, streaming, and React Server Components — without splitting your product into a separate frontend app.

Rails-first React

Render components from views & controllers. Keep Rails routes, conventions, and your team.

Production SSR

Server rendering, hydration, and streaming paths built for mature Rails deployments.

OSS → Pro path

Start free. Add Pro for RSC, higher SSR throughput, and guided support when you need it.

React on Rails logo / screenshot
reactonrails.com — terminal
$bundle exec rails generate react_on_rails:install
$npx create-react-on-rails-app@latest my-app
websitedocsgithub
Build · Bundle · 02

Shakapacker

Webpack, the Rails way. The maintained successor to Webpacker.

Use webpack to bundle JavaScript and CSS with Rails conventions intact. Shakapacker picks up where rails/webpacker left off — actively maintained, modern defaults, and a smooth upgrade path.

Rails-native bundling

Asset compilation that follows Rails conventions — manifests, fingerprinting, and the asset pipeline.

Modern webpack

Up-to-date webpack with sensible defaults so you configure less and ship more.

Easy migration

A clear, supported path off the deprecated rails/webpacker.

Shakapacker logo / screenshot
shakapacker.com — terminal
$bundle add shakapacker --strict
$bin/rails shakapacker:install
websitedocsgithub
Deploy · 03

Control Plane Flow

A Heroku-style workflow on Control Plane infrastructure.

cpflow brings a Heroku-like developer experience — review apps, one-off tasks, releases, and scaling — to Control Plane. Migrate off Heroku without throwing away the workflow your team already knows.

Heroku-like commands

Familiar deploy, run, and scale commands plus review apps for every pull request.

Control Plane power

Run on flexible, cost-efficient infrastructure with room to scale well past Heroku.

Migrate, don't rewrite

Keep your release flow. Move the runtime underneath it with minimal disruption.

Control Plane Flow logo / screenshot
controlplaneflow.com — terminal
$gem install cpflow
$cpflow setup-app -a my-app
websitedocsgithub
Prove · 04

ShakaPerf

ShakaCode’s own framework for proving performance — rigorously.

Containerize your app, run control-vs-experiment A/B tests, and let ShakaPerf prove which changes actually make pages faster — across desktop and mobile, with regressions caught automatically.

Rigorous A/B testing

Real control-vs-experiment perf testing across screen types — not flaky one-off Lighthouse runs.

Automatic regression detection

Catches performance regressions and visual changes on your main branch before users do.

Stack agnostic

Works with any web stack, with accessibility and SEO checks built in.

ShakaPerf logo / screenshot
shakaperf.com — terminal
$# Bring rigorous perf testing to your app
$# Get started at shakaperf.com
websitedocsgithub
Developer experience

Mix the best of Rails and React. Stay flexible.

ShakaStack blends the developer experiences teams love — Rails' conventions and productivity with modern React 19, RSC, and TanStack. It's also the most agent-capable way to build, so whether a human or an AI agent writes the code, it lands on a foundation that keeps it fast and maintainable.

Already have Rails?

Add TanStack incrementally

Drop React on Rails Pro and TanStack Router, Query & Table into the app you already have. Keep your routes, conventions, and team — no rewrite, no separate frontend deploy.

  • Adopt it page by page, alongside your existing Rails views
  • Great performance out of the box — SSR, hydration, streaming
  • Your Rails API stays the single source of truth
Starting fresh?

Spin up with full flexibility

Begin a new Rails app and mix exactly what you want, per page: classic Rails views, React on Rails components, React 19 + RSC, and TanStack. Use as much or as little as you need.

  • Classic Rails, React components, RSC, or TanStack — your call
  • The official starter gives you a deployable baseline on day one
  • Scale from a sprinkle of React to a full TanStack app
Agent-ready

The most agent-capable stack

AI agents thrive on convention. Rails' structure, explicit typed JSON contracts, and the starter's AGENTS.md guardrails give an agent a map it can't sprawl outside of — so AI-written changes stay reviewable and maintainable instead of turning into slop.

It doesn't stop at writing code: ShakaCode's AI optimization loop runs proposed changes through ShakaPerf's A/B testing and keeps only the ones that are provably faster — with experts picking the best proposals.

…and all the great things about Rails
ActiveRecordMigrationsBackground jobsMailersSessions & authCSRF protectionConvention over configurationThe gem ecosystem
Leaving Next.js?

The Next.js era is cracking. Two roads out.

Teams are leaving Next.js. Lovable made TanStack Start its default for new projects this year; Inngest migrated off Next.js and cut local dev load times by roughly 83%. The reasons they give — complexity, slow local dev, fighting the network — are exactly the critique ShakaCode has made for years.

Road A — another JS framework

Swap Next.js for TanStack Start

A new vendor, but the same all-JavaScript backend. TanStack Start's server functions put your data access, auth, and business logic into TypeScript on a Node server.

  • New framework, same architecture: JavaScript owns the server
  • Business logic migrates into TypeScript server functions
  • Fine for greenfield, one-language teams — but it isn't Rails
Road B — ShakaStack

Keep a real backend

Rails owns data, business logic, and auth. React renders the view. TanStack Query owns the client. You leave Next.js without giving up your backend — and nobody else is evangelizing this path.

  • Rails: ActiveRecord, validations, jobs, mailers, sessions, CSRF
  • React on Rails Pro: SSR, streaming, and React Server Components
  • TanStack Query, Router & Table on the client, against a Rails JSON API

“TanStack” is two different things.

Keep them separate — embrace the client libraries, skip the framework.

Embrace

Embrace — TanStack Query, Router & Table

Backend-agnostic client libraries. TanStack Query is the single best companion to a Rails JSON API: caching, mutations, and URL-synced state on the client.

Substitute

Substitute — TanStack Start

The full-stack framework. Its server functions pull business logic into TypeScript — the one thing you don't want if you have, or want, Rails.

Next.js-class React performance — only in Rails.

React on Rails Pro fully supports React 19.2 and brings the performance features Next.js is known for — streaming SSR, React Server Components, and selective hydration — to a real Rails backend, with your Rails models as the server source. Inertia and other Rails + React adapters render on the client; they can't.

React on Rails ProInertiaNext.js
Streaming SSR
React Server Components RC
Selective hydration
Real Rails backend

React Server Components in React on Rails Pro are demoable & maturing (RC), not yet GA — React 19.2 itself is fully supported.

Greenfield, no Rails, one language, optimizing raw velocity? TanStack Start is a fine choice — and we'll say so. ShakaStack is for teams with Rails, or who want it, and real business logic.

The proof

The official React on Rails × TanStack starter.

A deployable Rails 8 + React on Rails Pro app with TanStack Router, Query & Table, shadcn/ui, and an RSC showcase. Rails owns data, logic, and auth and exposes explicit JSON; React on Rails Pro server-renders the TanStack shell and hydrates router state; TanStack Query owns the client data lifecycle — CSRF-aware fetch, URL-synced query keys, mutations and invalidation.

Its AGENTS.md encodes the thesis as an engineering guardrail: “do not add TanStack Start, Vite, or file-based routing.”

Rails 8React on Rails ProTanStack RouterTanStack QueryTanStack Tableshadcn/uiRSC showcase
See it running

Live demos & starters, with source.

Every example links to a running deployment and its repository. Evaluate the stack, compare approaches, or fork a starter.

FlagshipMarketplacescreenshot placeholder

Marketplace

A marketplace performance demo for React on Rails Pro, React 19, and React Server Components.

React on Rails ProReact 19RSC
FlagshipHacker Newsscreenshot placeholder

Hacker News

A Hacker News reader built on React on Rails Pro with React 19 and React Server Components.

React on Rails ProReact 19RSC
FlagshipGumroadscreenshot placeholder

Gumroad

A Gumroad-style creator dashboard comparing Inertia and React on Rails Pro with React 19 and RSC.

React on Rails ProInertiaRSC
OfficialTanStack Starterscreenshot placeholder

TanStack Starter

The official Rails 8 + React on Rails Pro starter with TanStack Router, Query & Table, shadcn/ui, and an RSC showcase — leave Next.js without leaving your Rails backend.

Rails 8React on Rails ProTanStackRSC
ProductionLegacy Tutorial Appscreenshot placeholder

Legacy Tutorial App

The original full-app React on Rails tutorial demo — running in production for years on Shakapacker.

React on RailsShakapackerSSR

More React on Rails demos at reactonrails.com/examples →

What’s at stake

The difference the stack makes.

Without ShakaStack

  • A frontend you dread touching
  • Guessing whether a change made things faster
  • Rising infra bills and brittle build config
  • Quietly falling behind on React (RSC, React 19)
🤙

With ShakaStack

  • Modern React, rendered the Rails way
  • Performance you can prove, run after run
  • Lower infra cost with a Heroku-style flow
  • A stack the maintainers stand behind
Trusted in production

Shipping for teams large and small.

PopmenuHVMNPrintivitySimply BusinessUser InterviewsJewlrAirRobeSkyVergeDatacenters.comThe Information
React on Rails lets us run React at scale inside Rails without the complexity of a separate frontend deployment — 97% Good LCP scores and 80% faster hydration across our platform.
Justis Blasco · Popmenu
Honest answers

Questions you should be asking.

Isn't TanStack Start the future?

TanStack Query, Router, and Table are excellent — we use them every day. TanStack Start, the full-stack framework, is a different decision: it puts your business logic in TypeScript on a Node server. If you have Rails, that's the part you don't want to give up.

Is RSC on Rails actually ready?

React Server Components in React on Rails Pro are demoable and maturing — running today in the starter and demos on a release-candidate build, not yet GA. You get the “server code next to your component” experience now, with Rails models as the server source; we're upfront that the spec is still stabilizing.

When is Next.js (or TanStack Start) the right call?

Greenfield, no Rails, a one-language team optimizing raw velocity, and little server-side business logic? A JavaScript meta-framework is a fine choice — and we'll tell you so. ShakaStack is for teams with Rails, or who want it, and real business logic.

Do I have to adopt all of TanStack?

No. Add TanStack Query against your Rails JSON API and stop there if you like. Router and Table are there when you want type-safe routing and URL-owned table state. You never need TanStack Start.

Built by ShakaCode

Talk to the maintainers.

ShakaCode builds and maintains every project in the stack — and helps teams ship with SSR, RSC, bundling, deploys, and performance. Book a free 30-minute call.