Every site we ship has to pass Core Web Vitals on a mid-range Android over 4G, not on a developer's laptop. The checklist below is what stands between a fast launch and a three-month performance retrofit.
01
Images: the usual culprit behind poor LCP
Hero images get explicit width and height, modern formats, responsive srcsets and a preload hint. Everything below the fold is lazy-loaded. A single unoptimised 2MB banner is the most common reason an otherwise fast site fails.
02
Fonts and layout stability
Self-host critical fonts, subset them, and use font-display: swap with a metric-matched fallback so text does not reflow. Reserve space for ads, embeds and cookie banners — unreserved late-loading elements are the main source of CLS.
03
Script discipline
Third-party tags are audited one by one against business value. Anything non-critical loads after interaction or moves server-side via a tag manager container. Interaction to Next Paint improves the moment you stop shipping unused JavaScript.
04
Hosting, caching and monitoring
Edge caching, HTTP/3, compressed assets and a CDN close to the audience. After launch we watch field data in Search Console, not just lab scores, and set alerts for regressions after any content release.
