Skip to content
CAI
Software that uses CAICheck a score

browserslist/browserslist

51.6

Adequate · 1 October 2026

2.1k

lines of production code

JavaScript

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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.