chore(deps): update dependency typescript to v7 - #114
Conversation
|
Reviewed via scheduled Renovate triage. Diff bumps |
Holding as draft — TS7 (native compiler) not fully adoptable yetTook this over and dug into what a TS7 upgrade actually involves. TypeScript 7.0 is the native (Go) compiler port, not a routine minor bump. Parking this in draft and tracking the blockers below. CI status is misleading here
Blockers to check on later
What already works
Leaving in draft so Renovate stops nagging while we track upstream |
dawsontoth
left a comment
There was a problem hiding this comment.
Reviewed via scheduled Renovate triage. Bumps typescript ~6.0.0 → ~7.0.0 in the scaffold template manifests (template-react-ts, template-vue-ts, and their -ssr variants).
Verified locally by cloning the branch and running the generator suite under Node 24: 213/213 tests pass (37 files).
The only failing CI checks are the Generate * with pnpm jobs, which fail inside the setup-pnpm self-installer (self-installer exits with code 1) — that's the known pnpm-bootstrap CI/infra flakiness, not caused by this bump. The equivalent Generate * with npm and Generate * with yarn jobs, plus the full Test matrix (ubuntu/windows × Node 20/22/24), Lint, Format, and commitlint all pass. Safe to merge once the pnpm jobs are re-run (or the branch is rebased).
6d51e61 to
bdbe3b3
Compare
d79845c to
ee47c0b
Compare
Tracking update (2026-07-28) — still blocked, and there's a new blockerRe-checked all three items from my 07-13 note against the rebased head ( 🆕 New blocker:
|
There was a problem hiding this comment.
Converting my review state to request changes for bookkeeping. No new analysis — my 07-28 tracking note still stands in full; this just stops the PR from carrying a stale APPROVED from 2026-07-14 (commit d79845ca) that contradicts it.
The approval predates the TS7 investigation. The PR is a draft so it could not have merged, but the review state should not read green while the build is red.
Re-confirmed today against head ee47c0b9 — still blocked, unchanged
The 6 red Generate nextjs* jobs are the same real failure, not the old pnpm flake:
typescript-eslint does not support TS 7.0.
at node_modules/eslint-config-next/node_modules/typescript-eslint/dist/index.js:52:11
Upstream has not moved. As of today, typescript-eslint@8.65.0 — and every published 8.65.1-alpha.* prerelease — still declares:
"typescript": ">=4.8.4 <6.1.0"
Same cap on @typescript-eslint/typescript-estree@8.65.0. TS 7 remains outside the supported range, tracked upstream at typescript-eslint#10940.
Since the blocker is transitive through eslint-config-next, it is not something this repo can pin around without either dropping the Next.js lint config from the affected templates or holding the scaffolds on TS 6. Keeping this in draft until upstream ships TS >=7.1 support is still the right call — re-request review on me when that lands.
ee47c0b to
30928ef
Compare
30928ef to
389eec8
Compare
Tracking update (2026-08-14) — still blocked; both upstreams retested on newer releasesRe-verified against the rebased head
|
Tracking update (2026-08-19) — still blocked;
|
Tracking update (2026-08-25) —
|
Tracking update (2026-08-26) — the blocker is now explicit upstream: this needs TypeScript 7.1, not a
|
| template | lint |
build |
verdict |
|---|---|---|---|
template-react-ts |
✅ | ✅ built in 317ms |
fine on TS 7 |
template-vue-ts |
✅ | ✅ built in 241ms |
fine on TS 7 |
template-nextjs |
❌ | — | blocked |
template-nextjs-ts |
❌ | — | blocked |
That matches CI exactly: the only 6 red jobs are nextjs and nextjs-ts × {npm, yarn, pnpm}; all 6 react-ts/vue-ts jobs are green. The Next templates reach typescript-eslint transitively via eslint-config-next@16.3.3 → typescript-eslint@^8.46.0; the react/vue templates use flat config with globals and never load it.
Correcting my own framing on vue-tsc
I've been treating vue-tsc as a co-blocker across several updates. It does still crash on TS 7 — retested vue-tsc@3.3.11 (still latest, published 08-21) in a clean template-vue-ts:
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/tsc' is not defined by
"exports" in .../node_modules/typescript/package.json
at resolveTscPath (.../node_modules/vue-tsc/index.js:73:43)
But no template script invokes it — the vue templates' scripts are lint (eslint .), build (vite build), test, format. vue-tsc sits in devDependencies unused, which is why vue-ts passes CI. So it's not a CI gate and never was; it's a "we ship a devDependency that crashes if a user runs it" hazard. Real, but a different and lesser problem than I'd implied, and it shouldn't hold the react/vue bumps.
Suggested way forward
Rather than keep this as a 6-week-old rolling tracker, I'd split it: land the TS 7 bump for the four non-Next templates (react-ts, react-ts-ssr, vue-ts, vue-ts-ssr — verified green above), and hold nextjs / nextjs-ts at ^5.9.3 behind a separate issue pinned to TypeScript 7.1. Renovate can be told to keep those two off TS 7 with a packageRules entry matching the two template paths, so it stops re-proposing a combination that can't pass.
The vue-tsc question (drop it, or pin it) is worth its own issue too, since it's user-visible in scaffolded projects regardless of what TypeScript version we pick.
Happy to open either issue and split the PR if that sounds right.
389eec8 to
104689f
Compare
Still blocked — and the wait condition is not "TS 7.1", as I'd previously said hereDisposition unchanged: the only red jobs are The guard blocks all of TS 7.x, not just 7.0Read the actual gate in const [versionMajor, _versionMinor] = ts.versionMajorMinor.split('.').map(Number);
if (versionMajor >= 7) {
console.error([
'typescript-eslint does not support TS 7.0.',
...
].join('\n'));
throw new Error('typescript-eslint does not support TS 7.0.');
}The predicate is So this unblocks when typescript-eslint ships a release that ports to the new API and relaxes both the guard and the peer range — not when TypeScript tags 7.1. Why that port is a real piece of workTS 7.1 dev builds now exist ( ".": "./lib/version.cjs",
"./unstable/sync": "./dist/api/sync/api.js",
"./unstable/ast": "./dist/ast/index.js",
...
Recommendation unchanged, and it's the way to get value out of this nowSplit the PR. Land TS 7 for the four non-Next templates — I've verified Also still true and still worth its own issue, separately from this PR: Holding at changes-requested for the Next templates only. |
This PR contains the following updates:
~6.0.0→~7.0.0^5.9.3→^7.0.0Release Notes
microsoft/TypeScript (typescript)
v7.0.2Compare Source
Configuration
📅 Schedule: (in timezone America/New_York)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.