Skip to content

chore(deps): update repo tooling to jest 30, pnpm 12, and async-storage 3 - #191

Merged
simonvanlierde merged 2 commits into
mainfrom
chore/deps-major-repo-tooling
Sep 7, 2026
Merged

chore(deps): update repo tooling to jest 30, pnpm 12, and async-storage 3#191
simonvanlierde merged 2 commits into
mainfrom
chore/deps-major-repo-tooling

Conversation

@simonvanlierde

Copy link
Copy Markdown
Contributor

Takes the part of #189 that actually works, and pins the parts that don't so Renovate stops proposing them.

Landed

Major Notes
jest 30 + @types/jest 30 + @jest/globals 30 stricter toHaveBeenCalledWith typing found several test mocks whose declared signature did not match the real function
pnpm 12 two new build-script approvals decided (both declined); lockfile is now two YAML documents
@react-native-async-storage/async-storage 3 multiRemoveremoveMany; jest mock moved to the /jest entry point
linkinator 8 docs link check verified identical: 46 links on both 7 and 8 against the same build

Held back, with Renovate rules

TypeScript 7 breaks astro check in docs/ and www/:

The TypeScript module loaded (found 7.0.2) does not expose the programmatic API that astro check relies on.

Gated as allowedVersions: "!/^7\.0\./" rather than <7, so 7.1 still arrives as a PR and docs/www typecheck answers whether the API is back. The TS team calls this point-in-time but has named no version (withastro/roadmap#1321).

Babel 8 is rejected outright by react-native-worklets' babel plugin, which hard-requires ^7.0.0-0. Every app suite touching a worklet failed to transform (221/221 suites red). Gated at <8 until the Expo/RN toolchain moves.

Deferred

@testing-library/react-native 14 made render and renderHook async — 489 call sites across 90 files need await. It alone accounted for 418 of the 480 initial type errors. It deserves its own branch where a missed await is attributable.

Also in here

A review of the hand-maintained dependency policy against the resolved tree:

  • the shell-quote advisory id was mangled to GHSA-wpn peer7jw-789q-3m8p; the real one is GHSA-w7jw-789q-3m8p (range >=1.1.0, <=1.8.3, matching the override key)
  • image-size is no longer in the tree, so its two GHSAs were waiving nothing in both pnpm-workspace.yaml and ci.yml. just audit now reports 1 ignored finding instead of 3
  • the dompurify@3.4.13 release-age exclusion was superseded by the override pinning 3.4.14
  • the lightningcss pin cites NativeWind, which the Uniwind migration removed — but it still earns its place: without it the tree resolves 1.30.1, 1.32.0 and 1.33.0 side by side. Comment corrected, pin kept
  • check-yaml now skips pnpm-lock.yaml, which pnpm 12 writes as two documents

Verified locally

  • just check, just pre-commit, just audit — pass
  • just test — pass (root 43 + 105 policy checks, backend 1812, www 11, docs 161, app 1818 — same app count as main)
  • docs build + test:links — pass

…ge 3

Takes the non-blocked half of #189. Babel 8 and TypeScript 7 are held back by
upstream and pinned in the Renovate config rather than carried here.

- rename AsyncStorage `multiRemove` to v3's `removeMany`, and point the jest
  setup at the mock's new `/jest` entry point
- wrap the shipped AsyncStorage mock in jest spies: v3 ships plain functions,
  and tests assert on the calls
- clear the mock through the instance, not `clearAllMockStorages()`, which
  empties the registry and leaves the handed-out instance holding its data
- type the test mocks that jest 30 now checks against their real signatures
- restore node types to the app tsconfig, dropped when @types/jest stopped
  pulling them in
- decide the two build scripts pnpm 12 asks about, both declined
- exclude the lockfile from check-yaml: pnpm 12 writes it as two documents
- hold @babel/core and typescript below the versions their toolchains reject
Reviewed the hand-maintained dependency policy against the resolved tree.

- correct the shell-quote advisory id, which had been mangled to
  `GHSA-wpn peer7jw-789q-3m8p`, to GHSA-w7jw-789q-3m8p
- drop the two image-size advisories from ignoreGhsas and from ci.yml's
  allow-ghsas: the package is no longer in the tree, so both entries were
  waiving nothing. `just audit` now reports 1 ignored finding, not 3
- drop the dompurify@3.4.13 release-age exclusion, superseded by the
  override pinning 3.4.14
- restate why lightningcss is pinned: the NativeWind reason is gone with the
  Uniwind migration, but removing it resolves three copies side by side
@simonvanlierde
simonvanlierde merged commit 441a49b into main Sep 7, 2026
24 checks passed
@simonvanlierde
simonvanlierde deleted the chore/deps-major-repo-tooling branch September 7, 2026 06:02
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.

1 participant