chore(v11): Upgrade to TypeScript 7.0 - #19435

Merged
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6
Jul 22, 2026
Merged

chore(v11): Upgrade to TypeScript 7.0#19435
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6

Conversation

@logaretm

@logaretmlogaretm 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:

stepdevelop (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-actionsBot commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.76 kB--
@sentry/browser - with treeshaking flags26.2 kB--
@sentry/browser (incl. Tracing)46.59 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.4 kB--
@sentry/browser (incl. Tracing, Profiling)51.39 kB--
@sentry/browser (incl. Tracing, Replay)85.83 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.47 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.56 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)44.95 kB--
@sentry/browser (incl. sendFeedback)32.56 kB--
@sentry/browser (incl. FeedbackAsync)37.62 kB--
@sentry/browser (incl. Metrics)28.84 kB--
@sentry/browser (incl. Logs)29.06 kB--
@sentry/browser (incl. Metrics & Logs)29.76 kB--
@sentry/react29.55 kB--
@sentry/react (incl. Tracing)48.87 kB--
@sentry/vue33.18 kB--
@sentry/vue (incl. Tracing)48.56 kB--
@sentry/svelte27.78 kB--
CDN Bundle30.1 kB--
CDN Bundle (incl. Tracing)48.48 kB--
CDN Bundle (incl. Logs, Metrics)31.68 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.78 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.94 kB--
CDN Bundle (incl. Tracing, Replay)85.99 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.31 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)93.07 kB--
CDN Bundle - uncompressed89.72 kB--
CDN Bundle (incl. Tracing) - uncompressed146.59 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.43 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.57 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.19 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.83 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279.54 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed283.49 kB--
@sentry/nextjs (client)51.38 kB--
@sentry/sveltekit (client)47 kB--
@sentry/core/server80.13 kB--
@sentry/core/browser51.97 kB--
@sentry/node124.21 kB--
@sentry/node (incl. diagnostics channel injection)149.66 kB+0.01%+1 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)70.03 kB--
@sentry/node - without tracing74.38 kB+0.01%+1 B 🔺
@sentry/aws-serverless83.86 kB-0.01%-1 B 🔽
@sentry/cloudflare (withSentry) - minified196.59 kB--
@sentry/cloudflare (withSentry)483.84 kB--

View base workflow run

@github-actions

github-actionsBot 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.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,964-9,351-4%
GET With Sentry1,63718%1,663-2%
GET With Sentry (error only)6,06068%5,962+2%
POST Baseline1,184-1,196-1%
POST With Sentry56047%576-3%
POST With Sentry (error only)1,05289%1,044+1%
MYSQL Baseline3,196-3,299-3%
MYSQL With Sentry41713%481-13%
MYSQL With Sentry (error only)2,62682%2,685-2%

View base workflow run

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 84d7268 to 199fbefCompareFebruary 26, 2026 17:03
@logaretmlogaretm added this to the v11 milestone Feb 26, 2026
@logaretmlogaretm modified the milestones: v11, 11.0.0Apr 27, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 199fbef to 71f88ccCompareJuly 10, 2026 18:38
@logaretm
logaretm changed the base branch from develop to awad/nuxt-inhouse-buildJuly 10, 2026 18:42
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 6.0chore: Upgrade to TypeScript 7.0Jul 10, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d7b1418 to 912d717CompareJuly 10, 2026 18:56
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 912d717 to e54841eCompareJuly 10, 2026 19:01
@logaretm
logaretm changed the base branch from awad/nuxt-inhouse-build to awad/js-1293-drop-typescript-38-supportJuly 10, 2026 19:01
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e54841e to 481dbc6CompareJuly 11, 2026 00:56
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 7.0chore(v11): Upgrade to TypeScript 7.0Jul 11, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d26ac8a to babf1ccCompareJuly 11, 2026 03:02
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from babf1cc to 67ebba4CompareJuly 13, 2026 14:31
@logaretm
logaretm requested review from JPeer264, Lms24, isaacs and msonnb and removed request for a teamJuly 21, 2026 13:52
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from f5e614c to 71c8903CompareJuly 21, 2026 13:57
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 71c8903 to de2e7b3CompareJuly 21, 2026 14:12
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 6e0f0fa to a6fff6dCompareJuly 21, 2026 16:36
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from a6fff6d to 7db2022CompareJuly 21, 2026 16:47
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 7db2022 to e148da9CompareJuly 21, 2026 17:46
Base automatically changed from awad/js-1293-drop-typescript-38-support to developJuly 21, 2026 18:05
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e148da9 to 1afdab1CompareJuly 21, 2026 18:05
Comment threadpackages/tanstackstart/tsconfig.types.json Outdated
"inlineSources": true,
"isolatedModules": true,
"lib": ["es2020"],
"lib": ["es2020", "DOM"],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

m/q: Does this add DOM types to server-side packages?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and vice versa, node types (with types below) to browser packages?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In TS 6/7 the types aren't autoloaded from @types anymore, so we have to be explicit.

Regarding node-types-in-browser, adding node in L22 reduces the type surface which was autoloaded anyways before that change.

On the DOM side being pulled into node, I think that was also always the case because of jsdom being in @types and leaking in the dom types.

I could change this to remove DOM from the base and hand pick it where applicable, which would be a tightening but may change existing expectations we had knowingly or unknowingly. WDYT?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's fine, since it already was this way. Just didn't know/forgot about it. No need to change from my PoV

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 1afdab1 to 5376d06CompareJuly 22, 2026 13:30
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
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 5376d06 to c7576dbCompareJuly 22, 2026 14:33
@logaretm
logaretm merged commit 9f022ab into developJul 22, 2026
285 checks passed
@logaretm
logaretm deleted the awad/upgrade-to-TS-6 branch July 22, 2026 16:42
mydea added a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
JPeer264 pushed a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for freeto 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

4 participants

@logaretm@Lms24@nicohrubec@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

chore(v11): Upgrade to TypeScript 7.0 - #19435

Merged
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6
Jul 22, 2026
Merged

chore(v11): Upgrade to TypeScript 7.0#19435
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6

Conversation

@logaretm

@logaretmlogaretm 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:

