Completed Performance Budget Example
Scenario
This example budget is for a performance-critical paid acquisition funnel with a static content shell, selectively hydrated form island, analytics, experimentation, and mobile-heavy traffic.
Route budget
| Signal | Target | Warning | Block launch | Owner |
|---|---|---|---|---|
| p75 mobile LCP | <= 2.5s | > 2.5s | > 3.0s | frontend platform |
| p75 mobile INP on form | <= 200ms | > 200ms | > 300ms | funnel team |
| p75 CLS | <= 0.1 | > 0.1 | > 0.15 | design system |
| Initial JS gzip | <= 120 KB | > 120 KB | > 160 KB | frontend platform |
| Initial CSS gzip | <= 35 KB | > 35 KB | > 50 KB | design system |
| Hero image transfer | <= 120 KB | > 120 KB | > 180 KB | content/platform |
| Third-party blocking time | <= 50 ms | > 50 ms | > 100 ms | growth/platform |
Request budget
| Request class | Budget | Rule |
|---|---|---|
| HTML | 1 | must include useful content shell |
| Critical CSS | 1 | inline only if measured and small |
| Critical font | 0-1 | use fallback strategy and avoid layout shift |
| Hero image | 1 | preload only if it is the real LCP candidate |
| Initial JavaScript | 1-2 chunks | form island and required analytics only |
| Third-party scripts | explicit register | no owner means no launch |
Third-party register
| Script | Purpose | Load strategy | Owner | Kill switch |
|---|---|---|---|---|
| analytics core | conversion attribution | after shell, before submit event | growth platform | config flag |
| experiment client | assignment confirmation | edge-first; client only records exposure | experimentation | edge fallback |
| chat widget | optional support | after interaction or idle | support | tag manager block |
Measurement plan
- Use field data as release baseline: p75 by route, campaign, device class, network class, release, and variant.
- Use lab traces to diagnose before launch: waterfall, main thread, layout shifts, and third-party long tasks.
- Compare old and new variants with the same campaign mix when possible.
- Treat conversion increases as invalid if they come with severe performance regressions on core cohorts.
Exception policy
An exception requires:
- named owner
- user/business reason
- affected route and cohort
- expiration date
- mitigation plan
- monitoring signal
Permanent exceptions are not allowed. If a budget is repeatedly wrong, change the budget through ADR rather than ignoring it.
Review questions
- Is the LCP element stable and intentional?
- Are dimensions reserved for all above-the-fold media and injected content?
- Can the form submit when optional scripts fail?
- Does every third-party script have a business owner and disable path?
- Are budget checks tied to release decisions?