36 stable releases (3 major)
Uses new Rust 2024
| new 3.0.2 | Apr 5, 2026 |
|---|---|
| 3.0.1 | Mar 12, 2026 |
| 2.3.1 | Feb 24, 2026 |
| 2.1.5 | Dec 22, 2025 |
| 0.17.1 | Jun 17, 2024 |
#49 in Web programming
120,400 downloads per month
Used in 156 crates
(via oxc_compat)
195KB
4.5K
SLoC
oxc-browserslist
Rust port of Browserslist, forked from browserslist-rs.
The original crate did not meet the criteria of oxc, the following changes are made:
- reduced compilation speed from one minute to a few seconds
- improved some runtime performance, e.g. improve sort method, precompute versions
- removed all unnecessary, heavy or slow dependencies:
nom,time,ahash,chrono,either,indexmap,itertools,once_cell,string_cache,serde_json - reduced binary size through data compression and removal of config file support. 717K (this crate) vs 3.2M (original crate).
Usage
Limitation
The following features are not supported, to align with Vite:
- Config file loading (
.browserslistrc,package.jsonbrowserslistfield) - Environment variables (
BROWSERSLIST,BROWSERSLIST_CONFIG,BROWSERSLIST_ENV) extendsquery (e.g.extends browserslist-config-google)- Custom usage (
> 0.5% in my statsorcover 99.5% in my stats)
Example
Inspect query result by running the example:
cargo run --example inspect -- <query>
You can also specify additional options, for example:
cargo run --example inspect -- --mobile-to-desktop 'last 2 versions, not dead'
Testing
Unit and Integration Tests
cargo test
Property-Based Testing
Property-based tests generate random queries and compare results with the npm browserslist CLI.
# Install npm browserslist first
pnpm install
# Run property-based tests
cargo test --test proptest
Fuzzing
Fuzzing tests use libFuzzer to find edge cases.
# Install cargo-fuzz
cargo install cargo-fuzz
# Run the fuzzer
cd fuzz
cargo +nightly fuzz run fuzz_resolve
Sponsored By
Dependencies
~0.8–1.7MB
~33K SLoC