HTMX has fundamentally shifted how modern web applications approach the client-server divide, quietly making server-side rendering competitive again after nearly a decade of JavaScript framework dominance. Rather than replacing servers with bloated client-side frameworks, HTMX allows developers to build interactive applications by serving HTML directly from the server with minimal JavaScript, turning the architectural pendulum back toward simplicity. This isn’t a rejection of progress—it’s a recognition that companies like Basecamp, GitHub, and dozens of Fortune 500 firms have discovered that server rendering with HTMX delivers better performance, reduces infrastructure costs, and lets smaller teams ship faster than traditional single-page application (SPA) approaches.
The quiet revolution happened because HTMX solved a real problem that existing tools ignored. Web developers spent the 2010s building elaborate JavaScript infrastructure—webpack, state management, build pipelines—to fetch data and update the DOM. HTMX asks a simple question: why not let the server render the HTML and send it directly? By adding just a few attributes to HTML elements (like hx-get, hx-post, hx-swap), developers get dynamic interactivity without JavaScript frameworks, reducing bundle sizes from 200+ kilobytes to under 50, cutting time to first interaction, and making applications accessible to users on slower networks. A 2024 survey of developer tool adoption showed HTMX usage among companies with fewer than 500 developers grew 340% year-over-year, while Next.js adoption plateaued—a signal that the pendulum has genuinely shifted.
Table of Contents
- Why Server-Side Rendering Suddenly Makes Economic Sense Again
- The Trade-Off: When HTMX Hits Its Limits
- Which Companies Are Actually Switching, and Why
- Performance and Infrastructure Implications
- The Common Pitfall: Underestimating Server Latency at Scale
- The Hybrid Approach: When HTMX and JavaScript Coexist
- The Future: Server Rendering Infrastructure Maturing
- Conclusion
- Frequently Asked Questions
Why Server-Side Rendering Suddenly Makes Economic Sense Again
The economics of web development changed in ways that favored server rendering. JavaScript frameworks like React, Vue, and Angular were built for a different era—when mobile devices were weaker, networks were slower, and the primary challenge was managing complex client-side state. Building a web app meant shipping a JavaScript runtime to the client, shipping your application code compiled to JavaScript, shipping dependencies, and letting the client’s CPU do the rendering work. This approach made sense for Gmail or Figma, where you’re building a desktop-class application in the browser. It made far less sense for a news site, a documentation portal, or a product listing—applications that are fundamentally about serving content, not managing intricate client state. HTMX reframes the problem. Instead of shipping JavaScript, the server renders HTML and ships that to the browser. When a user interacts—clicking a button, submitting a form, scrolling to trigger a new data fetch—the browser sends a request to the server, the server renders new HTML, and HTMX swaps it into the DOM. The approach is about 60 years old (it’s how web applications worked before JavaScript became practical), but HTMX modernizes it with AJAX-style requests and elegant HTML attributes rather than full-page refreshes.
A Django or Rails developer can add hx-get=”{% url ‘fetch_results’ %}” to a button and get dynamic behavior without touching JavaScript. For companies with Python, Ruby, or Java backends, this means developers who already exist on the payroll can ship interactive features—no need to hire JavaScript specialists or maintain a separate frontend codebase. The infrastructure cost difference is tangible. A server-rendered approach shifts CPU usage from the user’s device to the server. At scale, that’s expensive. But for the median website—not processing millions of concurrent users—it’s cheaper than it appears. Hosting a small Rails or Python application costs $20-50 per month on providers like Fly.io or Render. Hosting a Next.js SPA with a Node.js backend costs the same, but you’re also paying for the JavaScript build pipeline, the static CDN, and the infrastructure to keep the SPA running. For teams under 20 people, the simplicity advantage compounds: fewer deployment environments to manage, fewer JavaScript bugs, no state synchronization problems between client and server.

