Skip to content

refactor: Bump browserslist from 4.23.2 to 4.29.4 - #951

Merged
mtrezza merged 1 commit into
parse-community:masterfrom
mtrezza:refactor/browserslist-4.29.4
Oct 25, 2026
Merged

mtrezza merged 1 commit into
parse-community:masterfrom
mtrezza:refactor/browserslist-4.29.4

Conversation

@mtrezza

@mtrezza mtrezza commented Oct 25, 2026 •

Copy link
Copy Markdown
Member

Closes #939

Bumps the transitive dev dependency browserslist from 4.23.2 to 4.29.4. This fixes two high-severity advisories. Only package-lock.json changes.

Security

Dependabot alert Advisory Severity Vulnerable Patched Alert state
435 GHSA-73wf-gq98-2v4g (CVE-2026-73088): Uncaught crash / prototype write via untrusted browserslist-stats.json custom stats (normalizeStats) High <= 4.28.6 4.28.7 Open
434 GHSA-c83g-rgw3-j3cx (CVE-2026-73089): Unbounded memory growth (no cache eviction) via distinct query results, leading to eventual OOM High <= 4.28.6 4.28.7 Auto-dismissed

browserslist is a development-only dependency. npm ls browserslist --omit=dev returns nothing. The only path is nyc → istanbul-lib-instrument → @babel/core → @babel/helper-compilation-targets → browserslist.

Version

Dependabot targeted 4.28.9. npm update browserslist resolves 4.29.4, the current latest, within the ^4.23.1 range of @babel/helper-compilation-targets. 4.29.0 to 4.29.4 were released after Dependabot opened #939, so this PR uses 4.29.4 and the changelog below covers every version up to it.

Lock file changes

Package Before After
browserslist 4.23.2 4.29.4
baseline-browser-mapping (none) 2.11.32 (new dependency of browserslist since 4.26.0)
caniuse-lite 1.0.30001642 1.0.30001819
electron-to-chromium 1.4.827 1.5.464
node-releases 2.0.14 2.0.60
update-browserslist-db 1.1.0 1.3.4
escalade 3.1.2 3.2.0

Impact on this project

  • The repository has no Babel or Browserslist config: no .babelrc, babel.config.*, .browserslistrc or browserslist file, and no browserslist key in package.json.
  • No CI job runs Babel or Browserslist. Lint runs ESLint. Tests run tsx and Jasmine, with mongodb-runner in pretest/posttest. nyc is used only by the local coverage script.
  • When npm run coverage runs, istanbul-lib-instrument calls @babel/core with configFile: false, babelrc: false and no targets. @babel/helper-compilation-targets therefore only calls browserslist.loadConfig(). That finds no config, so no query is resolved and the targets are empty on both versions. Browserslist's outdated-data warning only fires when a query is resolved, so it does not appear either.
  • update-browserslist-db is a CLI (npx update-browserslist-db). Only browserslist's own CLI (cli.js) requires it. That CLI loads it on every run but calls it only for the deprecated --update-db flag. The browserslist library entry point does not load it, and nothing in this repository runs either CLI.
  • browserslist now loads baseline-browser-mapping along with itself. At load time, that package only defines its data and functions. Its functions, and their outdated-data warning, run only for Baseline queries, which this repository does not use.

Changes

