Rails + Hotwire
Rails + Hotwire builds reactive web apps server-side using Turbo and Stimulus, sending HTML over the wire. It delivers dynamic CRUD apps and SaaS with minimal custom JavaScript.
This stack is Ruby on Rails with Hotwire, the framework's approach to building reactive interfaces from the server. Hotwire combines Turbo (which updates the page over HTML fragments and WebSockets) and Stimulus (a modest JavaScript framework for targeted behavior). Backed by PostgreSQL and often Redis, it delivers dynamic apps while keeping the bulk of logic on the server in Ruby.
Components
- Rails supplies the MVC framework, the Active Record ORM, migrations, background jobs (Active Job), mailers, caching, and strong conventions that favor convention over configuration.
- Turbo speeds navigation (Turbo Drive), swaps page regions without full reloads (Turbo Frames), and streams live updates to many clients (Turbo Streams), all using server-rendered HTML instead of JSON payloads.
- Stimulus attaches small, declarative JavaScript controllers to existing markup for interactivity that HTML alone cannot express, such as toggles, dropdowns, and client-side widgets.
- PostgreSQL is the database; Redis backs caching, Action Cable for WebSockets, and job queues.
Strengths
Hotwire lets a small team build app-like interactivity without a heavy front-end framework or a separate API, sending HTML over the wire and eliminating duplicated rendering logic between client and server. Rails conventions make CRUD, authentication, and background work fast to implement, and the framework's maturity means well-trodden paths for most problems. The result is less JavaScript to maintain, faster initial development, and a single codebase that one developer can understand end to end. Turbo Streams add real-time broadcast updates with very little ceremony.
Trade-offs
Server-driven UI fits many applications but is less suited to highly interactive, offline-capable, or graphics-heavy experiences that a rich single-page app handles better. Teams steeped in React patterns must adjust to thinking in HTML fragments and server-rendered partials. Ruby's runtime performance is adequate for most web workloads but trails compiled languages, so scaling relies on the usual caching, background processing, and database tuning. Each interaction generally requires a server round trip.
Ecosystem and Deployment
Rails deploys on traditional servers, containers, or platforms such as Heroku and Fly.io, and the modern Rails toolchain bundles asset compilation, so Hotwire needs little front-end build configuration. Background jobs run through Active Job on Sidekiq or a comparable backend using Redis, and Action Cable powers Turbo Stream broadcasts. The gem ecosystem is vast and mature, covering authentication (Devise), authorization, payments, and admin interfaces, which keeps feature work fast. Because Hotwire ships HTML rather than JSON, the same Rails caching tools (fragment and Russian-doll caching backed by Redis) accelerate both initial page loads and live updates, helping the stack scale without introducing a separate front-end pipeline.
When to Use It
Choose Rails + Hotwire for CRUD-heavy web apps, SaaS products, and internal tools where productivity and a single codebase matter more than a fully custom client: dashboards, admin systems, and B2B applications. For app-like, offline-first, or heavily interactive front ends, a SPA framework may be the better fit.