feat(angular,ember,sveltekit)!: Use router span op for frontend routers - #23086

Merged
msonnb merged 1 commit into
developfrom
ms/router-op-frontend
Aug 6, 2026
Merged

feat(angular,ember,sveltekit)!: Use router span op for frontend routers#23086
msonnb merged 1 commit into
developfrom
ms/router-op-frontend

Conversation

@msonnb

@msonnbmsonnb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Collapse the framework-specific ui.angular.routing, ui.sveltekit.routing and ui.ember.transition span ops into the framework-neutral router op.

part of #22446

Row 28 of JS-3105: collapse the framework-specific `ui.angular.routing`,
`ui.sveltekit.routing` and `ui.ember.transition` span ops into the
framework-neutral `router` op, emitted via the `SENTRY_OP` attribute
instead of the `op` shorthand.
Framework identity is preserved on the existing `sentry.origin`
(`auto.ui.angular` / `auto.ui.sveltekit` / `auto.ui.ember`), so no detail
is lost by dropping it from the op.
`router` is not yet released in `@sentry/conventions`, so the op is set as
a string literal with a TODO to swap in the constant once available.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser30.12 kB--
@sentry/browser - with treeshaking flags28.32 kB--
@sentry/browser (incl. Tracing)47.53 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.54 kB--
@sentry/browser (incl. Tracing, Profiling)52.29 kB--
@sentry/browser (incl. Tracing, Replay)86.91 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags76.33 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)91.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)104.25 kB--
@sentry/browser (incl. Feedback)47.45 kB--
@sentry/browser (incl. sendFeedback)34.96 kB--
@sentry/browser (incl. FeedbackAsync)40.1 kB--
@sentry/browser (incl. Metrics)31.2 kB--
@sentry/browser (incl. Logs)31.41 kB--
@sentry/browser (incl. Metrics & Logs)32.11 kB--
@sentry/react31.93 kB--
@sentry/react (incl. Tracing)49.79 kB--
@sentry/vue35.2 kB--
@sentry/vue (incl. Tracing)49.51 kB--
@sentry/svelte30.14 kB--
CDN Bundle32.13 kB--
CDN Bundle (incl. Tracing)47.81 kB--
CDN Bundle (incl. Logs, Metrics)33.67 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.19 kB--
CDN Bundle (incl. Replay, Logs, Metrics)73.02 kB--
CDN Bundle (incl. Tracing, Replay)85.45 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.27 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.59 kB--
CDN Bundle - uncompressed95.27 kB--
CDN Bundle (incl. Tracing) - uncompressed142.78 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed99.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.75 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.6 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.03 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.74 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.69 kB--
@sentry/nextjs (client)52.36 kB--
@sentry/sveltekit (client)47.98 kB-0.02%-5 B 🔽
@sentry/core/server65.54 kB--
@sentry/core/browser51.82 kB--
@sentry/node120.44 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing84.09 kB+0.01%+1 B 🔺
@sentry/aws-serverless92.59 kB+0.01%+1 B 🔺
@sentry/cloudflare (withSentry) - minified217.81 kB--
@sentry/cloudflare (withSentry)537.06 kB--

View base workflow run

@msonnb
msonnb marked this pull request as ready for review August 6, 2026 11:16
@msonnb
msonnb requested a review from a team as a code ownerAugust 6, 2026 11:16
@msonnb
msonnb requested review from nicohrubec and s1gr1d and removed request for a teamAugust 6, 2026 11:16
@msonnb
msonnb merged commit 7a18fe8 into developAug 6, 2026
60 checks passed
@msonnb
msonnb deleted the ms/router-op-frontend branch August 6, 2026 11:26
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@msonnb@nicohrubec
, '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

feat(angular,ember,sveltekit)!: Use router span op for frontend routers - #23086

Merged
msonnb merged 1 commit into
developfrom
ms/router-op-frontend
Aug 6, 2026
Merged

feat(angular,ember,sveltekit)!: Use router span op for frontend routers#23086
msonnb merged 1 commit into
developfrom
ms/router-op-frontend

Conversation

@msonnb

@msonnbmsonnb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Collapse the framework-specific ui.angular.routing, ui.sveltekit.routing and ui.ember.transition span ops into the framework-neutral router op.

