I spent five years building React SPAs. I loved the component model, the ecosystem, and the developer experience. But over time, I noticed a pattern: most of the complexity I was managing had nothing to do with the actual business logic.
State management libraries, API serialization, client-side routing, authentication token handling, loading states, error boundaries — all of this infrastructure existed solely because I'd moved rendering to the client. The server already knew how to do all of this.
HTMX changed my perspective. It lets you build dynamic, interactive interfaces while keeping your rendering on the server. Instead of fetching JSON and transforming it into DOM, you fetch HTML fragments and swap them into the page.
The result? My codebase shrank by 60%. Time to ship new features dropped dramatically. SEO works out of the box. Initial page load is instant. And I'm writing Python instead of juggling two languages.
This doesn't mean React is bad — it's the right choice for complex interactive applications like design tools or real-time collaboration. But for most content-driven web applications, server rendering with sprinkles of interactivity is simpler and faster to build.