Performance is the most consistently undervalued part of design. A site can look beautiful in screenshots and still feel terrible in the hand. Every second of load time, every dropped frame, every layout shift — the user feels all of it, even if they never articulate why they bounced.
Ship less, render less
The single biggest performance win is shipping less JavaScript. Modern frameworks make it easy to pick only the interactive bits that need to hydrate and let the rest render as plain HTML. Pair that with route-level code splitting and the bundle gets embarrassingly small before you have even started to optimise.
After that, the next biggest win is rendering less. Virtualise long lists, defer off-screen images, and resist the urge to animate everything. The fastest component is the one you did not mount.
Images, still the hardest part
Images remain the biggest source of payload on most marketing sites. Modern formats like AVIF and WebP, responsive srcsets, and honest sizing attributes are the boring basics that still get skipped. A single hero image delivered at 4x the size the viewport needs can undo every other optimisation in the pipeline.
We treat image budgets as a non-negotiable part of the design spec. If a hero needs a photograph, the budget is set before the asset is chosen — not after.
Measure what users feel
Core Web Vitals are a useful proxy, but they are a proxy. The real question is whether the page feels instant, whether the primary action is always reachable, and whether interactions respond within the frame budget. We instrument real-user metrics on every production site and treat regressions the same way we treat visual bugs — something to fix, not something to explain away.