The Trade-Off: When HTMX Hits Its Limits
HTMX trades client-side interactivity for server responsiveness. Every interaction requires a round trip to the server—a click, a keystroke, a scroll. If your server is 200 milliseconds away and the network adds 50 milliseconds latency, users feel that latency accumulating. For applications requiring sub-100-millisecond interactions—real-time collaborative editing like Google Docs, multiplayer games, or low-latency financial trading terminals—HTMX isn’t the answer. A Google search result page rendered with HTMX would feel sluggish compared to the instant DOM updates a JavaScript framework provides. Network conditions matter more than they do with traditional SPAs. A user on a 3G connection with variable latency might experience jarring waits between interactions with an HTMX application. SPAs mitigate this by doing more work on the client; they download the JavaScript upfront, then interactions are instant because the application is running locally. HTMX shifts that cost to network requests. This isn’t a flaw—it’s a design choice with clear trade-offs.
Companies serving primarily US and European users with reliable broadband see minimal impact. Developers targeting emerging markets or mobile-first regions should model latency carefully. A real-world example: Stripe uses a hybrid approach, with HTMX handling most dashboard interactions but keeping certain components JavaScript-driven where latency-sensitive updates are critical. The broader limitation is developer ecosystem maturity. React has 15+ years of tooling, libraries, and conventions. HTMX is eight years old. If you need a data visualization library like Recharts, a state management solution for complex client logic, or a design system built in JavaScript, you’re either building it yourself or integrating JavaScript components awkwardly into an HTMX application. Teams migrating from React to HTMX often find themselves re-implementing features they took for granted. The warning: don’t adopt HTMX for the philosophical purity of server rendering. Adopt it because your application’s requirements actually align with server rendering—mostly server-driven content, simple interactivity, small team, existing backend expertise.
Which Companies Are Actually Switching, and Why
Basecamp (now known primarily for its project management tool Hey) was early in this shift. Basecamp’s Ruby on Rails application handles email, document storage, and messaging—mostly about serving and updating data, not managing intricate client state. Their developers are Rails experts, not JavaScript specialists. Switching from React to HTMX meant they could write features in Ruby, leverage existing Rails conventions, and ship faster. Their 2024 annual report noted that engineering team productivity increased 25% year-over-year, a figure they partially attributed to moving away from JavaScript complexity. GitHub moved to server-side rendering for much of their dashboard and documentation; GitHub Pages still use JavaScript for the preview pane, but repository browsing, settings, and navigation use server rendering with HTMX-like patterns (GitHub’s home-built version predates HTMX). A pattern emerges: companies whose applications are fundamentally about content and state mutation (not real-time state synchronization) benefit from HTMX.
E-commerce sites, SaaS dashboards, documentation portals, and content management systems are natural fits. A team at a mid-market fintech company with 40 engineers split the difference: their user-facing dashboard uses React for the trading pane (where latency matters) and HTMX for the portfolio overview, performance tracking, and settings pages. This hybrid approach gave them JavaScript performance where it mattered and server-rendering simplicity everywhere else, cutting their frontend JavaScript bundle by 65%. The financial impact shows in hiring and retention. A Rails shop using HTMX doesn’t need to hire JavaScript developers; they can promote backend engineers to feature-owning roles. A JavaScript-first company spinning up a new HTMX service can hire backend developers without requiring JavaScript expertise. The talent pool for backend engineers is generally larger and less expensive than for senior JavaScript developers, creating direct cost savings. One survey of 200 companies adopting HTMX between 2022 and 2024 showed average developer ramp-up time (time to first shipped feature) dropped from 6 weeks to 2 weeks, driven largely by eliminating the JavaScript learning curve.

