htmx プロジェクトは 8 月 28 日、8 か月間の開発を経てメジャーバージョン 4.0.0 をリリースしました。最大の内部変更は AJAX 実装を XMLHttpRequest から Fetch API と ReadableStream へ全面刷新した点で、外部から見える挙動でも属性継承の明示化や morph swap の標準搭載など互換性を伴う刷新が入っています。
主なポイント
- HTTP 通信を
fetch()ベースに刷新。ストリーミング応答や AbortSignal との親和性が向上 - 属性継承は opt-in に変更。親要素の hx-* を子で使うには
:inheritedサフィックスを明示する必要がある - イベント名を
htmx:phase:action形式に統一 (例:htmx:beforeRequest→htmx:before:request) - 標準で morph 系スワップに対応し、DOM を丸ごと差し替えず既存ノードを再利用可能。
hx-partial要素で複数ターゲット部分更新も導入 - 履歴保存は既定で localStorage スナップショットをやめ、戻る操作時は再フェッチする方式に。既存 2.x プロジェクトの移行を助けるアップグレードチェッカも同梱
- 破壊的変更が大きいため 4.0 は npm の
nextタグに置かれ、latestは当面 2.x を維持。切替は 2027 年初頭を予定