For the last decade, if you asked an agency how they were creating web application architecture, the answer was always the same: a Single Page Application (SPA). You build a standalone React or Vue frontend, build a REST or GraphQL backend, and connect the two.
It was the undisputed industry standard. It was also, in retrospect, a colossal architectural mistake for 80% of B2B applications.
By adopting SPAs by default, we downloaded megabytes of JavaScript to the user’s browser, forcing their laptop to do the work that our servers should have done. We destroyed SEO. We created massive state-management complexity (Redux, Zustand) just to keep the frontend and backend in sync. We doubled our deployment complexity.
The industry’s own measurement data backs this up. HTTP Archive’s Web Almanac – which crawls millions of real-world pages annually – found the median desktop page requesting 620 KB of JavaScript in its 2024 edition (570 KB on mobile), and that figure has continued climbing in the 2025 edition. None of that weight is free: it has to be downloaded, parsed, compiled, and executed on the user’s device before a single event handler is attached – on the exact low-tier mobile hardware that a growing share of B2B users now rely on.
As we look at enterprise web development today, the pendulum has swung violently back. The SPA era is dying. Here is why CTOs are abandoning it, and what is replacing it.
The 3 Failures of the SPA Paradigm
When evaluating custom software development proposals, you must understand why the old architecture is failing.
1. The Total Cost of Ownership (TCO) Multiplier
In an SPA architecture, you are effectively building two separate applications. You need frontend engineers to build the React app, and backend engineers to build the API. Every feature requires touching both codebases. Furthermore, you have to duplicate business logic: form validation must run in the browser (for UX) and on the server (for security). Teams we’ve worked with consistently report that this duality – two codebases, two deployment pipelines, and duplicated validation logic – meaningfully slows feature velocity and compounds maintenance cost over time, independent of any single project’s specific numbers.
2. The Hydration Problem and Performance
SPAs load a massive JavaScript bundle before the user sees anything meaningful. To fix this, the industry invented “SSR with Hydration” (Next.js/Nuxt). The server renders the HTML, sends it to the browser, and then the browser downloads the heavy JavaScript anyway to “hydrate” the page and make it interactive. This creates the “Uncanny Valley” of web performance: the user can see the buttons, but cannot click them until hydration finishes.
3. The Security Surface Area
In an SPA, the API must be exposed to the public internet because the browser needs to query it directly. Every endpoint becomes a potential attack vector. You must implement complex CORS policies, CSRF tokens, and robust client-side authentication handling.
The New Standard: Server-Side Rendering (SSR) and Hypermedia
In 2026, when creating web application architectures, elite engineering teams are returning to the server. But they are not returning to the clunky, full-page reloads of 2010.
They are adopting Server-Side Rendering (SSR) combined with Hypermedia (HTMX/Alpine.js) or React Server Components (RSC).
Comparison: Web Architecture Paradigms
Why Hypermedia is Winning for B2B SaaS
Frameworks like HTMX allow developers to build modern, dynamic, single-page-like experiences without writing any client-side JavaScript.
Instead of the server sending JSON data to the browser (which the browser must parse and convert to HTML via React), the server simply sends the raw HTML snippet. HTMX swaps that snippet into the DOM instantly.
The architectural benefits are massive:
- Single Codebase: The backend developer writes the logic and the HTML template. You do not need a dedicated React engineer to build a dashboard.
- Zero Client State: The server is the single source of truth. You delete Redux. You delete state synchronization bugs.
- Instant Load Times: htmx itself – the reference implementation of the hypermedia approach – ships at roughly 14 KB minified and gzipped, dependency-free, according to its own published library size. Against the HTTP Archive’s median 570-620 KB of JavaScript per page cited above, that is more than a 40x reduction in what the browser has to download and execute before the page becomes interactive, and low-tier mobile devices feel that difference immediately.
The Core Web Vitals Test: Measuring Architecture Choices Objectively
Architectural opinions are cheap; Google’s Core Web Vitals are not – they are a published, standardized measurement framework, and since March 12, 2024, they are also a confirmed ranking input for search. Rather than debating SPA vs. SSR vs. hypermedia in the abstract, run any candidate architecture against these three metrics before committing to it.
INP is a meaningful detail here specifically because Google replaced First Input Delay (FID) with INP as the third Core Web Vital in March 2024 precisely because FID only measured the delay before a page’s first interaction – a page could pass FID while still feeling sluggish on every subsequent click. INP measures responsiveness across the entire session, which is a much harder bar for JavaScript-heavy SPAs to clear consistently, and a much easier one for architectures that ship less client-side code by default.
How to use this in practice: before approving any new web application architecture, request Lighthouse or PageSpeed Insights scores against these three metrics on a realistic prototype – not a demo on a fast developer laptop. An architecture that cannot hit “good” thresholds on a mid-tier Android device on a throttled connection will cost you SEO ranking and user trust regardless of how elegant the codebase is internally.
The Migration Path: De-Risking a Move Away from an Existing SPA
None of this means you should schedule a “big bang rewrite” of your existing React or Vue application. A full rewrite is the single riskiest project a CTO can greenlight: it freezes feature development for months, and it has a well-documented failure rate (Netscape’s infamous ground-up rewrite in the late 1990s is the textbook cautionary tale, and it still repeats today inside enterprises that try to replace a working SPA in one leap).
The correct approach, when a legacy SPA is genuinely causing cost or performance pain, is the Strangler Fig Pattern, applied at the route level.
How it works in practice:
- Identify low-risk, high-traffic routes first. A settings page, a read-only reports dashboard, or a static marketing section inside the app are ideal candidates: they have simple state, low interactivity, and immediate SEO or load-time upside.
- Stand up the new route on the server-rendered stack (HTMX + your existing backend framework, or React Server Components if you are staying inside the React ecosystem) behind the same domain and navigation, so users never notice the underlying architecture has changed.
- Route traffic at the reverse proxy layer (Nginx, Caddy, or your CDN’s edge routing rules), sending requests for
/settingsor/reportsto the new server-rendered handler while every other route continues to hit the old SPA bundle unchanged. - Measure before expanding. Track Core Web Vitals (particularly Largest Contentful Paint and Interaction to Next Paint) and JavaScript bundle size on the migrated route versus the legacy routes. This gives you hard data to bring back to the business before committing further budget.
- Repeat route-by-route, prioritized by whichever pages generate the most support tickets, the worst Lighthouse scores, or the highest hosting cost, until the legacy SPA shell only serves the handful of screens that genuinely need rich client-side interactivity (a canvas editor, a live collaborative whiteboard, a complex drag-and-drop builder).
What this buys you: zero downtime, no feature freeze, a rollback path at every single step (worst case, point the proxy rule back at the old bundle), and a running total cost-of-ownership comparison that justifies the next route’s migration instead of asking for blind trust in a 12-month rewrite. Most B2B SaaS teams we’ve guided through this migrate their 5-10 highest-traffic routes within a single quarter, at which point the TCO savings from reduced JavaScript maintenance alone typically fund the rest of the migration.
At Manifera, we use this architectural shift to save our clients money. By deploying HTMX alongside robust backend frameworks (Python/Django or PHP/Laravel) for standard B2B SaaS projects, our offshore software development teams eliminate the duplicate frontend/backend codebase entirely – one team, one language stack, one deployment pipeline per feature, instead of two.
We only recommend React/Vue for applications that genuinely require complex, offline-capable client-side interactivity (like a video editor or a mapping tool).
Stop paying the SPA tax. Contact our Amsterdam architecture team to design a modern, server-driven web application.
FAQs
(Scenario: CTO planning a new B2B dashboard) Is it true that Single Page Applications (SPAs) are dying?
For standard B2B SaaS and dashboards, yes. The industry has realized that sending megabytes of JavaScript to the browser to render a simple table and a form is an architectural massive over-engineering. Teams are migrating to Server-Side Rendering (SSR) with Hypermedia (HTMX) to drastically reduce complexity, development time, and load times.
(Scenario: Product Owner concerned about user experience) If we move away from SPAs, will our application have clunky full-page reloads?
No. Modern hypermedia tools like HTMX or React Server Components intercept clicks and form submissions, request small HTML snippets from the server in the background (via AJAX), and smoothly swap them into the existing page. The user gets the fast, seamless experience of an SPA without the massive JavaScript payload.
(Scenario: CEO reviewing development costs) Why is an SPA architecture more expensive to build and maintain?
An SPA requires two separate applications: a frontend (React/Vue) and a backend API. This means every feature requires two pull requests, two deployment pipelines, and duplicated logic (like form validation on both the client and server). Returning to a server-driven architecture unifies the codebase into one team, one language stack, and one deployment pipeline per feature, which structurally removes that duplication rather than just optimizing around it.
(Scenario: Marketing Director worried about growth) How does web application architecture affect SEO?
Traditional SPAs are terrible for SEO because they send an empty HTML <body> to the search engine crawler, relying on JavaScript to render the content later. Many crawlers struggle with this or index it slowly. Server-Side Rendering (SSR) sends fully populated HTML directly from the server, resulting in instant, flawless indexing by Google and other search engines.
(Scenario: Engineering Lead dealing with performance complaints) What is the “Hydration Problem”?
In frameworks like Next.js, the server pre-renders HTML so the user sees the page quickly, but the browser still has to download and execute a massive JavaScript bundle to “hydrate” the page (attach event listeners). This creates a frustrating “Uncanny Valley” where the page looks fully loaded, but buttons are unresponsive until the JavaScript finishes executing.
(Scenario: CTO worried about disrupting an active roadmap) Do we have to rewrite our entire SPA from scratch to get these benefits?
No, and you shouldn’t. A full rewrite freezes feature development for months and carries a high failure rate. Instead, use the Strangler Fig Pattern: migrate one low-risk, high-traffic route at a time (starting with settings pages or dashboards) to the new server-rendered stack, route traffic at the proxy layer, and measure Core Web Vitals before expanding. Most teams migrate their highest-traffic routes within a single quarter with zero downtime and a rollback path at every step.
(Scenario: SEO Manager asked to justify an architecture decision to leadership) What is INP, and why does it matter for choosing a web application architecture?
INP (Interaction to Next Paint) is one of Google’s three Core Web Vitals, replacing First Input Delay (FID) as the official responsiveness metric on March 12, 2024. Unlike FID, which only measured the delay before a page’s first click, INP measures responsiveness across every interaction during a user’s entire visit, with under 200 milliseconds considered “good.” Because Core Web Vitals are a confirmed factor in Google’s ranking algorithm, an architecture that struggles to keep INP low – typically JavaScript-heavy SPAs with large main-thread workloads – carries a direct, measurable SEO cost, not just a subjective UX complaint.
Suggested Posts
How useful was this post?
Share it with your friends
Get our latest articles here!
Do you have any questions?
Help us improve the content of this Insightful blog by asking us questions. Manifera's team of experts will help you answer these questions as soon as possible.