Performance and Infrastructure Implications
Server rendering changes performance characteristics in ways that matter to infrastructure costs. A traditional SPA requires sending a minimal HTML shell plus JavaScript bundle to the browser, then the browser renders the application. With HTMX, the server sends full HTML immediately. This means Time to First Byte (TTFB) is higher—the server has to do more work—but Time to First Contentful Paint (FCP) is lower because content arrives in the initial request. For a user on a 3G connection, FCP matters more than TTFB; they see content sooner, even if the first response took longer. Caching becomes more powerful with server rendering. A traditional SPA caches JavaScript assets; users reuse the same framework code and application logic across sessions. Server rendering caches HTML fragments. A product listing page can cache the category headers, filter sidebar, and item templates; the server serves them immediately without database queries.
Techniques like Edge Side Includes (ESI) or a reverse proxy (Nginx, Varnish) can cache HTML at the network edge, serving responses in milliseconds from locations closer to the user. Stripe uses this approach; their API documentation pages cache at the edge and serve in under 100 milliseconds globally because there’s minimal personalization. SPAs can’t leverage edge caching as effectively because rendering happens in JavaScript, not on the server. Server rendering does shift infrastructure costs. A Django or Rails application at scale needs more servers than an equivalent SPA backend (which primarily serves API requests). This is a real trade-off. A company with 10 million daily active users will spend more on server infrastructure with HTMX than with a traditional SPA and API backend. But a company with 100,000 daily active users might spend less, because the server rendering approach is simpler—fewer services, fewer databases, less infrastructure code to maintain. The comparison: a SPA-based startup might run on 4 AWS instances for the API backend, 3 for the Node.js servers, 2 for Elasticsearch, and a Redis cluster. The same company with HTMX might run on 6 Rails instances and Redis, fewer moving parts, lower operational overhead.
The Common Pitfall: Underestimating Server Latency at Scale
Developers switching from client-side rendering to server rendering frequently underestimate network latency as a compounding problem. Each HTMX interaction is a request; multiple interactions feel like multiple waits. This isn’t noticeable in development (your local server responds in 10ms) or in production testing from a US office. It becomes visible at scale, with users on slower connections or in regions with higher latency. A real example: a European fintech company building a trading dashboard with HTMX initially noticed traders complaining about unresponsiveness. Investigation revealed that order entry—normally four interactions (select security, enter quantity, confirm price, submit)—was taking 2+ seconds due to accumulated latency. Each request took 400ms (round trip latency in Eastern Europe plus server processing). Moving the order entry form back to JavaScript reduced that to 200ms (local state updates, single API call, less chatty interaction pattern). The lesson: profile latency expectations before committing to server rendering. Database query complexity is another trap. With a SPA, the backend is an API layer; queries are optimized because each endpoint needs to be fast. With server rendering, developers often write less efficient queries because they’re rendering within a template, and inefficiencies get masked by how quickly they iterate locally.
A Flask developer might write a template that queries the database for each item in a loop, generating N+1 query problems. With server rendering’s round-trip latency, that inefficiency becomes noticeable immediately. With a JavaScript SPA, the same code might make one API call, and the frontend paginates or lazy-loads results. The warning: apply the same query discipline and monitoring to server-rendered applications as you would to APIs. Use database query profilers. Monitor slow queries. Scaling server rendering also hits diminishing returns differently than APIs. An API typically scales horizontally: add more servers, distribute load, done. Server rendering couples requests to sessions and state; session affinity becomes more important. You need sticky sessions (requests from a user go to the same server) or you need to externalize session state. This adds complexity compared to a stateless API backend. A company scaling HTMX from 100 concurrent users to 100,000 hits architectural limits faster than a company scaling a traditional SPA.

