browserslist/browserslist
51.6
Adequate · 1 October 2026
2.1k
lines of production code
JavaScript
primary language
2
measurements over time
What this system is
This system is a modernized browser compatibility query tool that resolves configuration and maps browser data using updated dependencies like caniuse-lite and baseline-browser-mapping. It features a modular architecture separating server-side logic from client-side stubs, with a formal EBNF grammar defining its query syntax. The project includes a comprehensive test suite migrated to Uvu, covering custom statistics, environment configs, and performance benchmarks for configuration resolution.
Architecture
Major architectural rewrite and dependency modernization
The project has been completely rewritten from the ground up, replacing the legacy implementation with a modern, modular architecture. The core logic now relies on \caniuse-lite\ instead of the outdated \caniuse-db\, and introduces new dependencies like \baseline-browser-mapping\ and \electron-to-chromium\. The codebase has been split into distinct modules (\node.js\, \browser.js\, \parse.js\, \cli.js\) to separate server-side and client-side concerns, with the latter providing stubs for unsupported features. Build tooling has been modernized by removing Gulp and Travis CI in favor of pnpm, ESLint, and Prettier, and a new EBNF grammar file (\grammar.w3c-ebnf\) has been added to formally define the query syntax.
(repo-wide) · high confidence
Test coverage
Added benchmark test fixtures; Added benchmark tests for browserslist config resolution; Added test fixtures for custom statistics, environment configs, and symlink support; Migrate test suite to Uvu.
Dependencies
Update project dependencies and lockfile
The project dependencies have been updated, including baseline-browser-mapping to 2.11.26, caniuse-lite to 1.0.30001813, electron-to-chromium to 1.5.439, node-releases to 2.0.57, and update-browserslist-db to 1.3.3. Development dependencies such as eslint (9.39.5), c8 (12.0.0), and uvu (0.5.6) have also been updated, and the pnpm-lock.yaml file has been regenerated to reflect these changes.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 55 → 52 (-2.9)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 46 → 46 (+0.1)
- Architecture 73 → 76 (+2.8)
- Maturity 55 → 55 (+0.1)
- Readiness 62 → 46 (-15.7)
- Security 87 → 89 (+1.9)
Resolved (4)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Hotspot: parse.js (parse.js)
- Repeated repair: index.js (index.js)
New (13)
- No direct assertions: allows arbitrary whitespaces (test/extends.test.js)
- No direct assertions: allows arbitrary whitespaces (test/since.test.js)
- No direct assertions: allows arbitrary whitespaces after negation (test/parse.test.js)
- No direct assertions: allows arbitrary whitespaces in config query (test/config-query.test.js)
- No direct assertions: does not add versions without usage data (test/cover.test.js)
- No direct assertions: does not add versions without usage data in a country (test/cover.test.js)
- No direct assertions: is case insensitive (test/country.test.js)
- No direct assertions: is case insensitive (test/custom.test.js)
- No direct assertions: is case insensitive (test/feature.test.js)
- No direct assertions: is case insensitive (test/shareable-stats.test.js)
- No direct assertions: parses case-insensitive negations (test/parse.test.js)
- No direct assertions: throws when extends package has backslash in path (test/extends.test.js)
- Outdated (npm): caniuse-lite
Changes since last survey
- 24 commits — 19 feature/other, 5 fixes
By area
- (root) — 16 commits
- (repo) — 7 commits
- test/parse.test.js — 1 commit
Notable commits
- fix: Fix case-insensitive negation queries
- fix: Fix config loading protection for Windows
- fix: Merge pull request #948 from jakezwang/fix-case-insensitive-not
- fix: Merge pull request #949 from wahidrizka/fix-case-insensitive-stats-supports
- fix: Merge pull request #952 from wahidrizka/fix-cover-null-usage
- change: Add missed changes to ChangeLog
- change: Allow arbitrary whitespaces in since, extends, config and not queries
- change: Combine negation case variants into one test
- change: Do not add versions without usage data to cover queries
- change: Make percentage and supports queries case-insensitive
- change: Merge pull request #950 from charmander/usage-filter-cleanup
- change: Merge pull request #951 from charmander/resolve-filter-cleanup
- change: Merge pull request #953 from wahidrizka/docs-android-latest-version
- change: Merge pull request #954 from abhu85/fix-since-extends-whitespace
- change: Note that Android version queries return only the latest version
- change: Release 4.29.1 version
- change: Release 4.29.2 version
- change: Release 4.29.3 version
- change: Update Firefox ESR
- change: Update dependencies
- …and 4 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
browserslist/browserslist was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 8219dd79df0315feaabba302077a66e236822a3a — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.