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.