Skip to content

chore(v11): Upgrade to TypeScript 7.0#19435

Draft
logaretm wants to merge 1 commit into
awad/js-1293-drop-typescript-38-supportfrom
awad/upgrade-to-TS-6
Draft

chore(v11): Upgrade to TypeScript 7.0#19435
logaretm wants to merge 1 commit into
awad/js-1293-drop-typescript-38-supportfrom
awad/upgrade-to-TS-6

Conversation

@logaretm

@logaretm logaretm commented Feb 19, 2026

Copy link
Copy Markdown
Member

Bumps TypeScript from ~5.8.0 to ~7.0.2, the native (Go) compiler.

The changes here are what TS 7 itself forces:

  • explicit rootDir on every emitting tsconfig (now required)
  • drop the removed downlevelIteration and baseUrl options
  • add DOM to the shared lib and node to types, since globals are no longer auto-included
  • pin cloudflare's lib back to es2020 so DOM's fetch types don't clash with @cloudflare/workers-types
  • switch browser-integration-tests off the removed node10 resolution to bundler (with a paths shim for the internal replay types those tests borrow)
  • small source fixes: as BodyInit casts on the transports, readonly on the web-vitals global augmentations, an elysia trace-handler generic, and a couple of @ts-expect-error adjustments

ember and the bundler-plugin vite-type-compat test pin a JS-based TypeScript locally (nested devDep), because glint and that test consume the classic compiler API that the native compiler dropped. imo that's fine as a stop-gap until those tools support TS 7.

The native compiler also makes type generation much faster. Measured on CI, full monorepo, 46 projects, no nx cache:

step develop (TS 5.8) this PR (TS 7) speedup
build:transpile + build:types (nx run) ~206s ~68s ~3x
whole Build job (incl. install/setup) ~254s ~121s ~2x

build:transpile (rollup/esbuild) is unchanged across the two, so effectively all of the ~140s saved is tsc type generation.

closes #19226

@github-actions

github-actions Bot commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 27.6 kB - -
@sentry/browser - with treeshaking flags 26.04 kB - -
@sentry/browser (incl. Tracing) 46.35 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 48.14 kB - -
@sentry/browser (incl. Tracing, Profiling) 51.13 kB - -
@sentry/browser (incl. Tracing, Replay) 85.62 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 75.26 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 90.33 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 102.99 kB - -
@sentry/browser (incl. Feedback) 44.78 kB - -
@sentry/browser (incl. sendFeedback) 32.4 kB - -
@sentry/browser (incl. FeedbackAsync) 37.53 kB - -
@sentry/browser (incl. Metrics) 28.68 kB - -
@sentry/browser (incl. Logs) 28.93 kB - -
@sentry/browser (incl. Metrics & Logs) 29.61 kB - -
@sentry/react 29.39 kB - -
@sentry/react (incl. Tracing) 48.62 kB - -
@sentry/vue 33.03 kB - -
@sentry/vue (incl. Tracing) 48.33 kB - -
@sentry/svelte 27.63 kB - -
CDN Bundle 30 kB - -
CDN Bundle (incl. Tracing) 48.33 kB - -
CDN Bundle (incl. Logs, Metrics) 31.58 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 49.65 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 70.82 kB - -
CDN Bundle (incl. Tracing, Replay) 85.84 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 87.16 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 91.64 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 92.92 kB - -
CDN Bundle - uncompressed 89.33 kB - -
CDN Bundle (incl. Tracing) - uncompressed 146.07 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 94.03 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 150.05 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 218.76 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 265.28 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 269.24 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 278.98 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 282.93 kB - -
@sentry/nextjs (client) 51.17 kB - -
@sentry/sveltekit (client) 46.8 kB - -
@sentry/core/server 78.42 kB - -
@sentry/core/browser 64.77 kB - -
@sentry/node-core 62.73 kB - -
@sentry/node 125.35 kB - -
@sentry/node (incl. diagnostics channel injection) 139.63 kB - -
@sentry/node/import (ESM hook with diagnostics-channel injection) 69.96 kB - -
@sentry/node/light 50.73 kB - -
@sentry/node - without tracing 74.04 kB - -
@sentry/aws-serverless 83.26 kB +0.01% +1 B 🔺
@sentry/cloudflare (withSentry) - minified 181.47 kB - -
@sentry/cloudflare (withSentry) 448.98 kB - -