stepdevelop (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-actionsBot commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.76 kB--
@sentry/browser - with treeshaking flags26.2 kB--
@sentry/browser (incl. Tracing)46.59 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.4 kB--
@sentry/browser (incl. Tracing, Profiling)51.39 kB--
@sentry/browser (incl. Tracing, Replay)85.83 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.47 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.56 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)44.95 kB--
@sentry/browser (incl. sendFeedback)32.56 kB--
@sentry/browser (incl. FeedbackAsync)37.62 kB--
@sentry/browser (incl. Metrics)28.84 kB--
@sentry/browser (incl. Logs)29.06 kB--
@sentry/browser (incl. Metrics & Logs)29.76 kB--
@sentry/react29.55 kB--
@sentry/react (incl. Tracing)48.87 kB--
@sentry/vue33.18 kB--
@sentry/vue (incl. Tracing)48.56 kB--
@sentry/svelte27.78 kB--
CDN Bundle30.1 kB--
CDN Bundle (incl. Tracing)48.48 kB--
CDN Bundle (incl. Logs, Metrics)31.68 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.78 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.94 kB--
CDN Bundle (incl. Tracing, Replay)85.99 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.31 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)93.07 kB--
CDN Bundle - uncompressed89.72 kB--
CDN Bundle (incl. Tracing) - uncompressed146.59 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.43 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.57 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.19 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.83 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279.54 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed283.49 kB--
@sentry/nextjs (client)51.38 kB--
@sentry/sveltekit (client)47 kB--
@sentry/core/server80.13 kB--
@sentry/core/browser51.97 kB--
@sentry/node124.21 kB--
@sentry/node (incl. diagnostics channel injection)149.66 kB+0.01%+1 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)70.03 kB--
@sentry/node - without tracing74.38 kB+0.01%+1 B 🔺
@sentry/aws-serverless83.86 kB-0.01%-1 B 🔽
@sentry/cloudflare (withSentry) - minified196.59 kB--
@sentry/cloudflare (withSentry)483.84 kB--

View base workflow run

@github-actions

github-actionsBot 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.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,964-9,351-4%
GET With Sentry1,63718%1,663-2%
GET With Sentry (error only)6,06068%5,962+2%
POST Baseline1,184-1,196-1%
POST With Sentry56047%576-3%
POST With Sentry (error only)1,05289%1,044+1%
MYSQL Baseline3,196-3,299-3%
MYSQL With Sentry41713%481-13%
MYSQL With Sentry (error only)2,62682%2,685-2%

View base workflow run

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 84d7268 to 199fbefCompareFebruary 26, 2026 17:03
@logaretmlogaretm added this to the v11 milestone Feb 26, 2026
@logaretmlogaretm modified the milestones: v11, 11.0.0Apr 27, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 199fbef to 71f88ccCompareJuly 10, 2026 18:38
@logaretm
logaretm changed the base branch from develop to awad/nuxt-inhouse-buildJuly 10, 2026 18:42
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 6.0chore: Upgrade to TypeScript 7.0Jul 10, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d7b1418 to 912d717CompareJuly 10, 2026 18:56
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 912d717 to e54841eCompareJuly 10, 2026 19:01
@logaretm
logaretm changed the base branch from awad/nuxt-inhouse-build to awad/js-1293-drop-typescript-38-supportJuly 10, 2026 19:01
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e54841e to 481dbc6CompareJuly 11, 2026 00:56
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 7.0chore(v11): Upgrade to TypeScript 7.0Jul 11, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d26ac8a to babf1ccCompareJuly 11, 2026 03:02
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from babf1cc to 67ebba4CompareJuly 13, 2026 14:31
@logaretm
logaretm requested review from JPeer264, Lms24, isaacs and msonnb and removed request for a teamJuly 21, 2026 13:52
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from f5e614c to 71c8903CompareJuly 21, 2026 13:57
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 71c8903 to de2e7b3CompareJuly 21, 2026 14:12
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 6e0f0fa to a6fff6dCompareJuly 21, 2026 16:36
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from a6fff6d to 7db2022CompareJuly 21, 2026 16:47
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 7db2022 to e148da9CompareJuly 21, 2026 17:46
Base automatically changed from awad/js-1293-drop-typescript-38-support to developJuly 21, 2026 18:05
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e148da9 to 1afdab1CompareJuly 21, 2026 18:05
Comment threadpackages/tanstackstart/tsconfig.types.json Outdated
"inlineSources": true,
"isolatedModules": true,
"lib": ["es2020"],
"lib": ["es2020", "DOM"],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

m/q: Does this add DOM types to server-side packages?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and vice versa, node types (with types below) to browser packages?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In TS 6/7 the types aren't autoloaded from @types anymore, so we have to be explicit.

Regarding node-types-in-browser, adding node in L22 reduces the type surface which was autoloaded anyways before that change.

On the DOM side being pulled into node, I think that was also always the case because of jsdom being in @types and leaking in the dom types.

I could change this to remove DOM from the base and hand pick it where applicable, which would be a tightening but may change existing expectations we had knowingly or unknowingly. WDYT?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's fine, since it already was this way. Just didn't know/forgot about it. No need to change from my PoV

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 1afdab1 to 5376d06CompareJuly 22, 2026 13:30
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
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 5376d06 to c7576dbCompareJuly 22, 2026 14:33
@logaretm
logaretm merged commit 9f022ab into developJul 22, 2026
285 checks passed
@logaretm
logaretm deleted the awad/upgrade-to-TS-6 branch July 22, 2026 16:42
mydea added a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
JPeer264 pushed a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for freeto 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

4 participants

@logaretm@Lms24@nicohrubec@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(v11): Upgrade to TypeScript 7.0 - #19435

Merged
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6
Jul 22, 2026
Merged

chore(v11): Upgrade to TypeScript 7.0#19435
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6

Conversation

@logaretm

@logaretmlogaretm 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:

