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).*