browserslist

  • 4.23.3: Fixed >= query for ios.
  • 4.24.0: Added browserslist.findConfigFile() helper.
  • 4.24.1: Added months since last caniuse-lite update to the warning. The warning threshold also changed. It used to fire when the latest browser release in the data was more than 6 × 30 days old. It now fires when that release is 6 or more calendar months old (getMonthsPassed).
  • 4.24.2: Clarified the outdated caniuse-lite warning text.
  • 4.24.3: Updated Firefox ESR.
  • 4.24.4: Improved performance by using caching better.
    • The diff shows one behaviour change here. During config lookup, a package.json file is now JSON-parsed only if its text contains "browserslist" (or the misspelled "browserlist"). Before, every package.json on the way up was parsed, and an unparsable one logged [Browserslist] Could not parse <file>. Ignoring it.
  • 4.24.5: Fixed support for ESM shared config. Docs fixes.
  • 4.25.0: Added cover 95% in browserslist-config-mycompany stats query support.
  • 4.25.1: Updated Firefox ESR.
  • 4.25.2: Fixed Node.js --permission support.
  • 4.25.3: Fixed ReDoS.
  • 4.25.4: Fixed Windows support for custom stats.
  • 4.26.0: Added Baseline queries, which adds the baseline-browser-mapping dependency.
  • 4.26.1: Updated Firefox ESR.
  • 4.26.2: Fixed baseline-browser-mapping version requirement.
  • 4.26.3: Fixed throwOnMissing with extends query.
  • 4.27.0: Added BROWSERSLIST_TRACE_WARNING environment variable.
  • 4.28.0: Added firefox >= esr query support. Docs fixes. (The upstream changelog heading for this release reads "4.48.0".)
  • 4.28.1: Removed the Baseline warning, since baseline-browser-mapping has its own.
  • 4.28.2: Fixed prototype pollution.
  • 4.28.3: Fixed Baseline query case-insensitivity.
  • 4.28.4: Fixed SyntaxError regression of 4.28.3.
  • 4.28.5: Fixed > and >= queries.
  • 4.28.6: Fixed Electron version queries.
  • 4.28.7: Improved parsing performance. Fixed unbounded memory growth (GHSA-c83g-rgw3-j3cx). Fixed prototype write issue (GHSA-73wf-gq98-2v4g).
  • 4.28.8: Fixed including kaios in Baseline queries.
  • 4.28.9: Improved or parsing performance.
  • 4.29.0: Added query continuations across lines and array entries.
  • 4.29.1: Fixed config name loading protection on Windows. Fixed case-insensitive negation queries. Fixed case-insensitive percentage and supports queries. Fixed old Node.js tests. Reduced code.
  • 4.29.2: Fixed ignoring null usage in cover X in Y query.
  • 4.29.3: Updated Firefox ESR.
  • 4.29.4: Fixed joined version bounds in version ray and range queries. Fixed whitespace processing.
  • Taken together, the "Updated Firefox ESR" entries change firefox esr, which is also part of defaults, from Firefox 115 and 128 to Firefox 153.

update-browserslist-db (CLI only)

  • 1.1.1: Fixed types.
  • 1.1.2: Less aggressive message on browsers diff error.
  • 1.1.3: Fixed Bun support.
  • 1.1.4: Fixed package.json changes on pnpm update.
  • 1.2.0: Also updates Baseline data (baseline-browser-mapping).
  • 1.2.1: Fixed ERR_PNPM_NO_PACKAGE_IN_DEPENDENCIES error on pnpm.
  • 1.2.2: Fixed update on depth in pnpm config.
  • 1.2.3: Fixed Bun support.
  • 1.3.0: Added Deno support.
  • 1.3.1: Fixed Bun support.
  • 1.3.2: Fixed --version output, npm version detection, Bun support, Deno support on new Deno versions, the error message on a missing package manager, and pnpm 12 support.
  • 1.3.3: Fixed pnpm minimumReleaseAge compatibility.
  • 1.3.4: Fixed new pnpm minimumReleaseAge compatibility issue. Fixed Windows support.

escalade

  • 3.2.0: Declared separate ESM and CommonJS TypeScript definitions. No runtime change.

Data packages: caniuse-lite, electron-to-chromium and node-releases contain browser, Electron and Node.js release data only. node-releases 2.0.60 declares engines.node >=18. Every moved package's engines is compatible with this project's engines.node and with Node 22 in CI.

Breaking Changes

None

Code Changes Required

None. The upgrade is a drop-in replacement.

Summary by CodeRabbit

  • Chores
    • Updated browser compatibility data and related dependency versions.

@parse-github-assistant

Copy link
Copy Markdown

🚀 Thanks for opening this pull request! We appreciate your effort in improving the project. Please let us know once your pull request is ready for review.

Tip

  • Keep pull requests small. Large PRs will be rejected. Break complex features into smaller, incremental PRs.
  • Use Test Driven Development. Write failing tests before implementing functionality. Ensure tests pass.
  • Group code into logical blocks. Add a short comment before each block to explain its purpose.
  • We offer conceptual guidance. Coding is up to you. PRs must be merge-ready for human review.
  • Our review focuses on concept, not quality. PRs with code issues will be rejected. Use an AI agent.
  • Human review time is precious. Avoid review ping-pong. Inspect and test your AI-generated code.