stepdevelop (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-actionsBot commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.76 kB--
@sentry/browser - with treeshaking flags26.2 kB--
@sentry/browser (incl. Tracing)46.59 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.4 kB--
@sentry/browser (incl. Tracing, Profiling)51.39 kB--
@sentry/browser (incl. Tracing, Replay)85.83 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.47 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.56 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)44.95 kB--
@sentry/browser (incl. sendFeedback)32.56 kB--
@sentry/browser (incl. FeedbackAsync)37.62 kB--
@sentry/browser (incl. Metrics)28.84 kB--
@sentry/browser (incl. Logs)29.06 kB--
@sentry/browser (incl. Metrics & Logs)29.76 kB--
@sentry/react29.55 kB--
@sentry/react (incl. Tracing)48.87 kB--
@sentry/vue33.18 kB--
@sentry/vue (incl. Tracing)48.56 kB--
@sentry/svelte27.78 kB--
CDN Bundle30.1 kB--
CDN Bundle (incl. Tracing)48.48 kB--
CDN Bundle (incl. Logs, Metrics)31.68 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.78 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.94 kB--
CDN Bundle (incl. Tracing, Replay)85.99 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.31 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)93.07 kB--
CDN Bundle - uncompressed89.72 kB--
CDN Bundle (incl. Tracing) - uncompressed146.59 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.43 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.57 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.19 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.83 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279.54 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed283.49 kB--
@sentry/nextjs (client)51.38 kB--
@sentry/sveltekit (client)47 kB--
@sentry/core/server80.13 kB--
@sentry/core/browser51.97 kB--
@sentry/node124.21 kB--
@sentry/node (incl. diagnostics channel injection)149.66 kB+0.01%+1 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)70.03 kB--
@sentry/node - without tracing74.38 kB+0.01%+1 B 🔺
@sentry/aws-serverless83.86 kB-0.01%-1 B 🔽
@sentry/cloudflare (withSentry) - minified196.59 kB--
@sentry/cloudflare (withSentry)483.84 kB--

View base workflow run

@github-actions

github-actionsBot 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.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,964-9,351-4%
GET With Sentry1,63718%1,663-2%
GET With Sentry (error only)6,06068%5,962+2%
POST Baseline1,184-1,196-1%
POST With Sentry56047%576-3%
POST With Sentry (error only)1,05289%1,044+1%
MYSQL Baseline3,196-3,299-3%
MYSQL With Sentry41713%481-13%
MYSQL With Sentry (error only)2,62682%2,685-2%

View base workflow run

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 84d7268 to 199fbefCompareFebruary 26, 2026 17:03
@logaretmlogaretm added this to the v11 milestone Feb 26, 2026
@logaretmlogaretm modified the milestones: v11, 11.0.0Apr 27, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 199fbef to 71f88ccCompareJuly 10, 2026 18:38
@logaretm
logaretm changed the base branch from develop to awad/nuxt-inhouse-buildJuly 10, 2026 18:42
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 6.0chore: Upgrade to TypeScript 7.0Jul 10, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d7b1418 to 912d717CompareJuly 10, 2026 18:56
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 912d717 to e54841eCompareJuly 10, 2026 19:01
@logaretm
logaretm changed the base branch from awad/nuxt-inhouse-build to awad/js-1293-drop-typescript-38-supportJuly 10, 2026 19:01
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e54841e to 481dbc6CompareJuly 11, 2026 00:56
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 7.0chore(v11): Upgrade to TypeScript 7.0Jul 11, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d26ac8a to babf1ccCompareJuly 11, 2026 03:02
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from babf1cc to 67ebba4CompareJuly 13, 2026 14:31
@logaretm
logaretm requested review from JPeer264, Lms24, isaacs and msonnb and removed request for a teamJuly 21, 2026 13:52
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from f5e614c to 71c8903CompareJuly 21, 2026 13:57
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 71c8903 to de2e7b3CompareJuly 21, 2026 14:12
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 6e0f0fa to a6fff6dCompareJuly 21, 2026 16:36
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from a6fff6d to 7db2022CompareJuly 21, 2026 16:47
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 7db2022 to e148da9CompareJuly 21, 2026 17:46
Base automatically changed from awad/js-1293-drop-typescript-38-support to developJuly 21, 2026 18:05
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e148da9 to 1afdab1CompareJuly 21, 2026 18:05
Comment threadpackages/tanstackstart/tsconfig.types.json Outdated
"inlineSources": true,
"isolatedModules": true,
"lib": ["es2020"],
"lib": ["es2020", "DOM"],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

m/q: Does this add DOM types to server-side packages?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and vice versa, node types (with types below) to browser packages?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In TS 6/7 the types aren't autoloaded from @types anymore, so we have to be explicit.

Regarding node-types-in-browser, adding node in L22 reduces the type surface which was autoloaded anyways before that change.

On the DOM side being pulled into node, I think that was also always the case because of jsdom being in @types and leaking in the dom types.

I could change this to remove DOM from the base and hand pick it where applicable, which would be a tightening but may change existing expectations we had knowingly or unknowingly. WDYT?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's fine, since it already was this way. Just didn't know/forgot about it. No need to change from my PoV

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 1afdab1 to 5376d06CompareJuly 22, 2026 13:30
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
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 5376d06 to c7576dbCompareJuly 22, 2026 14:33
@logaretm
logaretm merged commit 9f022ab into developJul 22, 2026
285 checks passed
@logaretm
logaretm deleted the awad/upgrade-to-TS-6 branch July 22, 2026 16:42
mydea added a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
JPeer264 pushed a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for freeto 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

4 participants

@logaretm@Lms24@nicohrubec@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(v11): Upgrade to TypeScript 7.0 - #19435

Merged
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6
Jul 22, 2026
Merged

chore(v11): Upgrade to TypeScript 7.0#19435
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6

Conversation

@logaretm

@logaretmlogaretm 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:

stepdevelop (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-actionsBot commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.76 kB--
@sentry/browser - with treeshaking flags26.2 kB--
@sentry/browser (incl. Tracing)46.59 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.4 kB--
@sentry/browser (incl. Tracing, Profiling)51.39 kB--
@sentry/browser (incl. Tracing, Replay)85.83 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.47 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.56 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)44.95 kB--
@sentry/browser (incl. sendFeedback)32.56 kB--
@sentry/browser (incl. FeedbackAsync)37.62 kB--
@sentry/browser (incl. Metrics)28.84 kB--
@sentry/browser (incl. Logs)29.06 kB--
@sentry/browser (incl. Metrics & Logs)29.76 kB--
@sentry/react29.55 kB--
@sentry/react (incl. Tracing)48.87 kB--
@sentry/vue33.18 kB--
@sentry/vue (incl. Tracing)48.56 kB--
@sentry/svelte27.78 kB--
CDN Bundle30.1 kB--
CDN Bundle (incl. Tracing)48.48 kB--
CDN Bundle (incl. Logs, Metrics)31.68 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.78 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.94 kB--
CDN Bundle (incl. Tracing, Replay)85.99 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.31 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)93.07 kB--
CDN Bundle - uncompressed89.72 kB--
CDN Bundle (incl. Tracing) - uncompressed146.59 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.43 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.57 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.19 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.83 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279.54 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed283.49 kB--
@sentry/nextjs (client)51.38 kB--
@sentry/sveltekit (client)47 kB--
@sentry/core/server80.13 kB--
@sentry/core/browser51.97 kB--
@sentry/node124.21 kB--
@sentry/node (incl. diagnostics channel injection)149.66 kB+0.01%+1 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)70.03 kB--
@sentry/node - without tracing74.38 kB+0.01%+1 B 🔺
@sentry/aws-serverless83.86 kB-0.01%-1 B 🔽
@sentry/cloudflare (withSentry) - minified196.59 kB--
@sentry/cloudflare (withSentry)483.84 kB--

