ShakaCode open source

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

ShakaStack is five open-source projects from ShakaCode that take your Rails + React app from idea to proven-fast in production - build, test, prove, and deploy - without splitting into a separate frontend app.

5open-source projects
2013shipping React in Rails since
RSCReact 19 & Server Components
the_shaka_stack.rb▟ build → deploy
BuildReact on Rails01
BundleShakapacker02
TestE2E on Rails03
ProveShakaPerf04
DeployControl Plane Flow05
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 have 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
First 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 → test → prove → deploy.

Four phases, five open-source projects - one path from Rails + React code to validated production. Every project is production-tested and maintained by the ShakaCode team; use one on its own, or follow the whole path. Tap a layer to see how it moves your app forward.

01BuildRender React in Rails and bundle assets.
02TestExercise real browser flows with Rails test state.
03ProveProve every page is faster before it ships.
04DeployShip the validated app to production.
Build

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 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.
reactonrails.com - terminal
$bundle exec rails generate react_on_rails:install
$npx create-react-on-rails-app@latest my-app
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 reported cutting local dev load times by roughly 83% after migrating off Next.js. 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 do plain server rendering at best, with no streaming SSR, no React Server Components, and no selective hydration.

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.

No Rails and little server-side logic? A JavaScript meta-framework is a fine choice, and we'll say so. ShakaStack is for teams who have Rails, or want it.

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, E2E tests, deploys, and performance. Book a free 30-minute call.