Note

Please respond to review comments from AI agents just like you would to comments from a human reviewer. Let the reviewer resolve their own comments, unless they have reviewed and accepted your commit, or agreed with your explanation for why the feedback was incorrect.

Caution

Pull requests must be written using an AI agent with human supervision. Pull requests written entirely by a human will likely be rejected, because of lower code quality, higher review effort and the higher risk of introducing bugs. Please note that AI review comments on this pull request alone do not satisfy this requirement. Our CI and AI review are safeguards, not development tools. If many issues are flagged, rethink your development approach. Invest more effort in planning and design rather than using review cycles to fix low-quality code.

@coderabbitai

coderabbitai Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: c682928a-e9b1-4e27-90fd-52478e1a3a62
Commits

Reviewing files that changed from the base of the PR and between 8905582 and 5abfb15.

Files selected for processing: 1
  • package-lock.json

Included review availability: This review used your included allowance. Your plan provides up to 5 included reviews per hour; 3 remain after this review.

Walkthrough

The lockfile adds baseline-browser-mapping and updates locked versions, metadata, and dependency ranges for Browserslist and related browser-data packages. It records these changes in both dependency sections.

Changes: Browser data dependency locks

Layer / File(s) Summary
Update browser data dependency locks
package-lock.json
The lockfile adds baseline-browser-mapping and updates the locked versions and dependency ranges for browserslist, caniuse-lite, electron-to-chromium, escalade, node-releases, and update-browserslist-db. It records the updates in both dependency sections.

Priority: Low

Estimated code review effort: 2 (Simple) | ~8 minutes

Merge Risk: Minimal · up to 5abfb

No concrete merge-blocking risk remains.

Pre-merge checks: Passed 7
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title begins with the allowed prefix "refactor:" and uses a capitalized first word. It accurately describes the browserslist dependency update in the lockfile.
Linked Issues check Passed Direct issue [#939] requires upgrading browserslist from 4.23.2 to 4.28.9. The whole-PR diff updates package-lock.json to browserslist 4.29.4 and includes the required 4.28.7 security fixes. The…
Out of Scope Changes check Passed The whole-PR diff changes only package-lock.json. The added baseline-browser-mapping entry and updates to caniuse-lite, electron-to-chromium, node-releases, update-browserslist-db, `escala…
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Security Check Passed PASS: The pull request changes only package-lock.json; it introduces no executable application code or security-sensitive patterns. The lockfile upgrades browserslist from 4.23.2 to 4.29.4 and kee…
Engage In Review Feedback Passed No review feedback required engagement. The supplied review context reports no CodeRabbit review threads and zero actionable findings in the current review.
Full details: Linked Issues check

Explanation

Direct issue [#939] requires upgrading browserslist from 4.23.2 to 4.28.9. The whole-PR diff updates package-lock.json to browserslist 4.29.4 and includes the required 4.28.7 security fixes. The related dependency updates support this lockfile resolution. No source-code or test changes are required by the issue.

Full details: Out of Scope Changes check

Explanation

The whole-PR diff changes only package-lock.json. The added baseline-browser-mapping entry and updates to caniuse-lite, electron-to-chromium, node-releases, update-browserslist-db, escalade, and picocolors support the browserslist dependency update. No unrelated implementation or test changes are present.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

Full details: Security Check

Explanation

PASS: The pull request changes only package-lock.json; it introduces no executable application code or security-sensitive patterns. The lockfile upgrades browserslist from 4.23.2 to 4.29.4 and keeps it marked dev: true, together with its related development dependencies. The repository manifest shows the package is reached through the nyc coverage development tool, while production dependencies remain unchanged. The updated version is above the supplied advisory fixed version 4.28.7.

Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@mtrezza
mtrezza merged commit 3f95687 into parse-community:master Oct 25, 2026
4 checks passed
@mtrezza
mtrezza deleted the refactor/browserslist-4.29.4 branch October 25, 2026 06:40
@parseplatformorg

Copy link
Copy Markdown

🎉 This change has been released in version 3.1.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants