Third of the migration-shaped holds, alongside #44 (Verify/xunit) and #47 (WebApp OpenAPI). Unlike those two, this one is gated on upstream rather than on work in this repo, so it is a watch item rather than a plan.
What is held
src/vue/package.json has typescript: ^6.0.3, and .github/renovate.json5 holds it at allowedVersions: "<7.0.0".
Why
TypeScript 7 is the Go rewrite. It does not ship the programmatic compiler API that vue-tsc/Volar embeds, so Vue template type-checking breaks - and vue-tsc is load-bearing here: npm run build runs vue-tsc before vite build, so this is a build-time dependency, not just an editor concern.
The trap worth knowing. vue-tsc's peer range is an open >=5.0.0, which would happily install TypeScript 7 without complaint. A permissive peer range is not the same as support. Without the Renovate hold, a bot would propose 6.x -> 7.x on that basis and the peer range would not stop it.
Unlock condition
Both of these, together:
- TypeScript 7.1 ships the programmatic compiler API.
vue-tsc/Volar announces support for it.
Neither is in this repo's control. The official TS 7 migration story is a dual-install alias, which is not something to adopt here while vue-tsc cannot type-check .vue files against it.
Expected cost when it unblocks
Small - the estimate is roughly a 15-minute bump, since nothing in this codebase depends on TS internals directly. The hold exists because of the toolchain underneath, not because of our own code. That asymmetry is the reason this is worth tracking rather than just re-deriving it every time the bot proposes it.
Done when
typescript and vue-tsc are both current, the <7.0.0 ceiling is removed from .github/renovate.json5, and npm run build type-checks clean.
References
Third of the migration-shaped holds, alongside #44 (Verify/xunit) and #47 (WebApp OpenAPI). Unlike those two, this one is gated on upstream rather than on work in this repo, so it is a watch item rather than a plan.
What is held
src/vue/package.jsonhastypescript: ^6.0.3, and.github/renovate.json5holds it atallowedVersions: "<7.0.0".Why
TypeScript 7 is the Go rewrite. It does not ship the programmatic compiler API that
vue-tsc/Volar embeds, so Vue template type-checking breaks - andvue-tscis load-bearing here:npm run buildrunsvue-tscbeforevite build, so this is a build-time dependency, not just an editor concern.The trap worth knowing.
vue-tsc's peer range is an open>=5.0.0, which would happily install TypeScript 7 without complaint. A permissive peer range is not the same as support. Without the Renovate hold, a bot would propose 6.x -> 7.x on that basis and the peer range would not stop it.Unlock condition
Both of these, together:
vue-tsc/Volar announces support for it.Neither is in this repo's control. The official TS 7 migration story is a dual-install alias, which is not something to adopt here while
vue-tsccannot type-check.vuefiles against it.Expected cost when it unblocks
Small - the estimate is roughly a 15-minute bump, since nothing in this codebase depends on TS internals directly. The hold exists because of the toolchain underneath, not because of our own code. That asymmetry is the reason this is worth tracking rather than just re-deriving it every time the bot proposes it.
Done when
typescriptandvue-tscare both current, the<7.0.0ceiling is removed from.github/renovate.json5, andnpm run buildtype-checks clean.References
.github/renovate.json5, theHOLD typescriptrule