part of #22446

Row 28 of JS-3105: collapse the framework-specific `ui.angular.routing`,
`ui.sveltekit.routing` and `ui.ember.transition` span ops into the
framework-neutral `router` op, emitted via the `SENTRY_OP` attribute
instead of the `op` shorthand.
Framework identity is preserved on the existing `sentry.origin`
(`auto.ui.angular` / `auto.ui.sveltekit` / `auto.ui.ember`), so no detail
is lost by dropping it from the op.
`router` is not yet released in `@sentry/conventions`, so the op is set as
a string literal with a TODO to swap in the constant once available.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser30.12 kB--
@sentry/browser - with treeshaking flags28.32 kB--
@sentry/browser (incl. Tracing)47.53 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.54 kB--
@sentry/browser (incl. Tracing, Profiling)52.29 kB--
@sentry/browser (incl. Tracing, Replay)86.91 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags76.33 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)91.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)104.25 kB--
@sentry/browser (incl. Feedback)47.45 kB--
@sentry/browser (incl. sendFeedback)34.96 kB--
@sentry/browser (incl. FeedbackAsync)40.1 kB--
@sentry/browser (incl. Metrics)31.2 kB--
@sentry/browser (incl. Logs)31.41 kB--
@sentry/browser (incl. Metrics & Logs)32.11 kB--
@sentry/react31.93 kB--
@sentry/react (incl. Tracing)49.79 kB--
@sentry/vue35.2 kB--
@sentry/vue (incl. Tracing)49.51 kB--
@sentry/svelte30.14 kB--
CDN Bundle32.13 kB--
CDN Bundle (incl. Tracing)47.81 kB--
CDN Bundle (incl. Logs, Metrics)33.67 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.19 kB--
CDN Bundle (incl. Replay, Logs, Metrics)73.02 kB--
CDN Bundle (incl. Tracing, Replay)85.45 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.27 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.59 kB--
CDN Bundle - uncompressed95.27 kB--
CDN Bundle (incl. Tracing) - uncompressed142.78 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed99.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.75 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.6 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.03 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.74 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.69 kB--
@sentry/nextjs (client)52.36 kB--
@sentry/sveltekit (client)47.98 kB-0.02%-5 B 🔽
@sentry/core/server65.54 kB--
@sentry/core/browser51.82 kB--
@sentry/node120.44 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing84.09 kB+0.01%+1 B 🔺
@sentry/aws-serverless92.59 kB+0.01%+1 B 🔺
@sentry/cloudflare (withSentry) - minified217.81 kB--
@sentry/cloudflare (withSentry)537.06 kB--

View base workflow run

@msonnb
msonnb marked this pull request as ready for review August 6, 2026 11:16
@msonnb
msonnb requested a review from a team as a code ownerAugust 6, 2026 11:16
@msonnb
msonnb requested review from nicohrubec and s1gr1d and removed request for a teamAugust 6, 2026 11:16
@msonnb
msonnb merged commit 7a18fe8 into developAug 6, 2026
60 checks passed
@msonnb
msonnb deleted the ms/router-op-frontend branch August 6, 2026 11:26
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@msonnb@nicohrubec
, '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

feat(angular,ember,sveltekit)!: Use router span op for frontend routers - #23086

Merged
msonnb merged 1 commit into
developfrom
ms/router-op-frontend
Aug 6, 2026
Merged

feat(angular,ember,sveltekit)!: Use router span op for frontend routers#23086
msonnb merged 1 commit into
developfrom
ms/router-op-frontend

Conversation

@msonnb

@msonnbmsonnb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Collapse the framework-specific ui.angular.routing, ui.sveltekit.routing and ui.ember.transition span ops into the framework-neutral router op.

part of #22446

