swc-project/swc · error

failed to parse browser version

Error message

failed to parse browser version

What it means

During browserslist resolution in preset_env_base, a version string within the query could not be parsed as a browser version. This fires when a browserslist query contains a malformed or non-numeric version token, so version parsing fails while building Targets from the query.

Source

Thrown at crates/preset_env_base/src/query.rs:88

                    mobile_to_desktop: true,
                    ignore_unknown_versions: true,
                    ..Default::default()
                },
            )
            .with_context(|| {
                format!(
                    "failed to resolve browserslist query: {:?}",
                    s.iter().map(|v| v.as_ref()).collect::<Vec<_>>()
                )
            })?;

            // Track if the browserslist query returned empty (unknown version).
            // When this happens, we should treat it as a recent browser version
            // that supports all features, not apply all transforms.
            let unknown_version = distribs.is_empty();

            let versions =
                BrowserData::parse_versions(distribs).expect("failed to parse browser version");

            Ok((Arc::new(versions), unknown_version))
        }

        static CACHE: Lazy<DashMap<Query, (Arc<Versions>, bool), FxBuildHasher>> =
            Lazy::new(Default::default);

        if let Some(v) = CACHE.get(self) {
            return Ok(v.clone());
        }

        let result = match *self {
            Query::Single(ref s) => {
                if s.is_empty() {
                    query(&["defaults"])
                } else {
                    query(&[s])
                }

View on GitHub (pinned to 5176682b65)

Solutions

  1. Check every version token in the browserslist query for valid numeric forms (e.g. 88, 88.1)
  2. Remove or correct entries with placeholder or accidental non-numeric versions
  3. Test the same query against the browserslist CLI to confirm which entry is invalid
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/preset_env_base/src/query.rs:88 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of swc-project/swc@5176682b65 (2026-08-17). Data as JSON: /api/errors/54d55b2e95e42842. Report an issue: GitHub.