Building a single-page app with Htmx

Scope and intent of using HTMX

  • Many see HTMX as ideal for enriching server-rendered MPAs: forms, CRUD, dashboards, small internal tools, and hobby projects.
  • It’s praised for letting backend‑oriented developers stay mostly in their server language and HTML, avoiding heavy JS frameworks and build steps.
  • Several people explicitly say HTMX is not a good fit for large, highly interactive SPAs (e.g., “next Facebook”), but fine for simpler apps or “next Amazon”-class backoffice tools.

HTMX for SPAs and complexity concerns

  • A major critique: building a full SPA with HTMX leads to:
    • Re‑rendering large HTML fragments and losing local UI state.
    • Manually wiring every place that needs updating when state changes.
    • Gradual reinvention of components and a mini‑framework on top of HTMX.
  • Some note that HTMX offers tools to mitigate this (morph swaps, hx-swap-oob, hx-preserve, websockets/SSE), but critics argue this stays imperative and scales poorly compared to declarative frameworks.
  • Multiple commenters report hitting a “complexity wall” once requirements get more dynamic or stateful.

Islands of interactivity and tool combinations

  • Common pattern: traditional SSR + HTMX “islands,” optionally combined with:
    • Alpine.js for client‑side state and micro‑interactions.
    • Astro or similar “islands architecture” frameworks.
    • Occasional embedded React/Svelte apps for particularly complex widgets.
  • Some libraries/frameworks are mentioned that add component concepts on the server side (e.g., with Django, Go, Python).

State location: server vs client

  • Pro‑HTMX side: keep most state on the server; HTML over the wire keeps UI and persisted state in sync, avoiding “lying UIs.”
  • Critics: pushing every interaction to the server increases latency, hurts UX on flaky networks, and requires more moving parts (e.g., websockets) to feel responsive.
  • Debate over whether HTMX’s “hypermedia-first” approach is genuinely simpler, or just shifts complexity.

Broader web dev philosophy

  • Several argue most current SPAs are unnecessary; users mainly want fast, reliable pages, not maximal interactivity.
  • Others counter that many modern apps genuinely need richer client‑side behavior and that React/Vue/Svelte better support evolving requirements.
  • General agreement: HTMX is powerful for small-to-medium, server-centric apps; poor fit as a primary tool for large, state-heavy SPAs.