Row 28 of JS-3105: collapse the framework-specific `ui.angular.routing`,
`ui.sveltekit.routing` and `ui.ember.transition` span ops into the
framework-neutral `router` op, emitted via the `SENTRY_OP` attribute
instead of the `op` shorthand.
Framework identity is preserved on the existing `sentry.origin`
(`auto.ui.angular` / `auto.ui.sveltekit` / `auto.ui.ember`), so no detail
is lost by dropping it from the op.
`router` is not yet released in `@sentry/conventions`, so the op is set as
a string literal with a TODO to swap in the constant once available.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser30.12 kB--
@sentry/browser - with treeshaking flags28.32 kB--
@sentry/browser (incl. Tracing)47.53 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.54 kB--
@sentry/browser (incl. Tracing, Profiling)52.29 kB--
@sentry/browser (incl. Tracing, Replay)86.91 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags76.33 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)91.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)104.25 kB--
@sentry/browser (incl. Feedback)47.45 kB--
@sentry/browser (incl. sendFeedback)34.96 kB--
@sentry/browser (incl. FeedbackAsync)40.1 kB--
@sentry/browser (incl. Metrics)31.2 kB--
@sentry/browser (incl. Logs)31.41 kB--
@sentry/browser (incl. Metrics & Logs)32.11 kB--
@sentry/react31.93 kB--
@sentry/react (incl. Tracing)49.79 kB--
@sentry/vue35.2 kB--
@sentry/vue (incl. Tracing)49.51 kB--
@sentry/svelte30.14 kB--
CDN Bundle32.13 kB--
CDN Bundle (incl. Tracing)47.81 kB--
CDN Bundle (incl. Logs, Metrics)33.67 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.19 kB--
CDN Bundle (incl. Replay, Logs, Metrics)73.02 kB--
CDN Bundle (incl. Tracing, Replay)85.45 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.27 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.59 kB--
CDN Bundle - uncompressed95.27 kB--
CDN Bundle (incl. Tracing) - uncompressed142.78 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed99.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.75 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.6 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.03 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.74 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.69 kB--
@sentry/nextjs (client)52.36 kB--
@sentry/sveltekit (client)47.98 kB-0.02%-5 B 🔽
@sentry/core/server65.54 kB--
@sentry/core/browser51.82 kB--
@sentry/node120.44 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing84.09 kB+0.01%+1 B 🔺
@sentry/aws-serverless92.59 kB+0.01%+1 B 🔺
@sentry/cloudflare (withSentry) - minified217.81 kB--
@sentry/cloudflare (withSentry)537.06 kB--

View base workflow run

@msonnb
msonnb marked this pull request as ready for review August 6, 2026 11:16
@msonnb
msonnb requested a review from a team as a code ownerAugust 6, 2026 11:16
@msonnb
msonnb requested review from nicohrubec and s1gr1d and removed request for a teamAugust 6, 2026 11:16
@msonnb
msonnb merged commit 7a18fe8 into developAug 6, 2026
60 checks passed
@msonnb
msonnb deleted the ms/router-op-frontend branch August 6, 2026 11:26
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@msonnb@nicohrubec
, '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

feat(angular,ember,sveltekit)!: Use router span op for frontend routers - #23086

Merged
msonnb merged 1 commit into
developfrom
ms/router-op-frontend
Aug 6, 2026
Merged

feat(angular,ember,sveltekit)!: Use router span op for frontend routers#23086
msonnb merged 1 commit into
developfrom
ms/router-op-frontend

Conversation

@msonnb

@msonnbmsonnb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Collapse the framework-specific ui.angular.routing, ui.sveltekit.routing and ui.ember.transition span ops into the framework-neutral router op.

part of #22446

