It isn’t the framework

Framework choice is the most argued-about and least decisive factor in site speed. Fast and slow sites exist on every stack. What separates them is a short list of decisions about what gets sent to the browser and when.

1. How much JavaScript ships

The dominant cost on most slow sites is JavaScript that must be downloaded, parsed, and executed before anything is usable. Marketing pages are documents; the closer yours stays to that, the faster it is. Interactivity should be added where it earns its place, not applied to the whole page by default.

2. Whether the HTML arrives complete

Server-rendered or prerendered HTML lets the browser paint content in the first response. Client-rendered pages spend their first second downloading the machinery required to decide what to show. This one decision usually moves the largest contentful paint more than every other optimisation combined.

The fastest possible request is one that returns finished HTML. Everything else is recovering from not doing that.

3. Images, sized once and served static

Oversized images are the second-biggest payload problem, and on-the-fly transformation services swap a size problem for a latency and cost problem. Resize to the handful of widths your layout actually uses, store the derivatives, and serve them statically.

Every image also needs explicit dimensions, or the page reflows as they arrive — which users experience as slowness even when the numbers look fine.

4. Fonts, self-hosted and preloaded

Web fonts fetched from a third-party host add a DNS lookup, a connection, and a stylesheet to your critical path. Self-host them, subset to the characters you use, and preload the ones the first screen needs. Font loading is also the most common cause of visible text reflow.

5. Third-party scripts, counted honestly

Analytics, chat widgets, tag managers, heatmaps, and pixels are each defended individually and are collectively the reason many sites are slow. Every one runs on your users’ devices and none of them are in your performance budget unless you put them there.

Audit them annually. There is nearly always a script still loading for a campaign that ended two years ago.