Every site we inherit was fast once. The decay is never a single decision — it is a chat widget in March, a heat-mapping script in June, three font weights nobody uses, and a hero video someone exported at 40 megabytes.
A performance budget only works if it is enforced by something other than goodwill.
Enforcement, not aspiration
We wire budgets into CI. A pull request that pushes the JavaScript bundle past its ceiling fails before review. Lighthouse runs on every preview deployment, and the numbers are posted to the PR where the person who caused the regression can see them.
Third-party scripts get a separate allowance and a named owner. If nobody will own it, it does not ship.
The numbers we hold to
Largest Contentful Paint under 2.5 seconds at the 75th percentile on 4G. Cumulative Layout Shift under 0.1, which in practice means every image, embed and font has reserved space. Interaction to Next Paint under 200 milliseconds.
These are not stretch goals. They are the definition of done.
Written by the Astral Turbines team.
Talk to us about this