Row 28 of JS-3105: collapse the framework-specific `ui.angular.routing`,
`ui.sveltekit.routing` and `ui.ember.transition` span ops into the
framework-neutral `router` op, emitted via the `SENTRY_OP` attribute
instead of the `op` shorthand.
Framework identity is preserved on the existing `sentry.origin`
(`auto.ui.angular` / `auto.ui.sveltekit` / `auto.ui.ember`), so no detail
is lost by dropping it from the op.
`router` is not yet released in `@sentry/conventions`, so the op is set as
a string literal with a TODO to swap in the constant once available.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser30.12 kB--
@sentry/browser - with treeshaking flags28.32 kB--
@sentry/browser (incl. Tracing)47.53 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.54 kB--
@sentry/browser (incl. Tracing, Profiling)52.29 kB--
@sentry/browser (incl. Tracing, Replay)86.91 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags76.33 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)91.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)104.25 kB--
@sentry/browser (incl. Feedback)47.45 kB--
@sentry/browser (incl. sendFeedback)34.96 kB--
@sentry/browser (incl. FeedbackAsync)40.1 kB--
@sentry/browser (incl. Metrics)31.2 kB--
@sentry/browser (incl. Logs)31.41 kB--
@sentry/browser (incl. Metrics & Logs)32.11 kB--
@sentry/react31.93 kB--
@sentry/react (incl. Tracing)49.79 kB--
@sentry/vue35.2 kB--
@sentry/vue (incl. Tracing)49.51 kB--
@sentry/svelte30.14 kB--
CDN Bundle32.13 kB--
CDN Bundle (incl. Tracing)47.81 kB--
CDN Bundle (incl. Logs, Metrics)33.67 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.19 kB--
CDN Bundle (incl. Replay, Logs, Metrics)73.02 kB--
CDN Bundle (incl. Tracing, Replay)85.45 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.27 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.59 kB--
CDN Bundle - uncompressed95.27 kB--
CDN Bundle (incl. Tracing) - uncompressed142.78 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed99.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.75 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.6 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.03 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.74 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.69 kB--
@sentry/nextjs (client)52.36 kB--
@sentry/sveltekit (client)47.98 kB-0.02%-5 B 🔽
@sentry/core/server65.54 kB--
@sentry/core/browser51.82 kB--
@sentry/node120.44 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing84.09 kB+0.01%+1 B 🔺
@sentry/aws-serverless92.59 kB+0.01%+1 B 🔺
@sentry/cloudflare (withSentry) - minified217.81 kB--
@sentry/cloudflare (withSentry)537.06 kB--

View base workflow run

@msonnb
msonnb marked this pull request as ready for review August 6, 2026 11:16
@msonnb
msonnb requested a review from a team as a code ownerAugust 6, 2026 11:16
@msonnb
msonnb requested review from nicohrubec and s1gr1d and removed request for a teamAugust 6, 2026 11:16
@msonnb
msonnb merged commit 7a18fe8 into developAug 6, 2026
60 checks passed
@msonnb
msonnb deleted the ms/router-op-frontend branch August 6, 2026 11:26
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@msonnb@nicohrubec
, '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

feat(angular,ember,sveltekit)!: Use router span op for frontend routers - #23086

Merged
msonnb merged 1 commit into
developfrom
ms/router-op-frontend
Aug 6, 2026
Merged

feat(angular,ember,sveltekit)!: Use router span op for frontend routers#23086
msonnb merged 1 commit into
developfrom
ms/router-op-frontend

Conversation

@msonnb

@msonnbmsonnb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Collapse the framework-specific ui.angular.routing, ui.sveltekit.routing and ui.ember.transition span ops into the framework-neutral router op.

part of #22446

Row 28 of JS-3105: collapse the framework-specific `ui.angular.routing`,
`ui.sveltekit.routing` and `ui.ember.transition` span ops into the
framework-neutral `router` op, emitted via the `SENTRY_OP` attribute
instead of the `op` shorthand.
Framework identity is preserved on the existing `sentry.origin`
(`auto.ui.angular` / `auto.ui.sveltekit` / `auto.ui.ember`), so no detail
is lost by dropping it from the op.
`router` is not yet released in `@sentry/conventions`, so the op is set as
a string literal with a TODO to swap in the constant once available.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser30.12 kB--
@sentry/browser - with treeshaking flags28.32 kB--
@sentry/browser (incl. Tracing)47.53 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.54 kB--
@sentry/browser (incl. Tracing, Profiling)52.29 kB--
@sentry/browser (incl. Tracing, Replay)86.91 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags76.33 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)91.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)104.25 kB--
@sentry/browser (incl. Feedback)47.45 kB--
@sentry/browser (incl. sendFeedback)34.96 kB--
@sentry/browser (incl. FeedbackAsync)40.1 kB--
@sentry/browser (incl. Metrics)31.2 kB--
@sentry/browser (incl. Logs)31.41 kB--
@sentry/browser (incl. Metrics & Logs)32.11 kB--
@sentry/react31.93 kB--
@sentry/react (incl. Tracing)49.79 kB--
@sentry/vue35.2 kB--
@sentry/vue (incl. Tracing)49.51 kB--
@sentry/svelte30.14 kB--
CDN Bundle32.13 kB--
CDN Bundle (incl. Tracing)47.81 kB--
CDN Bundle (incl. Logs, Metrics)33.67 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.19 kB--
CDN Bundle (incl. Replay, Logs, Metrics)73.02 kB--
CDN Bundle (incl. Tracing, Replay)85.45 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.27 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.59 kB--
CDN Bundle - uncompressed95.27 kB--
CDN Bundle (incl. Tracing) - uncompressed142.78 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed99.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.75 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.6 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.03 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.74 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.69 kB--
@sentry/nextjs (client)52.36 kB--
@sentry/sveltekit (client)47.98 kB-0.02%-5 B 🔽
@sentry/core/server65.54 kB--
@sentry/core/browser51.82 kB--
@sentry/node120.44 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing84.09 kB+0.01%+1 B 🔺
@sentry/aws-serverless92.59 kB+0.01%+1 B 🔺
@sentry/cloudflare (withSentry) - minified217.81 kB--
@sentry/cloudflare (withSentry)537.06 kB--

