chore(deps): unblock @vitejs/plugin-react 6.1.1 with a peer override (#316) #471
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/316-plugin-react-6.1.1"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Supersedes #316, which cannot go green on its own.
Why #316 was stuck
It failed identically across six runs — 7173, 7320, 7417, 7502, 7581, 7719 — and would have kept failing on any number of retries. It is not the runner-disk problem that was failing #467/#468/#469 (those were
OSError: [Errno 28] No space left on device; all three have since rebased, gone green and automerged).That branch carried
package.jsonat6.1.1andpackage-lock.jsonstill at6.0.5. Therenovate/artifactsfailure on the PR is the cause, not a symptom: Renovate could not regenerate the lockfile, so it pushed the manifest bump with a stale lock and CI could not install. Renovate rebased it again after the disk fix — the branch is now one line offmain— andrenovate/artifactsfailed again, which rules staleness out as a variable.The actual conflict
@vitejs/plugin-react@6.1.1declares@rolldown/plugin-babelas an optional peer. Its own optional peer@babel/plugin-transform-runtimeresolves to8.0.1, which peers on@babel/core@^8. The tree has7.29.7:npm chases that chain during incremental resolution and gives up — even though it installs none of those packages. The
overridesentry keeps that speculative resolution on the 7.x line, and the update goes through.Two alternatives, both tested and rejected
Wait for
lockFileMaintenanceto refresh the lock first — does not work. I recommended this before testing it, and it is wrong. After a clean from-scratch regen at6.0.5, the incremental bump to6.1.1hits the identical ERESOLVE. The conflict is not stale transitive versions; it is npm declining to re-plan around a pinned package.Full from-scratch regen with 6.1.1 — works, but too wide. It rewrites 61 transitive versions (0 added, 0 removed — all
@rollup/*and@rolldown/*platform-binding drift,@csstools/*, and similar). That islockFileMaintenance's job, whichrenovate.jsonalready schedules, not a single-dependency PR's.What this PR does instead
The whole lockfile diff:
The plugin's version, its integrity hash, and its own peer metadata — 6.1.1 adds
oxc-transform-reactas a new optional peer, part of its experimental native React Compiler support.@babel/corestays at7.29.7.A note on npm versions: regenerated with npm 11, matching whatever wrote the current lock. npm 10.9.8, which
node:22ships, silently drops the 32"libc"entries and turns a 12-line diff into a 108-line one. CI consumes it with 10.9.8 either way.Verification
Run with CI's own toolchain (node 22 / npm 10.9.8), not just a convenient one:
npm ci— cleannpm run lint— 0 errors (the singlereact-hooks/exhaustive-depswarning is pre-existing onmain)npm test— 43 files, 465 tests passednpm run build— succeedsnpm audit --omit=dev+audit-allowlist.mjs) — cleandocker build --target frontend-prod— succeeds (that job also failed on #316)Follow-up
The override constrains a package that is not in the tree, so it needs to be removed when the frontend moves to Babel 8 — at that point it would hold
@babel/plugin-transform-runtimeback rather than unblock anything. JSON has no comments, so that is recorded under "Important constraints" inwebapp/CLAUDE.md.Worth expecting: with the override in place, Renovate's artifact step should succeed on future
@vitejs/plugin-reactbumps instead of failing this same way again.🤖 Generated with Claude Code