hotwire-turbo-stimulus
Hotwire: Turbo + Stimulus
Build reactive Rails UIs without a JS framework. AI agents reach for React on every interactive feature — they grew up on SPAs and don't know that Hotwire covers ~90% of the same ground with server-rendered HTML. This skill encodes when Hotwire wins, what each Turbo primitive does, and how Stimulus fits.
Why this matters
Adding React/Vue to a Rails app means: a build pipeline, a separate state model, duplicate routing, an API layer, and an entirely different testing story. Most apps don't need it. Hotwire keeps you in Rails for the UI, sending HTML over the wire and letting Turbo + Stimulus handle interactivity.
The opinion
Hotwire (Turbo + Stimulus) is the default for Rails 8 UI. Reach for React/Vue only when (a) you need offline-first, (b) you need native-feel mobile-web with heavy client-side state, (c) you have an existing component library that's worth keeping, or (d) the team has explicit JS-framework expertise that outweighs the integration cost.
Counter-positions:
- React with Inertia.js — server-rendered React via Rails controllers. Best of both worlds for teams that want React's component model but Rails' routing. See v0.2
react-with-rails. - htmx — even more minimal than Turbo. Fine if you don't need Stimulus's state model. Not the Rails-native answer.