Goal
Fix three small configuration inconsistencies found during the dependency audit in #2360.
None of them is urgent; together they make the catalog mean what its comment says it
means.
Current state
1. overrides silently beats the catalog
pnpm-workspace.yaml pins mobx-react: 9.1.1 in the catalog, whose header comment reads
"Versions here are pinned exactly … the pinned version is what the app is built and tested
against". But the root overrides block also carries mobx-react: ^9.1.1, and overrides
outrank catalog entries, so the lockfile resolves 9.2.2:
rg -n 'mobx-react@9\.2\.2' pnpm-lock.yaml | head -1
We are therefore not building against the pinned version, and the contract stated at the
top of the file does not hold.
@ogre-tools/injectable-react@23.2.0 peers mobx-react: ^9.1.1, which our catalog pin
already satisfies. Both the override and
peerDependencyRules.allowedVersions.mobx-react: '9' are leftovers from the mobx-react
7 to 9 migration and should no longer be needed.
2. Stale knip entry
knip.jsonc:126 still lists @types/react-window under
workspaces["packages/extensions"].ignoreDependencies. The package was dropped in #2283
(react-window v2 ships its own types) and appears nowhere else in the repo.
3. mobx-react-lite duplicates mobx-react
mobx-react-lite is a separate direct dependency imported by 13 files, all of them only
for observer, which mobx-react 9 re-exports.
Tasks
Risk notes
- Moving from mobx-react 9.2.2 back to the pinned 9.1.1 is a downgrade in practice; run
the unit suite and a live smoke test rather than assuming the pin is inert.
- The
mobx-react-lite consolidation touches observer-wrapped metrics components; watch
for snapshot churn.
Split out of #2360.
Goal
Fix three small configuration inconsistencies found during the dependency audit in #2360.
None of them is urgent; together they make the catalog mean what its comment says it
means.
Current state
1.
overridessilently beats the catalogpnpm-workspace.yamlpinsmobx-react: 9.1.1in the catalog, whose header comment reads"Versions here are pinned exactly … the pinned version is what the app is built and tested
against". But the root
overridesblock also carriesmobx-react: ^9.1.1, and overridesoutrank catalog entries, so the lockfile resolves 9.2.2:
We are therefore not building against the pinned version, and the contract stated at the
top of the file does not hold.
@ogre-tools/injectable-react@23.2.0peersmobx-react: ^9.1.1, which our catalog pinalready satisfies. Both the override and
peerDependencyRules.allowedVersions.mobx-react: '9'are leftovers from the mobx-react7 to 9 migration and should no longer be needed.
2. Stale knip entry
knip.jsonc:126still lists@types/react-windowunderworkspaces["packages/extensions"].ignoreDependencies. The package was dropped in #2283(react-window v2 ships its own types) and appears nowhere else in the repo.
3.
mobx-react-liteduplicatesmobx-reactmobx-react-liteis a separate direct dependency imported by 13 files, all of them onlyfor
observer, whichmobx-react9 re-exports.Tasks
mobx-reactentry fromoverridesand themobx-reactentry frompeerDependencyRules.allowedVersions; confirm the lockfile then resolves the pinned9.1.1 and that
pnpm installreports no unmet peers.@types/react-windowentry fromknip.jsoncand confirmpnpm knip:checkstays green.mobx-react-liteimports ontomobx-reactand dropmobx-react-litefrompackages/coreand the catalog.Risk notes
the unit suite and a live smoke test rather than assuming the pin is inert.
mobx-react-liteconsolidation touches observer-wrapped metrics components; watchfor snapshot churn.
Split out of #2360.