fix(deps): resolve all fixable pnpm audit advisories - #79
Conversation
pnpm audit reported 56 advisories (1 critical, 40 high, 14 moderate, 1 low), all of them in transitive dev/tooling dependencies. - Bump vitest and @vitest/coverage-v8 to 4.1.11 (GHSA-82fw-gwwq-j7x9, path traversal in @vitest/mocker). - Add pnpm overrides pinning the remaining transitive packages to patched versions: @xmldom/xmldom, baseline-browser-mapping, brace-expansion (1.x and 5.x), browserslist, js-yaml (3.x and 4.x), nanoid, postcss, shell-quote, uuid, ws (7.x and 8.x). Re-resolving the tree also drops the unused esbuild 0.27.3 optional peer of vite (GHSA-g7r4-m6w7-qqqr), which nothing in the workspace requires. Remaining after this change: two image-size advisories (GHSA-w3rx-r6r6-pgpr, GHSA-5p2g-fcmc-qvqq) that have no patched release upstream. It is a metro/expo dependency of the playground app only and is never part of the published SDK. Verified with pnpm lint, pnpm check-types, pnpm test, pnpm build and pnpm test:coverage. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0199vMNGkiRE4yFkvs2sGENL
|
|
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. WalkthroughThe pnpm overrides in Priority: ⬇️ Low Merge Risk: ⚪ Minimal · up to No current dependency compatibility failure was identified; the change is ready to merge after normal checks. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |



Summary
pnpm auditonmainreported 56 advisories (1 critical, 40 high, 14 moderate, 1 low). All of them were in transitive dev/tooling dependencies — nothing in the published SDK's runtime dependencies (@react-native-community/netinfo,zod).After this change: 0 fixable advisories remain (see the one caveat below).
Changes
Direct dependency bump (
packages/react-native/package.json)vitestand@vitest/coverage-v84.1.2→4.1.11— fixes GHSA-82fw-gwwq-j7x9 (path traversal / arbitrary file read via@vitest/mockerredirect mock).New
pnpm.overridesentries (rootpackage.json) — everything else is transitive throughexpo,react-native,metro,rimrafandvite, so overrides are the only lever. All pins are exact, asscripts/check-exact-deps.mjsrequires. Where a package appears in two major lines, both are pinned with a range selector.@xmldom/xmldomshell-quotepostcssjs-yamlbrace-expansionwsnanoidbrowserslistbaseline-browser-mappinguuidTwo notes on the resolution:
uuid7 → 11 is a major bump. Its only consumer isxcode(via@expo/config-plugins), which uses exactly one API,uuid.v4()— still a named CJS export in v11. Verified it resolves and returns a valid v4 UUID under the override.esbuild0.27.3 disappears from the lockfile (GHSA-g7r4-m6w7-qqqr). It was only ever present as an optional peer ofvite8, which builds on rolldown and does not need it; nothing in the workspace depends on it. Re-resolving drops it along with its 26@esbuild/*platform packages, which is most of the lockfile's line-count reduction.vite buildandvitestboth run fine without it.Not fixed:
image-sizeTwo high advisories remain, both against
image-size≤ 2.0.2 — infinite loops in the ICNS (GHSA-w3rx-r6r6-pgpr) and JXL/HEIF (GHSA-5p2g-fcmc-qvqq) parsers. There is no patched release upstream — the advisories list no fixed version and 2.0.2 is the latest published. It reaches us viaexpo > @expo/metro > metro, so it only ever runs in the playground's dev bundler and is never part of the published SDK. Nothing to do until metro or image-size ships a fix. Happy to add apnpm.auditConfig.ignoreGhsasentry for these two if you'd preferpnpm auditto exit clean.Test plan
All run locally on this branch:
pnpm install --frozen-lockfile— lockfile is in syncpnpm lint— exact-deps check + Biome, cleanpnpm check-types— clean across both workspacespnpm test— 20 files, 195 tests passingpnpm test:coverage— passingpnpm build— SDK build +expo exportfor the playground both succeedpnpm audit— 56 → 2 advisories, both the unfixableimage-sizeones🤖 Generated with Claude Code
https://claude.ai/code/session_0199vMNGkiRE4yFkvs2sGENL
Generated by Claude Code