Une version majeure qui sort en refusant la place de version par défaut, ça ne se voit pas tous les jours, et la raison donnée est la bonne.
htmx 4.0.0 est publié depuis le 28 août.
Le moteur interne passe de XMLHttpRequest à fetch, ce qui ne change rien pour vous.
L’héritage d’attributs, lui, devient explicite : un attribut ne descend plus tout seul aux
éléments enfants, il faut écrire :inherited. C’est le gros de la migration. Les événements
sont renommés au format htmx:phase:action, donc htmx:beforeRequest devient
htmx:before:request, l’historique n’utilise plus localStorage par défaut, et de vieilles
API disparaissent, dont htmx.addClass et hx-vars. Une commande repère ce qui casse :
npx htmx.org@4.0.0 upgrade-check.
Le détail qui nous a retenus est ailleurs. Sur npm, la 4.0 n’est pas marquée latest : elle
sort sous l’étiquette next, et la 2.x garde la place par défaut jusqu’au début 2027. La
raison est écrite dans l’annonce : l’équipe ne veut pas mettre à jour de force les gens qui
chargent htmx depuis une adresse de CDN sans numéro de version.
Autrement dit, elle refuse de casser des sites qu’elle ne connaît pas, parce que leurs auteurs
ont fait confiance à une URL. Beaucoup de projets auraient publié en latest en renvoyant
chacun à ses épinglages de version. Celui-ci a choisi de porter le coût à la place de ses
utilisateurs, et de le dire.