Htmx and the Rule of Least Power

Adoption Experiences and Use Cases

  • Many back-end-focused developers report success using HTMX for internal tools (admin, CRUD, reporting, PR dashboards).
  • Common pattern: keep existing full-page server endpoints, use hx-select / out-of-band swaps to update only parts of the DOM. Backend often “doesn’t know” about HTMX.
  • Some use it alongside Tailwind (including via standalone CLI) without issue; JSX-style component reuse requires server-side rendering solutions.
  • Others choose alternatives in the same space: Unpoly, LiveView-like approaches (Blazor server-side), or minimalist HTMZ.

Pros Highlighted

  • Simpler mental model: “server does the thinking,” browser stays dumb; avoids complex SPA state management and npm build pipelines.
  • Easy incremental adoption: can add attributes to existing HTML, no need to build a full JSON API.
  • Fits well with traditional server frameworks (Django, Rails-like stacks, Flask, Ktor, Rust+templating).
  • Can implement patterns like infinite scroll, tabular data loading, multi-step forms, and validation via HTML + server responses.
  • Some argue it aligns with “rule of least power”: limited client-side capabilities, more predictable interactions, easier reasoning.

Concerns and Critiques

  • Worry about proliferation of endpoints/partials and “spaghetti” templates; others counter that careful componentization and returning full templates mitigate this.
  • Skepticism that complexity is merely shifted from client JS to server templates and routing.
  • For long-lived, evolving products, some argue SPAs (React, etc.) offer more flexibility and a larger hiring pool, especially for complex front-end state.
  • Some feel HTMX’s attribute syntax (especially event hooks) is “ugly” and can devolve into embedded logic in HTML.
  • GitHub issue responsiveness and small core team raise mild worries, though the codebase is described as relatively simple.

Testing and Tooling

  • For Django, opinions split between:
    • Using Playwright/Cypress-style end-to-end tests (heavier but realistic).
    • Relying on fast server-side tests that inspect HTML and headers (e.g., HX-Redirect) without a browser.
  • Suggestions include template-fragment tools (e.g., Jinja2 fragments) to avoid exploding partial files.

Performance and Scope

  • HTMX initialization via attribute scanning is reported fast except on very large pages.
  • Acknowledgment that HTMX suits CRUD-like, server-centric apps; high-frequency, client-heavy interactions (e.g., canvas apps, web3 UIs) may still favor SPAs.