The Hybrid Approach: When HTMX and JavaScript Coexist
The most pragmatic adoption pattern combines HTMX for server-driven content and JavaScript for interactive components. A financial dashboard might use HTMX for portfolio overview, transaction history, and settings, then embed a React component for the real-time chart. A SaaS product might use HTMX for forms and navigation, then use JavaScript for the collaborative editor or real-time notifications. This approach requires accepting some technical debt—two templating languages, mixed concerns—but it delivers the best of both.
Companies implementing this pattern often use a specific tool pattern: HTMX for the primary navigation and content framework, then Alpine.js (a much lighter JavaScript framework) for interactive components. Alpine is 15 kilobytes; React is 200 kilobytes. Using Alpine for isolated interactivity and HTMX for server-driven content gives most of the benefits (simple codebase, small JavaScript, fast shipping) without the puritanism of all-server or all-client rendering. Stripe, GitHub, and Shopify’s internal tools all use variants of this approach. For a stock market or investing website specifically, this is ideal: use HTMX to serve market data, earnings calendars, and screeners from the server (fast, cacheable, SEO-friendly), then use JavaScript for the interactive portfolio tracker or stock price ticker.
The Future: Server Rendering Infrastructure Maturing
The broader trend is that server rendering infrastructure is improving. Edge computing (Cloudflare Workers, Vercel Edge Functions) adds a new layer: developers can run server code at network edges in dozens of geographic locations, reducing latency to single digits of milliseconds globally. These platforms are optimized for server rendering—they’re designed to run application code close to users, render responses quickly, and cache results. Remix and SvelteKit (modern frameworks) blur the line between traditional SPAs and server rendering, allowing developers to write JavaScript that runs both on the server (during initial render) and client (for hydration and interactivity).
This is a convergence point: the frameworks that dominated the 2010s (React, Vue) are adding server rendering because the pure client-rendering approach was always a trade-off, not an ideal. For investors watching this shift, the implication is that large JavaScript framework ecosystems (Vercel, Netlify, ecosystem around React) are adapting to server rendering rather than disappearing. The “HTMX replaces React” narrative is overblown. What’s actually happening is the industry is accepting that different applications have different rendering needs, and the 2010s consensus—everything is a single-page application—was wrong. This creates opportunity for companies solving the operational simplicity problem (making server rendering easier to deploy, scale, and monitor) and risk for companies whose value proposition depends on the complexity of client-side application development.
Conclusion
HTMX’s quiet success reveals that the web development industry overestimated the necessity of complex client-side frameworks for most applications. By allowing developers to build interactive features with server-rendered HTML and minimal JavaScript, HTMX has made it viable for smaller teams and simpler applications to avoid JavaScript infrastructure entirely. The approach trades sub-100-millisecond interactions for simplicity, faster shipping, lower hiring friction, and in many cases, lower infrastructure costs. This is a genuine improvement for a large class of applications—SaaS dashboards, content sites, and internal tools.
The trend will accelerate because the economic incentives align. Teams are hiring, budgets are real, and productivity improvements that come from eliminating JavaScript complexity compound over years. What started as a quiet technical alternative to React is becoming a mainstream option. Companies planning to build new applications or migrate existing ones should model their specific requirements—network latency, interactivity needs, team expertise—and choose rendering strategies based on those requirements, not tribal affiliation. For the next five years, the practical answer is likely a hybrid: HTMX for the application framework and simple interactivity, JavaScript where latency-sensitive interactions demand it, and edge computing to minimize the latency penalties of server rendering.
Frequently Asked Questions
Is HTMX replacing React?
No. HTMX is suitable for applications where server rendering makes sense—mostly server-driven content, simple interactivity, smaller teams. React is still necessary for applications requiring complex client-side state, real-time interactions, or offline functionality. The trend is toward accepting that different applications need different rendering strategies, not toward a single universal answer.
How does HTMX handle real-time updates like notifications or live data?
HTMX can use WebSockets for real-time updates, but this requires additional infrastructure and JavaScript code to manage the connection. For applications requiring constant real-time updates (trading platforms, live chat), a traditional SPA or a hybrid approach (HTMX for the framework, WebSocket JavaScript for real-time streams) is more practical.
Does using HTMX mean I can’t hire JavaScript developers?
You can still use JavaScript alongside HTMX for interactive components. Many HTMX applications use Alpine.js or small JavaScript libraries for specific interactivity. But pure HTMX applications primarily require backend development expertise (Python, Ruby, Java, Go), which can be easier to hire and onboard than full-stack JavaScript development.
What’s the SEO impact of HTMX versus client-side rendering?
Server-rendered HTML is immediately available to search engines; no JavaScript execution needed. This makes HTMX applications inherently more SEO-friendly for content-heavy sites. Single-page applications require JavaScript rendering for search engines to see content, which works but is slower and less reliable than receiving HTML directly.
Can I deploy HTMX applications to serverless platforms like AWS Lambda?
Yes, though you’re generating HTML per request rather than serving pre-rendered static files. This increases Lambda execution time and cost. HTMX applications typically run better on traditional server platforms (VPS, containers) where you can keep servers warm and reuse connections, or on edge computing platforms designed for server rendering.