View base workflow run

@msonnb
msonnb marked this pull request as ready for review August 6, 2026 11:16
@msonnb
msonnb requested a review from a team as a code ownerAugust 6, 2026 11:16
@msonnb
msonnb requested review from nicohrubec and s1gr1d and removed request for a teamAugust 6, 2026 11:16
@msonnb
msonnb merged commit 7a18fe8 into developAug 6, 2026
60 checks passed
@msonnb
msonnb deleted the ms/router-op-frontend branch August 6, 2026 11:26
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@msonnb@nicohrubec
, '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

feat(angular,ember,sveltekit)!: Use router span op for frontend routers - #23086

Merged
msonnb merged 1 commit into
developfrom
ms/router-op-frontend
Aug 6, 2026
Merged

feat(angular,ember,sveltekit)!: Use router span op for frontend routers#23086
msonnb merged 1 commit into
developfrom
ms/router-op-frontend

Conversation

@msonnb

@msonnbmsonnb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Collapse the framework-specific ui.angular.routing, ui.sveltekit.routing and ui.ember.transition span ops into the framework-neutral router op.

part of #22446

Row 28 of JS-3105: collapse the framework-specific `ui.angular.routing`,
`ui.sveltekit.routing` and `ui.ember.transition` span ops into the
framework-neutral `router` op, emitted via the `SENTRY_OP` attribute
instead of the `op` shorthand.
Framework identity is preserved on the existing `sentry.origin`
(`auto.ui.angular` / `auto.ui.sveltekit` / `auto.ui.ember`), so no detail
is lost by dropping it from the op.
`router` is not yet released in `@sentry/conventions`, so the op is set as
a string literal with a TODO to swap in the constant once available.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser30.12 kB--
@sentry/browser - with treeshaking flags28.32 kB--
@sentry/browser (incl. Tracing)47.53 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.54 kB--
@sentry/browser (incl. Tracing, Profiling)52.29 kB--
@sentry/browser (incl. Tracing, Replay)86.91 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags76.33 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)91.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)104.25 kB--
@sentry/browser (incl. Feedback)47.45 kB--
@sentry/browser (incl. sendFeedback)34.96 kB--
@sentry/browser (incl. FeedbackAsync)40.1 kB--
@sentry/browser (incl. Metrics)31.2 kB--
@sentry/browser (incl. Logs)31.41 kB--
@sentry/browser (incl. Metrics & Logs)32.11 kB--
@sentry/react31.93 kB--
@sentry/react (incl. Tracing)49.79 kB--
@sentry/vue35.2 kB--
@sentry/vue (incl. Tracing)49.51 kB--
@sentry/svelte30.14 kB--
CDN Bundle32.13 kB--
CDN Bundle (incl. Tracing)47.81 kB--
CDN Bundle (incl. Logs, Metrics)33.67 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.19 kB--
CDN Bundle (incl. Replay, Logs, Metrics)73.02 kB--
CDN Bundle (incl. Tracing, Replay)85.45 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.27 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.59 kB--
CDN Bundle - uncompressed95.27 kB--
CDN Bundle (incl. Tracing) - uncompressed142.78 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed99.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.75 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.6 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.03 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.74 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.69 kB--
@sentry/nextjs (client)52.36 kB--
@sentry/sveltekit (client)47.98 kB-0.02%-5 B 🔽
@sentry/core/server65.54 kB--
@sentry/core/browser51.82 kB--
@sentry/node120.44 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing84.09 kB+0.01%+1 B 🔺
@sentry/aws-serverless92.59 kB+0.01%+1 B 🔺
@sentry/cloudflare (withSentry) - minified217.81 kB--
@sentry/cloudflare (withSentry)537.06 kB--