View base workflow run

@github-actions

github-actionsBot 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.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,964-9,351-4%
GET With Sentry1,63718%1,663-2%
GET With Sentry (error only)6,06068%5,962+2%
POST Baseline1,184-1,196-1%
POST With Sentry56047%576-3%
POST With Sentry (error only)1,05289%1,044+1%
MYSQL Baseline3,196-3,299-3%
MYSQL With Sentry41713%481-13%
MYSQL With Sentry (error only)2,62682%2,685-2%

View base workflow run

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 84d7268 to 199fbefCompareFebruary 26, 2026 17:03
@logaretmlogaretm added this to the v11 milestone Feb 26, 2026
@logaretmlogaretm modified the milestones: v11, 11.0.0Apr 27, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 199fbef to 71f88ccCompareJuly 10, 2026 18:38
@logaretm
logaretm changed the base branch from develop to awad/nuxt-inhouse-buildJuly 10, 2026 18:42
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 6.0chore: Upgrade to TypeScript 7.0Jul 10, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d7b1418 to 912d717CompareJuly 10, 2026 18:56
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 912d717 to e54841eCompareJuly 10, 2026 19:01
@logaretm
logaretm changed the base branch from awad/nuxt-inhouse-build to awad/js-1293-drop-typescript-38-supportJuly 10, 2026 19:01
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e54841e to 481dbc6CompareJuly 11, 2026 00:56
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 7.0chore(v11): Upgrade to TypeScript 7.0Jul 11, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d26ac8a to babf1ccCompareJuly 11, 2026 03:02
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from babf1cc to 67ebba4CompareJuly 13, 2026 14:31
@logaretm
logaretm requested review from JPeer264, Lms24, isaacs and msonnb and removed request for a teamJuly 21, 2026 13:52
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from f5e614c to 71c8903CompareJuly 21, 2026 13:57
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 71c8903 to de2e7b3CompareJuly 21, 2026 14:12
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 6e0f0fa to a6fff6dCompareJuly 21, 2026 16:36
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from a6fff6d to 7db2022CompareJuly 21, 2026 16:47
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 7db2022 to e148da9CompareJuly 21, 2026 17:46
Base automatically changed from awad/js-1293-drop-typescript-38-support to developJuly 21, 2026 18:05
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e148da9 to 1afdab1CompareJuly 21, 2026 18:05
Comment threadpackages/tanstackstart/tsconfig.types.json Outdated
"inlineSources": true,
"isolatedModules": true,
"lib": ["es2020"],
"lib": ["es2020", "DOM"],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

m/q: Does this add DOM types to server-side packages?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and vice versa, node types (with types below) to browser packages?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In TS 6/7 the types aren't autoloaded from @types anymore, so we have to be explicit.

Regarding node-types-in-browser, adding node in L22 reduces the type surface which was autoloaded anyways before that change.

On the DOM side being pulled into node, I think that was also always the case because of jsdom being in @types and leaking in the dom types.

I could change this to remove DOM from the base and hand pick it where applicable, which would be a tightening but may change existing expectations we had knowingly or unknowingly. WDYT?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's fine, since it already was this way. Just didn't know/forgot about it. No need to change from my PoV

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 1afdab1 to 5376d06CompareJuly 22, 2026 13:30
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
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 5376d06 to c7576dbCompareJuly 22, 2026 14:33
@logaretm
logaretm merged commit 9f022ab into developJul 22, 2026
285 checks passed
@logaretm
logaretm deleted the awad/upgrade-to-TS-6 branch July 22, 2026 16:42
mydea added a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
JPeer264 pushed a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for freeto 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

4 participants

@logaretm@Lms24@nicohrubec@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

chore(v11): Upgrade to TypeScript 7.0 - #19435

Merged
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6
Jul 22, 2026
Merged

chore(v11): Upgrade to TypeScript 7.0#19435
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6

Conversation

@logaretm

@logaretmlogaretm 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:

stepdevelop (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-actionsBot commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.76 kB--
@sentry/browser - with treeshaking flags26.2 kB--
@sentry/browser (incl. Tracing)46.59 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.4 kB--
@sentry/browser (incl. Tracing, Profiling)51.39 kB--
@sentry/browser (incl. Tracing, Replay)85.83 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.47 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.56 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)44.95 kB--
@sentry/browser (incl. sendFeedback)32.56 kB--
@sentry/browser (incl. FeedbackAsync)37.62 kB--
@sentry/browser (incl. Metrics)28.84 kB--
@sentry/browser (incl. Logs)29.06 kB--
@sentry/browser (incl. Metrics & Logs)29.76 kB--
@sentry/react29.55 kB--
@sentry/react (incl. Tracing)48.87 kB--
@sentry/vue33.18 kB--
@sentry/vue (incl. Tracing)48.56 kB--
@sentry/svelte27.78 kB--
CDN Bundle30.1 kB--
CDN Bundle (incl. Tracing)48.48 kB--
CDN Bundle (incl. Logs, Metrics)31.68 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.78 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.94 kB--
CDN Bundle (incl. Tracing, Replay)85.99 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.31 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)93.07 kB--
CDN Bundle - uncompressed89.72 kB--
CDN Bundle (incl. Tracing) - uncompressed146.59 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.43 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.57 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.19 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.83 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279.54 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed283.49 kB--
@sentry/nextjs (client)51.38 kB--
@sentry/sveltekit (client)47 kB--
@sentry/core/server80.13 kB--
@sentry/core/browser51.97 kB--
@sentry/node124.21 kB--
@sentry/node (incl. diagnostics channel injection)149.66 kB+0.01%+1 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)70.03 kB--
@sentry/node - without tracing74.38 kB+0.01%+1 B 🔺
@sentry/aws-serverless83.86 kB-0.01%-1 B 🔽
@sentry/cloudflare (withSentry) - minified196.59 kB--
@sentry/cloudflare (withSentry)483.84 kB--

