Hotwire: HTML Over The Wire
What Hotwire Is and How It Works
- Described as “HTML over the wire”: server renders HTML (often partials) and sends it to the client for DOM updates, sometimes via WebSockets.
- Hotwire is an umbrella for Turbo (navigation, partial updates, “morphing”), Stimulus (small JS controllers wired via data attributes), and Strada (webview/native bridge).
- Emphasizes convention over configuration and progressive enhancement; much behavior (forms, links) is intercepted automatically.
Relation to Rails and Other Backends
- Originated in the Rails/Basecamp ecosystem and is now the default pattern there.
- Multiple commenters stress it’s framework-agnostic in principle and can be used with Django, Laravel, Express, etc., as long as the backend can emit HTML fragments.
Comparisons: React/Vue and SPA Ecosystem
- Supporters: avoids the “rabbit hole” of JS ecosystems (build tools, state libraries, constant churn), lets developers focus on server-side logic.
- Critics: miss the rich component ecosystem, caching strategies, and client-side performance of React/Vue for complex, app-like UIs.
- Some report React setups being stable for years; others describe painful tooling and version migrations, especially in the Vue/tooling world.
Hotwire vs htmx, LiveView, and Similar Tools
- htmx: seen as lower-level and more explicit; Hotwire/Turbo more convention-driven with automatic behaviors.
- Stimulus provides an “htmx-like” HTML-driven way to hook into custom JS.
- Phoenix LiveView, Laravel Livewire, Unpoly, various Django libraries, and older technologies (JSF, WebForms UpdatePanel, Wicket, Comet) are cited as conceptually similar “HTML/partials from the server” approaches.
Performance, UX, and the Hey.app Debate
- Email app built with Hotwire sparked debate: some users report sluggish modals, spinners, and race conditions on slower or throttled connections.
- Others find it fast on good connections and praise its progressive enhancement and unobfuscated client code.
- Disagreement over whether poor behavior is inherent to server-side reactivity (round trips for interactions) or just specific implementation bugs and latency choices.
Developer Experience, Documentation, and Fit
- Many find Turbo “wonderful” for CRUD and internal tools; some say it’s easier than htmx.
- Stimulus is divisive: praised as powerful and composable, criticized as “hot trash” or tedious for state-heavy interactions.
- Documentation is widely viewed as weak, video-heavy, and lacking clear, discoverable examples.
- Common conclusion: Hotwire is excellent for server-rendered sites with moderate interactivity; highly interactive, offline-capable “apps” may still be better served by SPAs.