HTMX, c'est quoi ce truc ?

Si vous traînez un peu sur Twitter/X, Reddit ou Hacker News, vous avez forcément croisé le nom HTMX ces derniers temps. Pas une nouvelle version de React, pas un framework qui va vous demander trois semaines de formation : juste une petite bibliothèque JavaScript d'à peine 14 Ko qui permet de rendre le HTML lui-même interactif, sans avoir à écrire du JS partout.

L'idée de base est presque provocante dans un monde obsédé par les Single Page Applications : et si on n'avait plus besoin de React, Vue ou Angular pour la majorité des sites web ? HTMX part du principe que le HTML aurait dû, dès le départ, pouvoir faire des requêtes AJAX, gérer des mises à jour partielles de page, et déclencher des événements complexes. Il comble ce manque avec quelques attributs HTML supplémentaires.

Comment ça marche concrètement

Le principe est simple : au lieu de faire des allers-retours entre le front et une API JSON que vous devez ensuite transformer en DOM avec du JavaScript, HTMX envoie une requête au serveur et récupère directement... du HTML. Ce HTML vient alors remplacer un morceau de votre page, comme par magie.

Un exemple vaut mille discours. Voici un bouton qui charge une liste de commentaires sans recharger la page :

<button hx-get="/commentaires" hx-target="#zone-commentaires" hx-swap="innerHTML">
  Charger les commentaires
</button>

<div id="zone-commentaires"></div>

C'est tout. Pas de fetch, pas de useState, pas de gestion manuelle du DOM. Quand on clique sur le bouton, HTMX envoie une requête GET vers /commentaires, récupère le fragment HTML renvoyé par le serveur, et l'injecte dans la div ciblée. Le serveur (Node, PHP, Python, peu importe) renvoie simplement un bout de HTML, exactement comme si vous génériez une page classique côté serveur.

Les attributs magiques

HTMX fonctionne avec une poignée d'attributs préfixés par hx- qu'on ajoute directement dans le HTML :

  • hx-get / hx-post / hx-put / hx-delete : le type de requête HTTP à envoyer
  • hx-trigger : l'événement qui déclenche la requête (clic, focus, saisie clavier avec un délai...)
  • hx-target : l'élément du DOM à mettre à jour
  • hx-swap : la façon dont le contenu est inséré (remplacement, ajout avant/après, etc.)

On peut même créer un champ de recherche en temps réel façon "live search" en trois lignes :

<input type="text" name="q"
  hx-get="/recherche"
  hx-trigger="keyup changed delay:300ms"
  hx-target="#resultats">

<div id="resultats"></div>

Ici, à chaque frappe (avec un petit délai de 300ms pour éviter de spammer le serveur), HTMX envoie la valeur du champ vers /recherche et met à jour les résultats. Essayez de faire ça en vanilla JS sans HTMX, vous verrez que ça demande facilement dix fois plus de code.

Pourquoi tout le monde en parle

Le vrai argument de vente d'HTMX, c'est la simplicité architecturale. Fini le besoin de maintenir deux applications séparées (une API REST côté serveur, une SPA côté client) avec toute la complexité que ça implique : gestion d'état, synchronisation, duplication de la logique de validation, build JS de plus en plus lourd...

Avec HTMX, on revient à une architecture proche du bon vieux rendu serveur (comme au temps de PHP ou Rails classiques), mais avec une interactivité digne d'une app moderne. On appelle ça parfois le "Hypermedia-Driven Application", ou plus simplement le retour en grâce du "server-side rendering" boosté aux stéroïdes.

Les cas d'usage où HTMX brille particulièrement :

  • Les back-offices et interfaces d'administration, où on a besoin d'interactivité sans justifier une SPA complète
  • Les sites de contenu (blogs, e-commerce, plateformes SaaS B2B) où le SEO et le temps de chargement initial comptent énormément
  • Les projets où l'équipe maîtrise bien le back-end mais moins l'écosystème JS moderne (et ses dizaines de librairies à jongler)
  • Les MVP et prototypes qu'on veut sortir vite, sans monter toute une stack front complexe

Les limites, parce qu'il n'y a pas de solution miracle

Soyons honnêtes : HTMX n'est pas là pour remplacer React ou Vue dans tous les contextes. Pour des applications très riches en interactions côté client (éditeurs visuels, dashboards temps réel ultra complexes, applications qui doivent fonctionner offline), les frameworks JS traditionnels gardent une longueur d'avance grâce à leur gestion d'état sophistiquée et leur écosystème mature.

Autre point à surveiller : comme chaque interaction déclenche une requête serveur qui renvoie du HTML, votre back-end doit être capable de générer rapidement des fragments HTML. Cela demande une architecture bien pensée côté serveur, avec souvent l'utilisation de moteurs de templates performants (Jinja2, Twig, ou même du templating côté Node avec des partials).

Il faut aussi accepter un changement de mentalité : on ne raisonne plus en "composants avec état local en JS", mais en "fragments HTML renvoyés par le serveur en fonction du contexte". Pour des devs très habitués à React, ça peut demander un petit temps d'adaptation.

Faut-il se lancer avec HTMX ?

Chez YouOnline, on adore explorer ce genre d'approche pour certains projets clients, notamment les sites vitrines évolués, les interfaces d'administration ou les plateformes où la rapidité de chargement et la simplicité de maintenance priment sur la sophistication d'interactions ultra complexes.

La bonne nouvelle, c'est qu'HTMX s'intègre parfaitement avec quasiment n'importe quel back-end : Symfony, Laravel, Node/Express, Django, FastAPI... Vous gardez votre stack serveur préférée et vous ajoutez juste une pincée d'interactivité magique par-dessus, sans reconstruire toute votre architecture.

Si vous travaillez sur un projet où le JavaScript côté client devient un poids plus qu'un atout, ou si vous voulez simplement essayer une approche différente pour gagner en légèreté et en rapidité de développement, HTMX mérite clairement un test. Ce n'est peut-être pas la solution pour tout, mais c'est un outil de plus dans la boîte à outils du développeur moderne, et franchement, ça fait du bien de voir qu'on peut encore innover en repensant les bases du web plutôt qu'en empilant des couches d'abstraction.

Comme souvent en développement web, la meilleure techno n'est pas la plus tendance, mais celle qui correspond le mieux à votre projet et à votre équipe. Et ça, ça vaut le coup d'y réfléchir avant de foncer tête baissée dans le prochain framework à la mode.

Partager