View base workflow run

@github-actions

github-actionsBot 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.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,964-9,351-4%
GET With Sentry1,63718%1,663-2%
GET With Sentry (error only)6,06068%5,962+2%
POST Baseline1,184-1,196-1%
POST With Sentry56047%576-3%
POST With Sentry (error only)1,05289%1,044+1%
MYSQL Baseline3,196-3,299-3%
MYSQL With Sentry41713%481-13%
MYSQL With Sentry (error only)2,62682%2,685-2%

View base workflow run

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 84d7268 to 199fbefCompareFebruary 26, 2026 17:03
@logaretmlogaretm added this to the v11 milestone Feb 26, 2026
@logaretmlogaretm modified the milestones: v11, 11.0.0Apr 27, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 199fbef to 71f88ccCompareJuly 10, 2026 18:38
@logaretm
logaretm changed the base branch from develop to awad/nuxt-inhouse-buildJuly 10, 2026 18:42
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 6.0chore: Upgrade to TypeScript 7.0Jul 10, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d7b1418 to 912d717CompareJuly 10, 2026 18:56
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 912d717 to e54841eCompareJuly 10, 2026 19:01
@logaretm
logaretm changed the base branch from awad/nuxt-inhouse-build to awad/js-1293-drop-typescript-38-supportJuly 10, 2026 19:01
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e54841e to 481dbc6CompareJuly 11, 2026 00:56
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 7.0chore(v11): Upgrade to TypeScript 7.0Jul 11, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d26ac8a to babf1ccCompareJuly 11, 2026 03:02
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from babf1cc to 67ebba4CompareJuly 13, 2026 14:31
@logaretm
logaretm requested review from JPeer264, Lms24, isaacs and msonnb and removed request for a teamJuly 21, 2026 13:52
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from f5e614c to 71c8903CompareJuly 21, 2026 13:57
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 71c8903 to de2e7b3CompareJuly 21, 2026 14:12
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 6e0f0fa to a6fff6dCompareJuly 21, 2026 16:36
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from a6fff6d to 7db2022CompareJuly 21, 2026 16:47
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 7db2022 to e148da9CompareJuly 21, 2026 17:46
Base automatically changed from awad/js-1293-drop-typescript-38-support to developJuly 21, 2026 18:05
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e148da9 to 1afdab1CompareJuly 21, 2026 18:05
Comment threadpackages/tanstackstart/tsconfig.types.json Outdated
"inlineSources": true,
"isolatedModules": true,
"lib": ["es2020"],
"lib": ["es2020", "DOM"],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

m/q: Does this add DOM types to server-side packages?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and vice versa, node types (with types below) to browser packages?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In TS 6/7 the types aren't autoloaded from @types anymore, so we have to be explicit.

Regarding node-types-in-browser, adding node in L22 reduces the type surface which was autoloaded anyways before that change.

On the DOM side being pulled into node, I think that was also always the case because of jsdom being in @types and leaking in the dom types.

I could change this to remove DOM from the base and hand pick it where applicable, which would be a tightening but may change existing expectations we had knowingly or unknowingly. WDYT?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's fine, since it already was this way. Just didn't know/forgot about it. No need to change from my PoV

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 1afdab1 to 5376d06CompareJuly 22, 2026 13:30
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
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 5376d06 to c7576dbCompareJuly 22, 2026 14:33
@logaretm
logaretm merged commit 9f022ab into developJul 22, 2026
285 checks passed
@logaretm
logaretm deleted the awad/upgrade-to-TS-6 branch July 22, 2026 16:42
mydea added a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
JPeer264 pushed a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for freeto 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

4 participants

@logaretm@Lms24@nicohrubec@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(v11): Upgrade to TypeScript 7.0 - #19435

Merged
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6
Jul 22, 2026
Merged

chore(v11): Upgrade to TypeScript 7.0#19435
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6

Conversation

@logaretm

@logaretmlogaretm 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:

stepdevelop (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-actionsBot commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.76 kB--
@sentry/browser - with treeshaking flags26.2 kB--
@sentry/browser (incl. Tracing)46.59 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.4 kB--
@sentry/browser (incl. Tracing, Profiling)51.39 kB--
@sentry/browser (incl. Tracing, Replay)85.83 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.47 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.56 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)44.95 kB--
@sentry/browser (incl. sendFeedback)32.56 kB--
@sentry/browser (incl. FeedbackAsync)37.62 kB--
@sentry/browser (incl. Metrics)28.84 kB--
@sentry/browser (incl. Logs)29.06 kB--
@sentry/browser (incl. Metrics & Logs)29.76 kB--
@sentry/react29.55 kB--
@sentry/react (incl. Tracing)48.87 kB--
@sentry/vue33.18 kB--
@sentry/vue (incl. Tracing)48.56 kB--
@sentry/svelte27.78 kB--
CDN Bundle30.1 kB--
CDN Bundle (incl. Tracing)48.48 kB--
CDN Bundle (incl. Logs, Metrics)31.68 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.78 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.94 kB--
CDN Bundle (incl. Tracing, Replay)85.99 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.31 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)93.07 kB--
CDN Bundle - uncompressed89.72 kB--
CDN Bundle (incl. Tracing) - uncompressed146.59 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.43 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.57 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.19 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.83 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279.54 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed283.49 kB--
@sentry/nextjs (client)51.38 kB--
@sentry/sveltekit (client)47 kB--
@sentry/core/server80.13 kB--
@sentry/core/browser51.97 kB--
@sentry/node124.21 kB--
@sentry/node (incl. diagnostics channel injection)149.66 kB+0.01%+1 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)70.03 kB--
@sentry/node - without tracing74.38 kB+0.01%+1 B 🔺
@sentry/aws-serverless83.86 kB-0.01%-1 B 🔽
@sentry/cloudflare (withSentry) - minified196.59 kB--
@sentry/cloudflare (withSentry)483.84 kB--

