htmx
Hacker ApprovedRanked 2 of 21 JavaScript frameworks by recommenders
A small, dependency-free library that adds interactivity to server-rendered HTML with a few attributes, avoiding heavy JavaScript frameworks; critics say complex, stateful apps hit limits.
A small, dependency-free library that adds interactivity to server-rendered HTML with a few attributes, avoiding heavy JavaScript frameworks; critics say complex, stateful apps hit limits.
440 people gave an opinion
- recommend it
- 320
- criticize it
- 120
- approval share
- 73%
Recommended in 13 of 13 months
- November 2025: recommended
- December 2025: recommended
- January 2026: recommended
- February 2026: recommended
- March 2026: recommended
- April 2026: recommended
- May 2026: recommended
- June 2026: recommended
- July 2026: recommended
- August 2026: recommended
- September 2026: recommended
- October 2026: recommended
- November 2026: recommended (month in progress)
Owned for 2 years
Median of the 12 owners who said how long they have had it.
Each square is one year.
Why it carries the badge
- 320 people recommend itNeeds 10 or more, met.
- 2.7 recommenders for every criticNeeds 2 to 1 or better, met.
- Recommended in 13 of 13 monthsNeeds 4 or more, met.
The same three rules apply to every product, and the badge can’t be bought. How the badge works
What people say about it
The reasons people give, with the number of comments that give each one. Open a reason to read what they said.
Why people recommend it
Each mark is one comment
Simpler than heavy JS frameworks
“Htmx is deliberately maintained as a single, no-dependency file of about 5000loc. The maintainers are of the opinion that it reduces complexity, and I tend to agree.”
Comment from 31 Aug 2026 in “Htmx 4.0” “it solves a UX problem that frameworks like Django and Rails suffer from, without needing to bring in something heavy like React”
Comment from 18 Dec 2025 in “Please just try HTMX” “The magic of this is that it's pretty easy to make SPA-like webapps with no javascript or complex client side framework.”
Comment from 18 Dec 2025 in “Please just try HTMX” - Comment from 15 Jul 2026 in “How I use HTMX with Go”
- Comment from 7 Jan 2026 in “Htmx: High Power Tools for HTML”
- Comment from 28 Jul 2026 in “Removing React.js from the codebase and adapting Htmx for UI interactivity”
- Comment from 30 Aug 2026 in “Htmx 4.0”
Pairs well with server frameworks
“Django + Postgres on the backend plus a frontend of HTMX + alpine.js for a light touch of interactivity where needed is a killer combination”
Comment from 28 Aug 2026 in “Htmx 4.0” “Template Partials and HTMX seems like the Django equivalent of View Components and Stimulus for Rails, which is nice.”
Comment from 10 Dec 2025 in “Django: what’s new in 6.0” “if your backend is already a non-JavaScript server rendered framework like Django then HTMX makes a ton of sense”
Comment from 27 Jul 2026 in “Removing React.js from the codebase and adapting Htmx for UI interactivity” - Comment from 8 May 2026 in “ClojureScript Gets Async/Await”
- Comment from 27 Jul 2026 in “Htmx 4.0, the first JavaScript library to release exclusively on the Game Boy”
Interactivity via simple HTML attributes
“That's the thing that htmx gives you out of the box, along with error handling, progress indicator support, history support, animated transitions”
Comment from 18 Dec 2025 in “Please just try HTMX” “Just a few attributes and we get some very reasonable progressively enhanced client/server interactive elements without full page loads.”
Comment from 29 Aug 2026 in “Htmx 4.0” “I prefer to specify exactly what parts of the page get replaced in much simpler terms, a CSS selector, with `hx-target`.”
Comment from 3 Nov 2025 in “</> Htmx – The Fetch()ening” - Comment from 28 Dec 2025 in “Replacing JavaScript with Just HTML”
- Comment from 19 Dec 2025 in “Please just try HTMX”
Server holds state, no sync issues
“With htmx, there is no frontend state. The html always just reflects the state of the server passively, meaning it cannot go out of sync.”
Comment from 31 Aug 2026 in “Htmx 4.0” “The right (IMO) way to use HTMX is as a replacement for sending JSON over the wire and rendering it into HTML on the client”
Comment from 18 Dec 2025 in “Please just try HTMX” “HTMX really shifts the complexity back to the server in a way that feels more honest and easier to reason about.”
Comment from 7 Jan 2026 in “Htmx: High Power Tools for HTML”
What people warn about
Each mark is one comment
Struggles with complex, stateful apps
“I find htmx ideal for things that should be static to begin with, and for things that are dynamic, I fail to see how it can handle synchronisation?”
Comment from 27 Jul 2026 in “Htmx 4.0, the first JavaScript library to release exclusively on the Game Boy” “State management is the key thing - you end up needing to put way more on the backend then you'd otherwise like to.”
Comment from 18 Dec 2025 in “Please just try HTMX” “eventually hit a complexity wall where we were spending more time fighting the tool than solving the business need”
Comment from 1 Aug 2026 in “Let's Make the Worst Htmx” - Comment from 31 Dec 2025 in “Doom in Django: testing the limits of LiveView at 600.000 divs/segundo”
- Comment from 27 Jul 2026 in “Removing React.js from the codebase and adapting Htmx for UI interactivity”
Logic scattered across server and templates
“In HTMX, the logic is spread. What I see is a construct that says "Replace this with the mystery meat from the backend, whatever that is".”
Comment from 19 Dec 2025 in “Please just try HTMX” “HTMX made things more difficult as it required me to move back to mixing presentation concerns with business-logic and data concerns”
Comment from 28 Aug 2026 in “Htmx 4.0” “You need to track a lot of identifiers for htmx to work properly, and your template and view logic needs to make that make sense.”
Comment from 18 Dec 2025 in “Please just try HTMX” - Comment from 12 Aug 2026 in “HTML over WebSockets: real-time SPAs with barely any JavaScript”
Limited attributes, still needs JavaScript
“That’s basically a massive hack. Every real world app will need enough js that htmx will require you to put js on front end”
Comment from 27 Jul 2026 in “Removing React.js from the codebase and adapting Htmx for UI interactivity” “But it seems very narrow cased, there are only so many attributes and their values and you cannot implement anything else.”
Comment from 19 Dec 2025 in “Please just try HTMX” Awkward JSON handling
“hx-on::after-request response it provides to your callback function does not automatically parse JSON content types”
Comment from 3 Nov 2025 in “</> Htmx – The Fetch()ening” “the htmx developer has made it very clear to me that they are intentionally, ideologically allergic to JSON”
Comment from 9 Nov 2025 in “Local First Htmx”
Other JavaScript frameworks people recommend
The four most recommended other JavaScript frameworks, with the same counts for each, so you can compare like for like. The tick on each bar marks the 2 to 1 line the badge needs.
See all 21 JavaScript frameworks, rankedWhat people said
40 of the 679 comments that mention it, newest first. Each links to the original comment.
“With htmx, there is no frontend state. The html always just reflects the state of the server passively, meaning it cannot go out of sync.”
“Htmx is deliberately maintained as a single, no-dependency file of about 5000loc. The maintainers are of the opinion that it reduces complexity, and I tend to agree.”
“It's exactly because he followed the past two decades of web dev that htmx avoids almost everything about it.”
“Just a few attributes and we get some very reasonable progressively enhanced client/server interactive elements without full page loads.”
“HTMX made things more difficult as it required me to move back to mixing presentation concerns with business-logic and data concerns”
“For me at least, HTMX just makes more sense: you control the flow of content from the client, not from the server as you do with Turbo.”
“Django + Postgres on the backend plus a frontend of HTMX + alpine.js for a light touch of interactivity where needed is a killer combination”
“the main draw of HTMX encourages a completely different app architecture than what the average dev would arrive at with plain JS”
“Its great for forms but that shopping cart example needs code scattered across multiple functions and templates.”
“the impact of recursivedoubts i.e htmx creator on software engineering practices and adhering to simplicity is monumental”
“eventually hit a complexity wall where we were spending more time fighting the tool than solving the business need”
“The criticisms I’m seeing here are all things that are accepted without question in other frameworks but when htmx does it, suddenly it’s too much.”
“Using a tool such as htmx is an effective way for them to solve current challenges while minimizing complexity.”
“The problem I had was that the entire experience became really slow when I had it all working together as one "response"”
“if your backend is already a non-JavaScript server rendered framework like Django then HTMX makes a ton of sense”
“That’s basically a massive hack. Every real world app will need enough js that htmx will require you to put js on front end”
“I find htmx ideal for things that should be static to begin with, and for things that are dynamic, I fail to see how it can handle synchronisation?”
“When we design apps in a way that respects the conventions of REST (hypermedia and resource-oriented design), htmx slots in perfectly.”
“I use htmx for loading and updating resources and I want those operations to work as well as possible even without JavaScript”
“One of the most delightful little swag stunts I've ever seen, and emblematic of the HTMX crew just how much they care about craft and delight in everything they do.”
“Any personal web projects I still use htmx and reached a decent flow with it. Completely simplifies web dev, imo.”
“htmx is extremely easy to integrate with your clojure(script) projects, i found it to be quite pleasant paradigm”
“HTMX really shifts the complexity back to the server in a way that feels more honest and easier to reason about.”
“WebSocket connectivity is one aspect; there is another part of logic and architecture where it falls short.”
“I have just shipped a very useful and interactive app surprisingly quickly for my customer using just htmx with a little Javascript.”
“all the users will be forced to reload the giant JS bundle over and over again, as opposed to just reloading a single resource on a single page like they would with the htmx approach”
“But it seems very narrow cased, there are only so many attributes and their values and you cannot implement anything else.”
“hx-trigger in the response header would handle that cleanly. Fires an event client-side; one global handler shows the error.”
“In HTMX, the logic is spread. What I see is a construct that says "Replace this with the mystery meat from the backend, whatever that is".”
“State management is the key thing - you end up needing to put way more on the backend then you'd otherwise like to.”
“That's the thing that htmx gives you out of the box, along with error handling, progress indicator support, history support, animated transitions”
“You need to track a lot of identifiers for htmx to work properly, and your template and view logic needs to make that make sense.”
“it solves a UX problem that frameworks like Django and Rails suffer from, without needing to bring in something heavy like React”
“The magic of this is that it's pretty easy to make SPA-like webapps with no javascript or complex client side framework.”
“The right (IMO) way to use HTMX is as a replacement for sending JSON over the wire and rendering it into HTML on the client”
“Template Partials and HTMX seems like the Django equivalent of View Components and Stimulus for Rails, which is nice.”
“the htmx developer has made it very clear to me that they are intentionally, ideologically allergic to JSON”
“am I wrong to think that if you use hx-boost to swap in fragments, then the URL that gets updated/saved in history wouldn't actually load the same page”
“I prefer to specify exactly what parts of the page get replaced in much simpler terms, a CSS selector, with `hx-target`.”
“hx-on::after-request response it provides to your callback function does not automatically parse JSON content types”
Counts come from 1,795,640 Hacker News comments, November 2025 to November 2026. How we count. Report a mistake.