View base workflow run

@github-actions

github-actions Bot commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.

Scenario Requests/s % of Baseline Prev. Requests/s Change %
GET Baseline 8,964 - 9,351 -4%
GET With Sentry 1,637 18% 1,663 -2%
GET With Sentry (error only) 6,060 68% 5,962 +2%
POST Baseline 1,184 - 1,196 -1%
POST With Sentry 560 47% 576 -3%
POST With Sentry (error only) 1,052 89% 1,044 +1%
MYSQL Baseline 3,196 - 3,299 -3%
MYSQL With Sentry 417 13% 481 -13%
MYSQL With Sentry (error only) 2,626 82% 2,685 -2%

View base workflow run

@logaretm logaretm force-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 84d7268 to 199fbef Compare February 26, 2026 17:03
@logaretm logaretm added this to the v11 milestone Feb 26, 2026
@logaretm logaretm modified the milestones: v11, 11.0.0 Apr 27, 2026
@logaretm logaretm force-pushed the awad/upgrade-to-TS-6 branch from 199fbef to 71f88cc Compare July 10, 2026 18:38
@logaretm logaretm changed the base branch from develop to awad/nuxt-inhouse-build July 10, 2026 18:42
@logaretm logaretm changed the title chore: Upgrade to TypeScript 6.0 chore: Upgrade to TypeScript 7.0 Jul 10, 2026
@logaretm logaretm force-pushed the awad/nuxt-inhouse-build branch from 00fe4d9 to 102eb9c Compare July 10, 2026 18:49
@logaretm logaretm force-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d7b1418 to 912d717 Compare July 10, 2026 18:56
@logaretm logaretm force-pushed the awad/nuxt-inhouse-build branch 2 times, most recently from 10e5434 to b48cbc7 Compare July 10, 2026 19:00
@logaretm logaretm force-pushed the awad/upgrade-to-TS-6 branch from 912d717 to e54841e Compare July 10, 2026 19:01
@logaretm logaretm changed the base branch from awad/nuxt-inhouse-build to awad/js-1293-drop-typescript-38-support July 10, 2026 19:01
@logaretm logaretm force-pushed the awad/js-1293-drop-typescript-38-support branch from 21ebf07 to e2e63ad Compare July 11, 2026 00:56
@logaretm logaretm force-pushed the awad/upgrade-to-TS-6 branch from e54841e to 481dbc6 Compare July 11, 2026 00:56
@logaretm logaretm changed the title chore: Upgrade to TypeScript 7.0 chore(v11): Upgrade to TypeScript 7.0 Jul 11, 2026
@logaretm logaretm force-pushed the awad/js-1293-drop-typescript-38-support branch from e2e63ad to b4b2d6c Compare July 11, 2026 02:45
@logaretm logaretm force-pushed the awad/upgrade-to-TS-6 branch from 481dbc6 to d26ac8a Compare July 11, 2026 02:45
Bump typescript to ~7.0.2 and apply the changes TS 7 requires:
- remove downlevelIteration and baseUrl (both removed in TS 7)
- set explicit rootDir on all emitting tsconfigs (now required)
- add DOM lib and node types to the shared base config
- scope DOM out of cloudflare (conflicts with workers-types)
- source fixes: BodyInit casts on transports, readonly web-vitals
  globals, WebAssembly.Exception ts-expect-error removal, elysia
  trace handler generic, replay paint entry ts-expect-error
@logaretm logaretm force-pushed the awad/upgrade-to-TS-6 branch from d26ac8a to babf1cc Compare July 11, 2026 03:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate to TypeScript 6/7

2 participants