View base workflow run

@github-actions

github-actionsBot 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.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,964-9,351-4%
GET With Sentry1,63718%1,663-2%
GET With Sentry (error only)6,06068%5,962+2%
POST Baseline1,184-1,196-1%
POST With Sentry56047%576-3%
POST With Sentry (error only)1,05289%1,044+1%
MYSQL Baseline3,196-3,299-3%
MYSQL With Sentry41713%481-13%
MYSQL With Sentry (error only)2,62682%2,685-2%

View base workflow run

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 84d7268 to 199fbefCompareFebruary 26, 2026 17:03
@logaretmlogaretm added this to the v11 milestone Feb 26, 2026
@logaretmlogaretm modified the milestones: v11, 11.0.0Apr 27, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 199fbef to 71f88ccCompareJuly 10, 2026 18:38
@logaretm
logaretm changed the base branch from develop to awad/nuxt-inhouse-buildJuly 10, 2026 18:42
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 6.0chore: Upgrade to TypeScript 7.0Jul 10, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d7b1418 to 912d717CompareJuly 10, 2026 18:56
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 912d717 to e54841eCompareJuly 10, 2026 19:01
@logaretm
logaretm changed the base branch from awad/nuxt-inhouse-build to awad/js-1293-drop-typescript-38-supportJuly 10, 2026 19:01
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e54841e to 481dbc6CompareJuly 11, 2026 00:56
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 7.0chore(v11): Upgrade to TypeScript 7.0Jul 11, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d26ac8a to babf1ccCompareJuly 11, 2026 03:02
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from babf1cc to 67ebba4CompareJuly 13, 2026 14:31
@logaretm
logaretm requested review from JPeer264, Lms24, isaacs and msonnb and removed request for a teamJuly 21, 2026 13:52
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from f5e614c to 71c8903CompareJuly 21, 2026 13:57
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 71c8903 to de2e7b3CompareJuly 21, 2026 14:12
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 6e0f0fa to a6fff6dCompareJuly 21, 2026 16:36
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from a6fff6d to 7db2022CompareJuly 21, 2026 16:47
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 7db2022 to e148da9CompareJuly 21, 2026 17:46
Base automatically changed from awad/js-1293-drop-typescript-38-support to developJuly 21, 2026 18:05
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e148da9 to 1afdab1CompareJuly 21, 2026 18:05
Comment threadpackages/tanstackstart/tsconfig.types.json Outdated
"inlineSources": true,
"isolatedModules": true,
"lib": ["es2020"],
"lib": ["es2020", "DOM"],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

m/q: Does this add DOM types to server-side packages?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and vice versa, node types (with types below) to browser packages?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In TS 6/7 the types aren't autoloaded from @types anymore, so we have to be explicit.

Regarding node-types-in-browser, adding node in L22 reduces the type surface which was autoloaded anyways before that change.

On the DOM side being pulled into node, I think that was also always the case because of jsdom being in @types and leaking in the dom types.

I could change this to remove DOM from the base and hand pick it where applicable, which would be a tightening but may change existing expectations we had knowingly or unknowingly. WDYT?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's fine, since it already was this way. Just didn't know/forgot about it. No need to change from my PoV

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 1afdab1 to 5376d06CompareJuly 22, 2026 13:30
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
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 5376d06 to c7576dbCompareJuly 22, 2026 14:33
@logaretm
logaretm merged commit 9f022ab into developJul 22, 2026
285 checks passed
@logaretm
logaretm deleted the awad/upgrade-to-TS-6 branch July 22, 2026 16:42
mydea added a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
JPeer264 pushed a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for freeto 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

4 participants

@logaretm@Lms24@nicohrubec@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(v11): Upgrade to TypeScript 7.0 - #19435

Merged
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6
Jul 22, 2026
Merged

chore(v11): Upgrade to TypeScript 7.0#19435
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6

Conversation

@logaretm

@logaretmlogaretm 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:

stepdevelop (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-actionsBot commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.76 kB--
@sentry/browser - with treeshaking flags26.2 kB--
@sentry/browser (incl. Tracing)46.59 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.4 kB--
@sentry/browser (incl. Tracing, Profiling)51.39 kB--
@sentry/browser (incl. Tracing, Replay)85.83 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.47 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.56 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)44.95 kB--
@sentry/browser (incl. sendFeedback)32.56 kB--
@sentry/browser (incl. FeedbackAsync)37.62 kB--
@sentry/browser (incl. Metrics)28.84 kB--
@sentry/browser (incl. Logs)29.06 kB--
@sentry/browser (incl. Metrics & Logs)29.76 kB--
@sentry/react29.55 kB--
@sentry/react (incl. Tracing)48.87 kB--
@sentry/vue33.18 kB--
@sentry/vue (incl. Tracing)48.56 kB--
@sentry/svelte27.78 kB--
CDN Bundle30.1 kB--
CDN Bundle (incl. Tracing)48.48 kB--
CDN Bundle (incl. Logs, Metrics)31.68 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.78 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.94 kB--
CDN Bundle (incl. Tracing, Replay)85.99 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.31 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)93.07 kB--
CDN Bundle - uncompressed89.72 kB--
CDN Bundle (incl. Tracing) - uncompressed146.59 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.43 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.57 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.19 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.83 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279.54 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed283.49 kB--
@sentry/nextjs (client)51.38 kB--
@sentry/sveltekit (client)47 kB--
@sentry/core/server80.13 kB--
@sentry/core/browser51.97 kB--
@sentry/node124.21 kB--
@sentry/node (incl. diagnostics channel injection)149.66 kB+0.01%+1 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)70.03 kB--
@sentry/node - without tracing74.38 kB+0.01%+1 B 🔺
@sentry/aws-serverless83.86 kB-0.01%-1 B 🔽
@sentry/cloudflare (withSentry) - minified196.59 kB--
@sentry/cloudflare (withSentry)483.84 kB--

View base workflow run

@github-actions

github-actionsBot 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.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,964-9,351-4%
GET With Sentry1,63718%1,663-2%
GET With Sentry (error only)6,06068%5,962+2%
POST Baseline1,184-1,196-1%
POST With Sentry56047%576-3%
POST With Sentry (error only)1,05289%1,044+1%
MYSQL Baseline3,196-3,299-3%
MYSQL With Sentry41713%481-13%
MYSQL With Sentry (error only)2,62682%2,685-2%

