Back to blog
Performance · 7 min read

Core Web Vitals: how we hit 95+ on every build

Performance isn't an afterthought you bolt on at the end. It's a series of small, deliberate decisions made from the first commit.

Largest Contentful Paint

LCP is usually a hero image or headline. We serve images in modern formats like WebP and AVIF, size them correctly, and preload the critical one. Fonts are self-hosted and preloaded with font-display: swap so text never blocks rendering.

Cumulative Layout Shift

Layout shift comes from elements that load without reserved space. We set explicit width and height on every image and embed, reserve space for dynamic content, and avoid injecting banners above existing content. The result is a page that stays put as it loads.

Interaction to Next Paint

INP rewards lean JavaScript. By shipping minimal JS and deferring non-critical scripts, the main thread stays free to respond to taps and clicks instantly. Less code isn't just faster to download — it's faster to run.

Measure on real devices

Lab scores are a starting point, not the finish line. We test on mid-range phones over throttled networks, because that's what a real visitor uses. Field data from the Chrome User Experience Report tells us how the site actually performs in the wild, not just in a perfect lab on fast fibre.

Performance as a budget

We treat performance like a budget you can overspend. Every new script, font, or third-party tag has a cost, and we weigh it against the value it adds. Saying no to a bloated analytics suite or an unnecessary chat widget is often the highest-impact decision on the whole project.

Have a project in mind?

Let's build something fast, beautiful, and built to convert.

Start a project