A performance budget tool for JavaScript that calculates the real cost of your JS and enforces limits on CI.
Size Limit is a performance budget tool for JavaScript that calculates the real-world cost of your JavaScript bundles. It helps developers enforce size and execution time limits on their code, preventing performance regressions by integrating checks into continuous integration pipelines. The tool provides actionable metrics, including download and execution time, to keep applications fast for end-users.
JavaScript developers and teams building web applications, libraries, or npm packages who need to maintain performance budgets and prevent bundle bloat. It's especially useful for projects with strict performance requirements or those published to npm.
Developers choose Size Limit because it offers accurate, time-based performance metrics beyond simple bundle size, integrates seamlessly into CI/CD workflows, and provides modular plugins to fit various project types—from large applications to small libraries.
Calculate the real cost to run your JS app or lib to keep good performance. Show error in pull request if the cost exceeds the limit.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Calculates real browser download and execution times, simulating low-end devices for more accurate user experience insights than raw bundle size, as highlighted in the README's focus on time over bytes.
Integrates with GitHub Actions, Circle CI, and others to automatically check pull requests and post bundle size changes as comments, preventing regressions effectively.
Offers plugins and presets for different project types, from small libraries to large applications, allowing tailored setups without unnecessary overhead.
Includes all dependencies and polyfills in calculations and provides a --why flag with Statoscope for detailed bundle breakdowns, helping identify bloat.
Execution time calculations can vary due to resource availability, as the README admits measurements might be unstable, leading to noisy results in CI environments.
Advanced setups, especially with TypeScript config files, require additional dependencies like jiti and careful tuning, which can be a barrier for quick adoption.
Primarily designed for JS bundles; handling CSS or other assets requires extra plugins and can introduce measurement inaccuracies if not configured properly, as noted in the config warnings.