View base workflow run

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 84d7268 to 199fbefCompareFebruary 26, 2026 17:03
@logaretmlogaretm added this to the v11 milestone Feb 26, 2026
@logaretmlogaretm modified the milestones: v11, 11.0.0Apr 27, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 199fbef to 71f88ccCompareJuly 10, 2026 18:38
@logaretm
logaretm changed the base branch from develop to awad/nuxt-inhouse-buildJuly 10, 2026 18:42
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 6.0chore: Upgrade to TypeScript 7.0Jul 10, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d7b1418 to 912d717CompareJuly 10, 2026 18:56
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 912d717 to e54841eCompareJuly 10, 2026 19:01
@logaretm
logaretm changed the base branch from awad/nuxt-inhouse-build to awad/js-1293-drop-typescript-38-supportJuly 10, 2026 19:01
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e54841e to 481dbc6CompareJuly 11, 2026 00:56
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 7.0chore(v11): Upgrade to TypeScript 7.0Jul 11, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d26ac8a to babf1ccCompareJuly 11, 2026 03:02
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from babf1cc to 67ebba4CompareJuly 13, 2026 14:31
@logaretm
logaretm requested review from JPeer264, Lms24, isaacs and msonnb and removed request for a teamJuly 21, 2026 13:52
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from f5e614c to 71c8903CompareJuly 21, 2026 13:57
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 71c8903 to de2e7b3CompareJuly 21, 2026 14:12
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 6e0f0fa to a6fff6dCompareJuly 21, 2026 16:36
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from a6fff6d to 7db2022CompareJuly 21, 2026 16:47
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 7db2022 to e148da9CompareJuly 21, 2026 17:46
Base automatically changed from awad/js-1293-drop-typescript-38-support to developJuly 21, 2026 18:05
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e148da9 to 1afdab1CompareJuly 21, 2026 18:05
Comment threadpackages/tanstackstart/tsconfig.types.json Outdated
"inlineSources": true,
"isolatedModules": true,
"lib": ["es2020"],
"lib": ["es2020", "DOM"],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

m/q: Does this add DOM types to server-side packages?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and vice versa, node types (with types below) to browser packages?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In TS 6/7 the types aren't autoloaded from @types anymore, so we have to be explicit.

Regarding node-types-in-browser, adding node in L22 reduces the type surface which was autoloaded anyways before that change.

On the DOM side being pulled into node, I think that was also always the case because of jsdom being in @types and leaking in the dom types.

I could change this to remove DOM from the base and hand pick it where applicable, which would be a tightening but may change existing expectations we had knowingly or unknowingly. WDYT?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's fine, since it already was this way. Just didn't know/forgot about it. No need to change from my PoV

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 1afdab1 to 5376d06CompareJuly 22, 2026 13:30
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
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 5376d06 to c7576dbCompareJuly 22, 2026 14:33
@logaretm
logaretm merged commit 9f022ab into developJul 22, 2026
285 checks passed
@logaretm
logaretm deleted the awad/upgrade-to-TS-6 branch July 22, 2026 16:42
mydea added a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
JPeer264 pushed a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for freeto 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

4 participants

@logaretm@Lms24@nicohrubec@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

chore(v11): Upgrade to TypeScript 7.0 - #19435

Merged
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6
Jul 22, 2026
Merged

chore(v11): Upgrade to TypeScript 7.0#19435
logaretm merged 1 commit into
developfrom
awad/upgrade-to-TS-6

Conversation

@logaretm

@logaretmlogaretm 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:

stepdevelop (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-actionsBot commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.76 kB--
@sentry/browser - with treeshaking flags26.2 kB--
@sentry/browser (incl. Tracing)46.59 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.4 kB--
@sentry/browser (incl. Tracing, Profiling)51.39 kB--
@sentry/browser (incl. Tracing, Replay)85.83 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.47 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.56 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)44.95 kB--
@sentry/browser (incl. sendFeedback)32.56 kB--
@sentry/browser (incl. FeedbackAsync)37.62 kB--
@sentry/browser (incl. Metrics)28.84 kB--
@sentry/browser (incl. Logs)29.06 kB--
@sentry/browser (incl. Metrics & Logs)29.76 kB--
@sentry/react29.55 kB--
@sentry/react (incl. Tracing)48.87 kB--
@sentry/vue33.18 kB--
@sentry/vue (incl. Tracing)48.56 kB--
@sentry/svelte27.78 kB--
CDN Bundle30.1 kB--
CDN Bundle (incl. Tracing)48.48 kB--
CDN Bundle (incl. Logs, Metrics)31.68 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.78 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.94 kB--
CDN Bundle (incl. Tracing, Replay)85.99 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.31 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)93.07 kB--
CDN Bundle - uncompressed89.72 kB--
CDN Bundle (incl. Tracing) - uncompressed146.59 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.43 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.57 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.19 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.83 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.8 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279.54 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed283.49 kB--
@sentry/nextjs (client)51.38 kB--
@sentry/sveltekit (client)47 kB--
@sentry/core/server80.13 kB--
@sentry/core/browser51.97 kB--
@sentry/node124.21 kB--
@sentry/node (incl. diagnostics channel injection)149.66 kB+0.01%+1 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)70.03 kB--
@sentry/node - without tracing74.38 kB+0.01%+1 B 🔺
@sentry/aws-serverless83.86 kB-0.01%-1 B 🔽
@sentry/cloudflare (withSentry) - minified196.59 kB--
@sentry/cloudflare (withSentry)483.84 kB--

View base workflow run

@github-actions

github-actionsBot 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.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,964-9,351-4%
GET With Sentry1,63718%1,663-2%
GET With Sentry (error only)6,06068%5,962+2%
POST Baseline1,184-1,196-1%
POST With Sentry56047%576-3%
POST With Sentry (error only)1,05289%1,044+1%
MYSQL Baseline3,196-3,299-3%
MYSQL With Sentry41713%481-13%
MYSQL With Sentry (error only)2,62682%2,685-2%

