Engineering
Core Web Vitals Are a Team Sport
Earlier this year we inherited a marketing site with a Largest Contentful Paint of 4.1 seconds on mobile. Field data, not lab. By June it was at 1.8 seconds, comfortably green, and organic traffic to key landing pages was up meaningfully alongside it. I could write the standard checklist post about how we did it, but the checklist was not the interesting part.
The interesting part is that fewer than half of the fixes were engineering fixes. Core Web Vitals get framed as a developer problem, and that framing is why so many teams stall out. Performance is a supply chain, and engineers sit at the end of it.
Where the milliseconds actually came from
A rough accounting of our LCP improvement by discipline:
- Engineering, maybe 40 percent. Preloading the hero image, self-hosting fonts with
font-display: swap, deferring a third-party chat widget, and moving image optimization to the framework's pipeline instead of hand-exported assets. - Design, maybe 30 percent. The original hero was a full-bleed 2.4MB lifestyle photograph with text overlaid, which meant the LCP element was the heaviest possible asset. Design reworked the hero to lead with typography over a smaller, art-directed image. It looks better and it loads in half the time. Those two facts are related.
- Marketing and content, the rest. Four tag manager scripts nobody could name an owner for. A/B testing snippets from a tool the team had stopped using in 2021, still blocking render. An autoplay video on the pricing page that no stakeholder would defend once asked directly.
The single highest-leverage act of the whole engagement was a spreadsheet listing every third-party script, its weight, and a column titled "who asked for this?" Half the rows had no answer. We deleted them.
The practices that made it stick
Getting green is a project. Staying green is a system. What we left behind:
- Performance budgets in CI. The build fails if the JS bundle or the hero asset crosses a threshold. Not a warning, a failure. Warnings are decorative.
budgets:
- path: "/*"
resourceSizes:
- resourceType: script
budget: 170
- resourceType: image
budget: 300
- Field data on a dashboard people actually see. Lab scores are for debugging. CrUX field data is the truth, and it belongs next to the traffic numbers marketing reviews weekly, not buried in an engineering tool.
- A tax on new tags. Any new third-party script needs a named owner and a review date. Scripts, like meetings, should expire by default.
Why we hold the line on this
It is fashionable among engineers to be cynical about Core Web Vitals, to treat them as Google-appeasement theater. We do not share the cynicism. The metrics are imperfect proxies, but they proxy something real: whether a person on a mid-range phone on transit Wi-Fi can use the thing you built. That describes an enormous share of every client's actual audience and approximately zero percent of the people approving the designs.
The ranking incentive is just the lever that gets performance into the room. Once it is in the room, the argument stands on its own: faster sites convert better, read as more trustworthy, and respect the user's time and data plan. That last one is a craft value, not a metric. The metrics simply made it fundable.
Building something this could apply to?
We take on a small number of flagship projects each quarter.
Start a project