August 2023, Revisited: The htmx Moment
Eric Greene June 11, 2026Our Three-Year Retrospective reaches August 2023, a month with no major framework release to its name — and yet one of the most consequential months in recent front-end history, because it was the peak of what everyone at the time simply called the htmx moment. A dependency-free JavaScript library, hovering around version 1.9.x and small enough to read in an afternoon, had become the most argued-about tool on the web. The arguments were rarely about htmx itself. They were about everything the industry had spent a decade assuming.
What htmx actually was
The library's premise fit in a sentence: any element can make an HTTP request, and the server responds with HTML that gets swapped into the page. Attributes like hx-get, hx-post, hx-target, and hx-swap extended plain HTML into a complete interactive vocabulary. No client-side state store, no build step, no JSON API layer, no hydration. The server renders HTML — the same thing it had done since 1995 — and the browser swaps fragments instead of full pages. The entire programming model fit in a fragment:
<button hx-get="/contacts/1/edit"
hx-target="#contact-1"
hx-swap="outerHTML">
Edit
</button>
<div id="contact-1">
<!-- the server's HTML response replaces this element -->
</div>Carson Gross, htmx's creator, framed this not as a hack but as a return to first principles: hypermedia as the engine of application state, the REST idea that the industry had name-checked for years while building RPC-over-JSON. The Hypermedia Systems book, published that summer, made the theoretical case at length, and htmx's selection for the GitHub Accelerator earlier in the year had given the project visible momentum. By August, "HTML over the wire" — a phrase the Rails world had coined for Hotwire — described a whole family of tools: htmx, Hotwire/Turbo, Phoenix LiveView, Laravel Livewire, Blazor's server-rendered modes.
Why it struck a nerve in 2023
Timing. By 2023, a generation of teams had shipped single-page applications for products that were, honestly, forms and tables. They had paid the full SPA tax — client routing, state synchronization, API versioning, bundle management, hydration bugs, a second codebase's worth of TypeScript — for interactivity that a fragment swap could deliver. Meanwhile the React ecosystem was itself in flux, mid-pivot toward server components, implicitly conceding that shipping everything to the client had been overcorrection.
htmx gave that accumulated frustration a flag to rally around. The debates that August were genuinely useful when they stayed concrete: How much interactivity does this app really need? Who owns rendering? What does the team actually know — if your strength is Django or Spring or Rails, why maintain a parallel front-end stack? And they were useless when they became identity arguments, which, this being the internet, they often did.
Our take at the time, teaching teams on both sides of the divide, was that htmx's deepest contribution was permission: it made it professionally respectable again to say "we don't need a SPA for this."
What the skeptics got right
The pushback was not all reflex. Critics correctly noted that htmx moves complexity rather than deleting it — your server templates become your component system, and undisciplined fragment endpoints can turn into their own spaghetti. Rich client-side interactivity (drag-and-drop builders, collaborative editors, anything canvas-shaped) remained squarely SPA territory. And hiring pressure was real: the job market spoke React. None of that invalidated the hypermedia approach; it bounded it. The right lesson, then as now, was to match architecture to interaction profile rather than to fashion.
Looking back from June 2026
The htmx moment did not end with htmx conquering the world, and it did not need to. The library matured steadily — the 2.x line shipped in 2024 — and settled into a durable niche, while its real legacy spread wider: server-first rendering became the default assumption almost everywhere, from React Server Components to fresh interest in plain server-rendered stacks. The question htmx forced — "what is your essential interactivity, and what is incidental?" — is now a normal part of architecture reviews rather than a provocation.
For teams who took the hypermedia road, the payoff has been small codebases that age gracefully. We teach the full approach — htmx fundamentals, server-side patterns, when to reach for islands of heavier interactivity, and how to keep fragment endpoints disciplined — in Full-Stack Web Apps with htmx, and it remains one of our favorite courses to deliver, because it spends most of its time on exactly the architectural judgment this month in 2023 put back on the table.