View base workflow run

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 84d7268 to 199fbefCompareFebruary 26, 2026 17:03
@logaretmlogaretm added this to the v11 milestone Feb 26, 2026
@logaretmlogaretm modified the milestones: v11, 11.0.0Apr 27, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 199fbef to 71f88ccCompareJuly 10, 2026 18:38
@logaretm
logaretm changed the base branch from develop to awad/nuxt-inhouse-buildJuly 10, 2026 18:42
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 6.0chore: Upgrade to TypeScript 7.0Jul 10, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d7b1418 to 912d717CompareJuly 10, 2026 18:56
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 912d717 to e54841eCompareJuly 10, 2026 19:01
@logaretm
logaretm changed the base branch from awad/nuxt-inhouse-build to awad/js-1293-drop-typescript-38-supportJuly 10, 2026 19:01
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e54841e to 481dbc6CompareJuly 11, 2026 00:56
@logaretmlogaretm changed the title chore: Upgrade to TypeScript 7.0chore(v11): Upgrade to TypeScript 7.0Jul 11, 2026
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from d26ac8a to babf1ccCompareJuly 11, 2026 03:02
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from babf1cc to 67ebba4CompareJuly 13, 2026 14:31
@logaretm
logaretm requested review from JPeer264, Lms24, isaacs and msonnb and removed request for a teamJuly 21, 2026 13:52
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from f5e614c to 71c8903CompareJuly 21, 2026 13:57
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 71c8903 to de2e7b3CompareJuly 21, 2026 14:12
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch 2 times, most recently from 6e0f0fa to a6fff6dCompareJuly 21, 2026 16:36
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from a6fff6d to 7db2022CompareJuly 21, 2026 16:47
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 7db2022 to e148da9CompareJuly 21, 2026 17:46
Base automatically changed from awad/js-1293-drop-typescript-38-support to developJuly 21, 2026 18:05
@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from e148da9 to 1afdab1CompareJuly 21, 2026 18:05
Comment threadpackages/tanstackstart/tsconfig.types.json Outdated
"inlineSources": true,
"isolatedModules": true,
"lib": ["es2020"],
"lib": ["es2020", "DOM"],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

m/q: Does this add DOM types to server-side packages?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and vice versa, node types (with types below) to browser packages?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In TS 6/7 the types aren't autoloaded from @types anymore, so we have to be explicit.

Regarding node-types-in-browser, adding node in L22 reduces the type surface which was autoloaded anyways before that change.

On the DOM side being pulled into node, I think that was also always the case because of jsdom being in @types and leaking in the dom types.

I could change this to remove DOM from the base and hand pick it where applicable, which would be a tightening but may change existing expectations we had knowingly or unknowingly. WDYT?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's fine, since it already was this way. Just didn't know/forgot about it. No need to change from my PoV

@logaretm
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 1afdab1 to 5376d06CompareJuly 22, 2026 13:30
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
logaretmforce-pushed the awad/upgrade-to-TS-6 branch from 5376d06 to c7576dbCompareJuly 22, 2026 14:33
@logaretm
logaretm merged commit 9f022ab into developJul 22, 2026
285 checks passed
@logaretm
logaretm deleted the awad/upgrade-to-TS-6 branch July 22, 2026 16:42
mydea added a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
JPeer264 pushed a commit that referenced this pull request Aug 12, 2026
Rebased continuation of #19229 (original author @aklkv) onto current
`develop`, with merge conflicts resolved and the failing tests fixed.
Migrates `@sentry/ember` from the legacy v1 addon format to the [Ember
v2 addon format](https://rfcs.emberjs.com/id/0507-embroider-addons), so
the package works with both classic Ember builds and Embroider-optimized
builds and no longer depends on `@embroider/macros` at runtime. See
#19229 for the full description of the migration.
## Why a new branch
The original PR was ~1900 commits behind `develop` and conflicting.
Rather than resolve the same conflicts twice across its two commits, I
squashed them into one and rebased against the final state once.
The subtle part: the migration renamed `packages/ember/addon/` → `src/`.
Git therefore saw develop's later behavioral changes to those files as
edits to *deleted* files and did **not** surface them as conflicts.
Several develop-side changes had to be ported into the new `src/` files
by hand:
- **Span ops** (#22669, #23086) — route hooks now emit `op: 'function'`
with a `code.function.name` attribute; the runloop uses `ui.task`; the
transition span uses `router`. `instrumentRoutePerformance.ts` still
carried the old `ui.ember.route.*` ops and had to be updated.
- **URL attributes** (#22095, #22415) — `url.path` / `url.full` /
`url.template` on router spans, reconciled onto the PR's restructured
`instrumentEmberAppInstanceForPerformance.ts`.
## Build/tooling reconciliation
- Re-added the nested `typescript: ~5.8.0` devDependency pin. `develop`
upgraded to TypeScript 7 (the native compiler, which drops
`typescript/lib/tsc`), and glint's declaration build needs the classic
JS compiler — the same stop-gap `develop` already applies to ember (see
#19435). Without the pin the declaration build fails with
`ERR_PACKAGE_PATH_NOT_EXPORTED`.
- Bumped `@sentry/browser` / `@sentry/core` from the PR's stale
`10.53.1` to `10.67.0` and added `@sentry/conventions` (now imported by
the ported instrumentation).
- Removed the PR's `import/no-unresolved` oxlint rule (doesn't exist in
this repo's oxlint 1.75) and wrapped `URL_FULL` in
`filterCollectedUrl()` for the `sdk/no-unfiltered-url-attributes` rule,
which now applies since the code lives under `src/**`.
## Test fixes
The originally-failing tests came down to three things:
- **Span-op port** above — fixed the `captures correct spans for
navigation` assertions.
- **Missing `traceLifecycle: 'static'`** in the two new e2e apps
(`ember-strict-resolver`, `ember-vite`). `develop` made span-streaming
the default and disables it in the ember test apps (#22588); the new
apps predated that, so their performance tests hung waiting for
transaction events that never arrived under streaming.
- **Stale assertions** in `ember-strict-resolver`'s
`sentry-performance.test.ts`, updated from the old `ui.ember.*` op
schema to the new `router` / `function` / `ui.task` ops.
All four ember e2e apps pass (`ember-classic` 6/6, `ember-embroider`
6/6, `ember-strict-resolver` 10/10, `ember-vite` 5/5), along with the
ember unit tests, lint, and build.
Supersedes #19229.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for freeto 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

4 participants

@logaretm@Lms24@nicohrubec@andreiborza