Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Set performance budgets from the user journeys your product must protect, enforce them against repeatable builds in continuous integration (CI), and check them against real-user field data. A budget is a regression guardrail—not a score to chase. As MDN puts it, “A performance budget is a limit to prevent regressions.”

Choose what the budget should protect

Start with a small number of important routes and the tasks people perform there. Decide what a good experience means for each one: important content appears promptly, a key interaction responds, the layout stays stable, or the amount of code and media remains bounded.

Budgets can constrain elapsed time, resource size, resource count, custom metrics, or rules; they can also apply over a defined period. Choose limits that catch meaningful regressions for your product rather than copying another site’s numbers. MDN describes the purpose and forms of performance budgets in its performance budget guide.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Establish a baseline before setting limits

Measure representative routes under production-like conditions before choosing thresholds. Record the build, browser, route, device emulation, and network and CPU settings alongside each result. Without a reproducible setup, a CI failure may reflect measurement noise rather than a product change.

#1 Best Overall

Use the baseline and the intended user outcome to set initial limits. Combine resource budgets with user-centered measures: asset sizes help identify what grew, while loading or responsiveness measures show whether the experience changed. Google’s introductory guidance recommends starting with asset sizes and tracking First Contentful Paint (FCP) and Time to Interactive (TTI) as soon as possible. Its examples of TTI under 5 seconds and critical-path resources under 170 KB date to 2017 and were based on baseline devices and 3G; treat them as historical illustrations, not current universal targets. See Google’s performance budgets introduction.

Make each limit actionable: a change author should be able to tell what failed and whether the cause was, for example, JavaScript growth, excess requests, or a slower interaction. A resource summary can help locate the source by grouping requests and transfer sizes by type; see Chrome for Developers’ resource summary guidance.

Configure Lighthouse CI budgets and assertions

Lighthouse CI can collect measurements for selected routes and check them with assertions or a budget file. Configure it around routes that represent critical journeys, then begin with warning-level assertions while you learn the baseline. Once the setup is stable and each threshold has an owner, make appropriate failures block the change. The Lighthouse CI configuration documentation covers collection, assertions, budget files, and repeated runs.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Budget-file and assertion size values use different units. In a budget.json file, file-size budgets are expressed in kilobytes; Lighthouse CI style assertion maxNumericValue values for size are in bytes. Make units explicit when defining limits so a threshold is not off by a factor of 1,000. Lighthouse CI also documents assertions in the form resource-summary:<resourceType>:(size|count).

Lighthouse budget files can set timing, resource-size, and request-count ceilings and scope budgets to paths. Exact supported metric names and behavior can depend on the Lighthouse version in use; check the documentation for that installed version. The available budget format is described in the Lighthouse performance budgets documentation.

Repeated collection runs reduce reliance on one noisy sample. Lighthouse CI shows five runs as an example, not a requirement for every project. Choose a run count that balances CI time with the variability you observe, and keep the browser and test environment as consistent as practical. When a limit fails, inspect the build and resource changes before raising the ceiling.

Use field data to check the client experience

CI measures a configured scenario; field data reflects actual visits across devices, connections, routes, and interactions. Use both: CI provides a repeatable regression check, while field data shows how experiences are distributed among real users. A passing CI run does not establish that every client has a good experience, and field data does not replace fast feedback on code changes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Google’s current Core Web Vitals “good” thresholds are:

  • Largest Contentful Paint (LCP): 2.5 seconds or less.
  • Interaction to Next Paint (INP): 200 milliseconds or less.
  • Cumulative Layout Shift (CLS): 0.1 or less.

These are reference thresholds for user experience, not a complete budget for every product. Assess them at the 75th percentile of page loads, split by mobile and desktop, as described in Google’s Core Web Vitals guidance and threshold methodology. Compare the same route and user segment over time, and report percentiles or distributions rather than relying on averages, which can conceal a poor experience for a meaningful segment.

If field data worsens while CI remains green, investigate the gap rather than treating either result as definitive. Differences in device capability, connection quality, interactions, route coverage, third-party activity, caching, or server response may matter. LCP in particular can be affected by connection setup, redirects, time spent unloading a previous page, and server response. Google explains the distinction and contributing factors in its lab and field data guidance and LCP optimization guidance.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Keep limits useful as the product changes

Assign an owner and a review point to each threshold. Revisit budgets when features, traffic, or the user population change, and when measurement practices evolve. If a limit is missed, decide explicitly whether to fix the regression, accept a documented trade-off, or adjust the budget based on evidence. Record the reason for a change so a temporary exception does not quietly become the new baseline.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How CI budgets and field measurements complement each other

Dimension CI lab budget Client field measurement
Main use Catch regressions during development and release Check the distribution of real user experiences
Strength Repeatable conditions and a clear build gate Includes actual devices, connections, routes, and interactions
Limitation Represents configured test conditions, not every client Varies with traffic composition and needs enough data
Useful comparison Build to build on the same route and setup Percentile by route and device segment over time

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.