View base workflow run

@msonnb
msonnb marked this pull request as ready for review August 6, 2026 11:16
@msonnb
msonnb requested a review from a team as a code ownerAugust 6, 2026 11:16
@msonnb
msonnb requested review from nicohrubec and s1gr1d and removed request for a teamAugust 6, 2026 11:16
@msonnb
msonnb merged commit 7a18fe8 into developAug 6, 2026
60 checks passed
@msonnb
msonnb deleted the ms/router-op-frontend branch August 6, 2026 11:26
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@msonnb@nicohrubec
, '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

feat(angular,ember,sveltekit)!: Use router span op for frontend routers - #23086

Merged
msonnb merged 1 commit into
developfrom
ms/router-op-frontend
Aug 6, 2026
Merged

feat(angular,ember,sveltekit)!: Use router span op for frontend routers#23086
msonnb merged 1 commit into
developfrom
ms/router-op-frontend

Conversation

@msonnb

@msonnbmsonnb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Collapse the framework-specific ui.angular.routing, ui.sveltekit.routing and ui.ember.transition span ops into the framework-neutral router op.

part of #22446

Row 28 of JS-3105: collapse the framework-specific `ui.angular.routing`,
`ui.sveltekit.routing` and `ui.ember.transition` span ops into the
framework-neutral `router` op, emitted via the `SENTRY_OP` attribute
instead of the `op` shorthand.
Framework identity is preserved on the existing `sentry.origin`
(`auto.ui.angular` / `auto.ui.sveltekit` / `auto.ui.ember`), so no detail
is lost by dropping it from the op.
`router` is not yet released in `@sentry/conventions`, so the op is set as
a string literal with a TODO to swap in the constant once available.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser30.12 kB--
@sentry/browser - with treeshaking flags28.32 kB--
@sentry/browser (incl. Tracing)47.53 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.54 kB--
@sentry/browser (incl. Tracing, Profiling)52.29 kB--
@sentry/browser (incl. Tracing, Replay)86.91 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags76.33 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)91.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)104.25 kB--
@sentry/browser (incl. Feedback)47.45 kB--
@sentry/browser (incl. sendFeedback)34.96 kB--
@sentry/browser (incl. FeedbackAsync)40.1 kB--
@sentry/browser (incl. Metrics)31.2 kB--
@sentry/browser (incl. Logs)31.41 kB--
@sentry/browser (incl. Metrics & Logs)32.11 kB--
@sentry/react31.93 kB--
@sentry/react (incl. Tracing)49.79 kB--
@sentry/vue35.2 kB--
@sentry/vue (incl. Tracing)49.51 kB--
@sentry/svelte30.14 kB--
CDN Bundle32.13 kB--
CDN Bundle (incl. Tracing)47.81 kB--
CDN Bundle (incl. Logs, Metrics)33.67 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.19 kB--
CDN Bundle (incl. Replay, Logs, Metrics)73.02 kB--
CDN Bundle (incl. Tracing, Replay)85.45 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.27 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.59 kB--
CDN Bundle - uncompressed95.27 kB--
CDN Bundle (incl. Tracing) - uncompressed142.78 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed99.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.75 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.6 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.03 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.74 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.69 kB--
@sentry/nextjs (client)52.36 kB--
@sentry/sveltekit (client)47.98 kB-0.02%-5 B 🔽
@sentry/core/server65.54 kB--
@sentry/core/browser51.82 kB--
@sentry/node120.44 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing84.09 kB+0.01%+1 B 🔺
@sentry/aws-serverless92.59 kB+0.01%+1 B 🔺
@sentry/cloudflare (withSentry) - minified217.81 kB--
@sentry/cloudflare (withSentry)537.06 kB--

View base workflow run

