We build most client web applications with Django, HTMX and a little Alpine. Here's why that outperforms a SPA for the majority of business software.
The default assumption for a new web application is a JavaScript framework with a separate API. For a lot of business software, that choice imports substantial complexity to solve a problem the project doesn't have.
What you're actually buying with a SPA
Client-side routing, optimistic updates, and offline capability. If your application genuinely needs those — a design tool, a collaborative editor, a mapping interface — a SPA is the right call.
What most business software needs instead
Forms that validate, tables that filter, and pages that load fast on a poor connection. Server-rendered HTML with HTMX handles all three with roughly a tenth of the code, no build-step for the interactive parts, no API contract to version, and no client-side state to desynchronise.
The honest trade-offs
You give up rich offline behaviour and some interaction polish. You gain a codebase a single developer can hold in their head, and pages that render before a SPA has finished parsing its bundle. For a dashboard used by forty people in an office with unreliable internet, that's not close.
Got a project in mind?
We'll tell you honestly whether we're the right fit.