# htmx

320 Hacker News commenters recommended htmx and 120 criticized it, November 2025 to November 2026. It was recommended in 13 of 13 months; owners who said how long report a median of 2 years (12 owners). It meets the Hacker Approved badge rule.

**Verdict:** 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.

## Why people recommend it

- Simpler than heavy JS frameworks (7 comments): "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." ([source](https://news.ycombinator.com/item?id=49504469)) "it solves a UX problem that frameworks like Django and Rails suffer from, without needing to bring in something heavy like React" ([source](https://news.ycombinator.com/item?id=46315213)) "The magic of this is that it's pretty easy to make SPA-like webapps with no javascript or complex client side framework." ([source](https://news.ycombinator.com/item?id=46314998))
- Pairs well with server frameworks (5 comments): "Django + Postgres on the backend plus a frontend of HTMX + alpine.js for a light touch of interactivity where needed is a killer combination" ([source](https://news.ycombinator.com/item?id=49482074)) "Template Partials and HTMX seems like the Django equivalent of View Components and Stimulus for Rails, which is nice." ([source](https://news.ycombinator.com/item?id=46214586)) "if your backend is already a non-JavaScript server rendered framework like Django then HTMX makes a ton of sense" ([source](https://news.ycombinator.com/item?id=49072132))
- Interactivity via simple HTML attributes (5 comments): "That's the thing that htmx gives you out of the box, along with error handling, progress indicator support, history support, animated transitions" ([source](https://news.ycombinator.com/item?id=46316917)) "Just a few attributes and we get some very reasonable progressively enhanced client/server interactive elements without full page loads." ([source](https://news.ycombinator.com/item?id=49487316)) "I prefer to specify exactly what parts of the page get replaced in much simpler terms, a CSS selector, with `hx-target`." ([source](https://news.ycombinator.com/item?id=45805649))
- Server holds state, no sync issues (3 comments): "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." ([source](https://news.ycombinator.com/item?id=49509269)) "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" ([source](https://news.ycombinator.com/item?id=46314886)) "HTMX really shifts the complexity back to the server in a way that feels more honest and easier to reason about." ([source](https://news.ycombinator.com/item?id=46527002))

## What people warn about

- Struggles with complex, stateful apps (5 comments): "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?" ([source](https://news.ycombinator.com/item?id=49065605)) "State management is the key thing - you end up needing to put way more on the backend then you'd otherwise like to." ([source](https://news.ycombinator.com/item?id=46317149)) "eventually hit a complexity wall where we were spending more time fighting the tool than solving the business need" ([source](https://news.ycombinator.com/item?id=49133087))
- Logic scattered across server and templates (4 comments): "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"." ([source](https://news.ycombinator.com/item?id=46321365)) "HTMX made things more difficult as it required me to move back to mixing presentation concerns with business-logic and data concerns" ([source](https://news.ycombinator.com/item?id=49484694)) "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." ([source](https://news.ycombinator.com/item?id=46316517))
- Limited attributes, still needs JavaScript (2 comments): "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" ([source](https://news.ycombinator.com/item?id=49069149)) "But it seems very narrow cased, there are only so many attributes and their values and you cannot implement anything else." ([source](https://news.ycombinator.com/item?id=46322145))
- Awkward JSON handling (2 comments): "hx-on::after-request response it provides to your callback function does not automatically parse JSON content types" ([source](https://news.ycombinator.com/item?id=45804103)) "the htmx developer has made it very clear to me that they are intentionally, ideologically allergic to JSON" ([source](https://news.ycombinator.com/item?id=45861710))

## Alternatives hackers recommend

- [React](https://hackerapproved.com/p/react.md): 482 recommend
- [Svelte](https://hackerapproved.com/p/svelte.md): 151 recommend
- [Vue](https://hackerapproved.com/p/vue.md): 121 recommend
- [Angular](https://hackerapproved.com/p/angular.md): 82 recommend
- [SolidJS](https://hackerapproved.com/p/solid.md): 69 recommend

## Cite as

Hacker Approved, "htmx", https://hackerapproved.com/p/htmx/ (counts from 1,795,640 Hacker News comments, November 2025 to November 2026).