@msonnb
msonnb marked this pull request as ready for review August 6, 2026 11:16
@msonnb
msonnb requested a review from a team as a code ownerAugust 6, 2026 11:16
@msonnb
msonnb requested review from nicohrubec and s1gr1d and removed request for a teamAugust 6, 2026 11:16
@msonnb
msonnb merged commit 7a18fe8 into developAug 6, 2026
60 checks passed
@msonnb
msonnb deleted the ms/router-op-frontend branch August 6, 2026 11:26
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@msonnb@nicohrubec
, '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

feat(angular,ember,sveltekit)!: Use router span op for frontend routers - #23086

Merged
msonnb merged 1 commit into
developfrom
ms/router-op-frontend
Aug 6, 2026
Merged

feat(angular,ember,sveltekit)!: Use router span op for frontend routers#23086
msonnb merged 1 commit into
developfrom
ms/router-op-frontend

Conversation

@msonnb

@msonnbmsonnb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Collapse the framework-specific ui.angular.routing, ui.sveltekit.routing and ui.ember.transition span ops into the framework-neutral router op.

part of #22446

Row 28 of JS-3105: collapse the framework-specific `ui.angular.routing`,
`ui.sveltekit.routing` and `ui.ember.transition` span ops into the
framework-neutral `router` op, emitted via the `SENTRY_OP` attribute
instead of the `op` shorthand.
Framework identity is preserved on the existing `sentry.origin`
(`auto.ui.angular` / `auto.ui.sveltekit` / `auto.ui.ember`), so no detail
is lost by dropping it from the op.
`router` is not yet released in `@sentry/conventions`, so the op is set as
a string literal with a TODO to swap in the constant once available.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser30.12 kB--
@sentry/browser - with treeshaking flags28.32 kB--
@sentry/browser (incl. Tracing)47.53 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.54 kB--
@sentry/browser (incl. Tracing, Profiling)52.29 kB--
@sentry/browser (incl. Tracing, Replay)86.91 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags76.33 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)91.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)104.25 kB--
@sentry/browser (incl. Feedback)47.45 kB--
@sentry/browser (incl. sendFeedback)34.96 kB--
@sentry/browser (incl. FeedbackAsync)40.1 kB--
@sentry/browser (incl. Metrics)31.2 kB--
@sentry/browser (incl. Logs)31.41 kB--
@sentry/browser (incl. Metrics & Logs)32.11 kB--
@sentry/react31.93 kB--
@sentry/react (incl. Tracing)49.79 kB--
@sentry/vue35.2 kB--
@sentry/vue (incl. Tracing)49.51 kB--
@sentry/svelte30.14 kB--
CDN Bundle32.13 kB--
CDN Bundle (incl. Tracing)47.81 kB--
CDN Bundle (incl. Logs, Metrics)33.67 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.19 kB--
CDN Bundle (incl. Replay, Logs, Metrics)73.02 kB--
CDN Bundle (incl. Tracing, Replay)85.45 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.27 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.59 kB--
CDN Bundle - uncompressed95.27 kB--
CDN Bundle (incl. Tracing) - uncompressed142.78 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed99.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.75 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.6 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.03 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.74 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.69 kB--
@sentry/nextjs (client)52.36 kB--
@sentry/sveltekit (client)47.98 kB-0.02%-5 B 🔽
@sentry/core/server65.54 kB--
@sentry/core/browser51.82 kB--
@sentry/node120.44 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing84.09 kB+0.01%+1 B 🔺
@sentry/aws-serverless92.59 kB+0.01%+1 B 🔺
@sentry/cloudflare (withSentry) - minified217.81 kB--
@sentry/cloudflare (withSentry)537.06 kB--

View base workflow run

@msonnb
msonnb marked this pull request as ready for review August 6, 2026 11:16
@msonnb
msonnb requested a review from a team as a code ownerAugust 6, 2026 11:16
@msonnb
msonnb requested review from nicohrubec and s1gr1d and removed request for a teamAugust 6, 2026 11:16
@msonnb
msonnb merged commit 7a18fe8 into developAug 6, 2026
60 checks passed
@msonnb
msonnb deleted the ms/router-op-frontend branch August 6, 2026 11:26
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@msonnb@nicohrubec