The Unpoly Paradox: Why the “Better” Framework Lost the Popularity Contest (Unpoly vs. HTMX)
If you look purely at feature checklists, Unpoly often beats HTMX.
As you noted, Unpoly is essentially HTMX and Alpine.js pre-bundled, tested together, and polished into a cohesive system. It has features out-of-the-box that HTMX users spend weeks re-inventing: standard server protocols, advanced caching, deeply integrated history management, and—most famously—a robust “Layers” (modal) system that puts every other modal library to shame.1
Yet, if you check GitHub stars or Reddit threads, HTMX is the revolution, and Unpoly is the quiet alternative.
Why? The answer lies less in technology and more in psychology, marketing, and the “Unix Philosophy.”

1. The Marketing Gap: “Grug Brain” vs. “German Engineering”
The single biggest reason for HTMX’s dominance is memetics.
- HTMX is led by Carson Gross, who is not just a developer but a skilled evangelist. He built a philosophy around the library (HATEOAS, Grug Brain Developer). He creates memes, goes on podcasts, and engages in Twitter battles. He turned a JavaScript library into a movement against React complexity.
- Unpoly was built by Makandra, a German software consultancy.2 They built it to solve their own problems (building massive Rails apps for enterprise clients). They released it quietly, documented it perfectly, and then… went back to work.
HTMX feels like a revolution you join; Unpoly feels like a tool you download. In the attention economy, the revolution wins.
2. The “Payload Anxiety” (48kb vs. 14kb)
Developers are irrationally sensitive to initial bundle size.
- HTMX markets itself as ~14kb (gzipped).3 This feels “free” to add to any project.
- Unpoly is roughly ~48kb (gzipped).4
Psychologically, 48kb feels “heavy” to a developer coming from vanilla JS. The irony, of course, is that once that same developer adds HTMX (14kb), Alpine.js (15kb), and a few plugins to handle modals and transitions, they are approaching Unpoly’s size anyway.
Unpoly is “honest” about the weight of a full-featured framework; HTMX hides the weight by making you import the extra features (Alpine) separately.
3. Unix Philosophy vs. The Monolith
There is a strong preference in modern development for “composability”—the Lego brick approach.
- The HTMX + Alpine Stack appeals to the “Unix Philosophy”: Do one thing and do it well. HTMX handles the network; Alpine handles the DOM. If you don’t like Alpine, you can swap it for Hyperscript or Vanilla JS. This makes developers feel powerful and in control.
- Unpoly is a “Monolith.” It handles the network, the DOM, the history, the modals, and the animations. If you don’t like Unpoly’s way of doing modals, you are fighting the framework.
While Unpoly’s integrated approach prevents bugs (e.g., ensuring a modal closes when the history “back” button is pressed), developers often prefer the illusion of freedom that comes with piecing together their own stack.
4. The “Magic” Factor
Unpoly works so well because it employs a lot of “magic” (implicit behavior).
For example, Unpoly automatically handles “restoration visits”—caching the page state so that when you click “Back,” the page looks exactly how you left it. It parses your HTML to find navigation bars and update them automatically.
- Unpoly says: “Trust me, I’ll handle the UI state.”
- HTMX says: “I will do exactly what you tell me to do, and nothing else.”
Many developers have been burned by “magic” frameworks in the past. HTMX is explicit (low-level), which feels safer to developers who want to understand every byte effectively crossing the wire.
5. Network Effects and Content
Because HTMX is modular and lower-level, it requires more tutorials.
- “How do I do modals in HTMX?”
- “How do I validate forms in HTMX?”
- “HTMX vs Alpine vs Hyperscript?”
This creates a content engine. YouTubers and bloggers have endless topics to cover.
Unpoly, conversely, is too well documented. If you want to know how to do a modal in Unpoly, you read the official docs, copy the [up-layer] attribute, and you’re done. There is no need for a 10-minute YouTube tutorial, and therefore, there is less “buzz” generated by content creators.5
Summary Comparison
| Feature | Unpoly | HTMX + Alpine |
| Philosophy | Batteries-included (Monolith) | Composable (Unix style) |
| Learning Curve | Medium (One API to learn) | Low initially, High complexity later |
| Modals/Layers | World-class (Native support) | Difficult (Requires gluing libs) |
| Marketing | Quiet, Professional | Aggressive, Viral, Memetic |
| Best For… | Getting a complex app done fast | Tinkerers & public-facing sites |
Conclusion
You are right: Unpoly is likely the technically superior choice for building complex, app-like interfaces (especially dashboards and admin panels) because it handles the messy edge cases of the DOM that HTMX leaves to the user.
However, HTMX won the popularity war by being smaller, louder, and more modular.
