HTMX: progressive enhancement HTML-first contro la SPA fatigue

HTMX (1.0 novembre 2020) di Carson Gross: libreria JavaScript minimale che estende HTML con attributi per request AJAX, WebSocket, SSE. Ritorno al server-rendering con interattività senza SPA framework.

Open SourceWebR&D HTMXCarson GrossProgressive EnhancementHTMLJavaScriptOpen Source

Contro la complessità SPA

Dopo quindici anni di dominio React/Vue/Angular, una reazione: le SPA sono spesso eccessive. Per molte applicazioni CRUD, dashboard, portali, una pagina server-rendered con un po’ di Ajax funzionerebbe benissimo. Ma il tooling moderno spinge tutti verso stack pesanti (Webpack + Babel + React Router + state management + API layer).

HTMX, creato da Carson Gross nel 2020 (evoluzione di intercooler.js del 2013), è una libreria JavaScript minimale (~14KB) che estende HTML con attributi per interazione AJAX. La filosofia: server returns HTML, client swaps HTML fragments.

HTMX 1.0 è rilasciato nel novembre 2020. Intorno al 2022 (1.8) ottiene momentum di adozione significativo. Licenza Zero-Clause BSD (0BSD) — equivalente di public domain.

La sintassi

<button hx-post="/subscribe" hx-target="#result" hx-swap="innerHTML">
  Subscribe
</button>
<div id="result"></div>

Quando si clicca il bottone, HTMX invia POST a /subscribe, riceve HTML di risposta, lo inserisce in #result. No JavaScript custom, no JSON API, no state management.

Attributi principali:

  • hx-get/post/put/delete/patch — verb HTTP
  • hx-target — elemento in cui mettere il risultato
  • hx-swap — come sostituire (innerHTML, outerHTML, beforebegin, afterend)
  • hx-trigger — evento scatenante (click, change, keyup, every 5s, revealed)
  • hx-push-url — push dell’URL in history
  • hx-indicator — spinner durante request

WebSocket e SSE

HTMX estende oltre AJAX:

  • hx-ws — WebSocket bidirezionale
  • hx-sse — Server-Sent Events per push unidirezionale

Abilita pattern real-time (chat, notifiche, dashboard live) senza framework SPA.

HATEOAS rivisitato

HTMX riscopre HATEOAS (Hypermedia as the Engine of Application State, Roy Fielding, REST thesis 2000): il server è l’engine dello state, il client (browser) mostra e interagisce. Approccio opposto all’architettura SPA moderna dove il client è l’engine dello state e il server è l’API.

Server framework partner

HTMX brilla con server-side frameworks:

  • Django (Python) — integrazione naturale
  • Rails (Ruby), Phoenix (Elixir), Laravel (PHP)
  • Go templates, Java Spring MVC
  • Node.js Express con template engine (EJS, Pug, Nunjucks)

Il server restituisce HTML partial invece di JSON; niente “backend for frontend” separato.

Adozione

HTMX ha una community dedicata e crescente:

  • Internal tools aziendali
  • Admin dashboard
  • Content sites con interattività leggera
  • Progressive enhancement di siti legacy
  • Book: “Hypermedia Systems” (2023) di Gross, Stepinski, Akşimşek formalizza la filosofia

Nel contesto italiano

Adoption crescente 2023-2024 in team stanchi di complessità React/Vue per casi d’uso dove non è giustificata.


Riferimenti: HTMX 1.0 (novembre 2020), Carson Gross. Evoluzione di intercooler.js (2013). Licenza 0BSD. ~14KB minified. Attributi hx- sul HTML. Libro “Hypermedia Systems” (2023).*

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi