Upgrade workspace to TypeScript 6#2700
Conversation
|
🧪 E2E Test Results✅ All tests passed Summary
Details by Category✅ ▲ Vercel Production
✅ 💻 Local Development
✅ 📦 Local Production
✅ 🐘 Local Postgres
✅ 🪟 Windows
✅ 📋 Other
|
📊 Benchmark Results
workflow with no steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) workflow with 1 step💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Express | Next.js (Turbopack) workflow with 10 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Express | Next.js (Turbopack) workflow with 25 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) workflow with 50 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Express | Next.js (Turbopack) Promise.all with 10 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) Promise.all with 25 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) Promise.all with 50 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Express | Next.js (Turbopack) Promise.race with 10 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Express | Next.js (Turbopack) Promise.race with 25 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) Promise.race with 50 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) workflow with 10 sequential data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Express | Next.js (Turbopack) workflow with 25 sequential data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) workflow with 50 sequential data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) workflow with 10 concurrent data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Express | Next.js (Turbopack) workflow with 25 concurrent data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) workflow with 50 concurrent data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Next.js (Turbopack) | Express Stream Benchmarks (includes TTFB metrics)workflow with stream💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Express | Next.js (Turbopack) stream pipeline with 5 transform steps (1MB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) 10 parallel streams (1MB each)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Express | Next.js (Turbopack) fan-out fan-in 10 streams (1MB each)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) SummaryFastest Framework by WorldWinner determined by most benchmark wins
Fastest World by FrameworkWinner determined by most benchmark wins
Column Definitions
Worlds:
|
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
VaguelySerious
left a comment
There was a problem hiding this comment.
LGTM assuming CI passes
|
Backport PR opened against |
Summary
rootDirwhere package source lives undersrc,target/typesdefaults in the shared base config, remove unnecessarybaseUrlusage where tooling does not require it, and update oldnodemodule resolution where TS6 rejects it.@workflow/core/runtimeexport instead of thedistpath from@workflow/nextRuntimeDecryptionError.contextas an optional runtime property withdeclareWhy TS6 here, not TS7 yet?
TypeScript 7.0 RC is available as the new native/Go compiler via
typescript@rc, and Microsoft's RC post says it is intended to be stable and compatible for CLI/editor workflows. The important caveat for this repo is programmatic usage: the same post says a stable programmatic API is not expected until at least TypeScript 7.1, and recommends keeping TypeScript 6 available side-by-side for tooling that importstypescriptdirectly.This repository is not only invoking
tsc; it imports and uses TypeScript APIs directly in a few places:packages/docs-typecheck/src/type-checker.tsusests.createProgram, compiler hosts, source files, and diagnostics.packages/typescript-plugin/src/index.tsimportstypescript/lib/tsserverlibraryfor the language service plugin.packages/web-shared/test/serializable-revivers.test.tsimports TypeScript AST/parser APIs in a test.So this PR intentionally moves us to stable TS6 first. That gets the TS6 behavior changes out of the way, and it should make a later TS7 migration smaller once the programmatic/tsserver API story is stable enough for our direct usage.
Reference: https://devblogs.microsoft.com/typescript/announcing-typescript-7-0-rc/
Validation
pnpm install --frozen-lockfilepnpm buildpnpm typecheckpnpm testpnpm test:docspnpm --filter @workflow/docs-typecheck buildAPP_NAME=nest pnpm vitest run packages/core/e2e/local-build.test.tsnode --test ".github/scripts/**/*.test.js"pnpm changeset status --since=mainpnpm exec lint-stagedNote: several upstream packages still declare TypeScript peer ranges that only mention 5.x, so pnpm prints peer warnings during install. The workspace build, typecheck, docs typecheck, and tests all pass against 6.0.3.