Context
Yarn 1 (Classic) has been in maintenance mode since 2020 and we've been hitting issues caused by its aging dependency resolution.
Most recently, during the JS SDK bump to 10.60.0 (#1303), Yarn 1 generated a corrupt yarn.lock entry for micromatch@4.0.8 — omitting its braces and picomatch dependencies entirely. This caused CI to fail with Cannot find module 'braces' and required manually patching the lockfile plus adding a braces resolution workaround in package.json.
Proposal
Migrate to Yarn 3+ (Berry) using nodeLinker: node-modules mode for maximum compatibility. This would give us:
- Reliable lockfile generation and dependency hoisting
- Better performance and caching
- Active maintenance and security updates
- Stricter dependency resolution that catches issues like the above at install time
Scope
Context
Yarn 1 (Classic) has been in maintenance mode since 2020 and we've been hitting issues caused by its aging dependency resolution.
Most recently, during the JS SDK bump to 10.60.0 (#1303), Yarn 1 generated a corrupt
yarn.lockentry formicromatch@4.0.8— omitting itsbracesandpicomatchdependencies entirely. This caused CI to fail withCannot find module 'braces'and required manually patching the lockfile plus adding abracesresolution workaround inpackage.json.Proposal
Migrate to Yarn 3+ (Berry) using
nodeLinker: node-modulesmode for maximum compatibility. This would give us:Scope
corepack enable && yarn set version stable.yarnrc.yml(likelynodeLinker: node-modulesfor compatibility).gitignorefor Yarn Berry artifacts (.yarn/cache,.yarn/releases, etc.).yalcsetup still workbracesresolution workaround frompackage.jsononce lockfile is reliable