I’ll respond as someone who is very familiar with both htmx and Intercooler (the predecessor of htmx).
I would say htmx happens to very nicely support progressive enhancement, if that’s your goal. Take this description of the hx:boost attribute for example:
The
hx-boost
attribute allows you to “boost” normal anchors and form tags to use AJAX instead. This has the nice fallback that, if the user does not have javascript enabled, the site will continue to work.
But what really sets htmx apart imho, is that you get to update parts of the page dynamically, by just adding some html attributes! I.e. no JavaScript required.
It doesn’t end there of course, it makes implementing many web app staples like lazy loading, type-ahead search, dependent selects, click-to-edit, etc. absolutely trivial to implement (here’s the list of examples: </> htmx ~ Examples).
Then there’s event handling, animation transitions, websockets, sse … the list goes on … ALL through specifying some attributes on bog standard html elements!
The clue is in the name really: htmx… as in extending html. I like to think of it as extending the html spec to bring you everything we’ve come to expect from modern web app development, purely through html, css and your favorite back-end framework.
My personal intercooler/htmx journey began by wanting to “ajaxify” a rather large, traditional MVC, full-page-refresh app, without doing a complete rewrite (it’s a Playframework app, so essentially the Java-based equivalent of Rails).
It was trivially easy to start “sprinkling in” aka progressively enhancing the app, with no backend changes at all, just by adding a few attributes on the existing html elements.
Not long after that, we had transformed the entire app into what feels like any other SPA (not a single full page refresh in sight), complete with history (back-button) support, while it still being a bog standard MVC app, with server side templates being rendered to the frontend. This, as they say, was a MASSIVE win
Bottom line: if you believe that simplicity beats the “sexy" complexity introduced by heavy JS frameworks like React, Vue, Angular, etc; if you’re a single developer/small team wanting to productively churn out simple, easy to understand code that doesn’t require a bunch of extra build steps; if you buy into philosophies like the idea behind Tailwind CSS, Alpine.js and yes some parts of Hotwire (especially the “html over the wire” part), then I suggest you at least try out htmx before you make a decision.
I’m willing to bet you won’t regret it
P.S. I Just saw that the guy who made both intercooler and htmx responded while I was writing this, by pretty much saying what I was trying to say, just much more succinctly