Why Adopt
Hotwire (HTML Over The Wire) lets you build modern, reactive UIs while keeping your logic on the server. It’s the antidote to JavaScript fatigue.
Core Components
- Turbo Drive - Makes all navigation instant via AJAX
- Turbo Frames - Decompose pages into independently-updating sections
- Turbo Streams - Push HTML updates over WebSocket
- Stimulus - Modest JavaScript for behavior that needs it
My Experience
JoyCork’s entire dashboard is built with Hotwire. The analytics update in real-time via Turbo Streams, forms submit without page reloads, and the whole thing is maybe 200 lines of custom JavaScript.
Compare this to a React app where you’d need:
- State management (Redux/Zustand)
- API client (React Query/SWR)
- Form library (React Hook Form)
- Routing (React Router)
That’s 4 dependencies and thousands of lines of code for the same functionality.
The Mental Model Shift
The key insight is: HTML is the API response format.
Instead of:
- Client requests JSON
- Client renders JSON to DOM
- Client manages state
Hotwire does:
- Server renders HTML
- Turbo swaps HTML into DOM
Your server is the single source of truth. No state synchronization bugs.
When to Reach for React
- Complex client-side state (think Figma, Google Docs)
- Offline-first applications
- Native mobile apps (React Native)
- Team already fluent in React
For everything else, Hotwire is simpler and faster to build.