A look back, written in 2026. By 2019 the default answer to “build us a website” in a lot of agencies had become a single-page app: one HTML shell, a large JavaScript bundle, and every page drawn in the browser.
Why it happened
The tools made it easy. A starter kit gave you routing, components and a dev server in one command, and the result felt fast once it had loaded — clicking between pages with no full reload is genuinely pleasant.
It also suited how teams were organised. Front-end developers could own the whole experience and talk to an API, without touching the server. For products with logged-in users, that division still makes sense.
What it cost a marketing site
The first load. A visitor from a search result wants one page, once, on a phone. An SPA asks them to download and run the code for the whole site before showing the first paragraph. On a mid-range phone that difference is seconds, and seconds are where enquiries go.
Search was the other worry. Googlebot has rendered JavaScript for years, and in May 2019 Google announced it would run an evergreen, up-to-date version of Chromium. But rendering is a second pass that can lag behind crawling, other crawlers and link previews often do not run scripts at all, and small mistakes — a route that only works after a click, a title set too late — quietly leave pages out.
A good test for any page: turn JavaScript off and load it. If the words a customer searches for are not there, you are relying on something else to put them there before anyone can find you.
What I saw in client work
Sites rebuilt as SPAs that were slower than the WordPress sites they replaced. Contact forms that broke in older browsers nobody had tested. Analytics that counted one page view per visit because nobody had wired route changes up. None of these are flaws of the approach — they are what happens when an application architecture is used for a document.
Where it landed
The frameworks moved back towards the server: render the page as HTML first, then add interactivity where it earns its place. That is the model most serious tools use now, and it is roughly what a well-built site did before the detour.
My rule today is the one I would have given in 2019 with hindsight. If the page is mostly reading — a service, an article, a case study — send HTML. If it is mostly doing — a dashboard, an editor, a booking flow — an app is fine, behind the login where search does not matter.




