Skip to content

feat(ember)!: Use function and ui.task span ops for route hooks and runloop - #22669

Open
msonnb wants to merge 6 commits into
developfrom
ms/js-3105-ember-route-hooks
Open

feat(ember)!: Use function and ui.task span ops for route hooks and runloop#22669
msonnb wants to merge 6 commits into
developfrom
ms/js-3105-ember-route-hooks

Conversation

@msonnb

@msonnb msonnb commented Jul 27, 2026

Copy link
Copy Markdown
Member

Three Ember op cleanups:

  • Route hook spans from instrumentRoutePerformance use function instead of ui.ember.route.<hook>. The hook name is preserved in code.function.name and ember.route.hook.
  • Runloop spans use ui.task instead of ui.ember.runloop.<queue>. The queue is preserved in ember.runloop.queue. Ember allows custom queues, so the suffix was unbounded.
  • Component renders use ui.render, component definition lookups use function, and the initial load uses ui.mount. Both component spans set ui.component_name.

Since spans that used to be distinguished by op suffix now share one op, the test helpers and E2E span finders identify them by attribute instead.

Note ui.mount is not in the conventions registry yet, so it is a literal with a TODO to swap in the constant once registered.

Part of #22446

@linear-code

linear-code Bot commented Jul 27, 2026

Copy link
Copy Markdown

JS-3105

@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️ Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

Path Size % Change Change
@sentry/browser 29.85 kB - -
@sentry/browser - with treeshaking flags 28.05 kB - -
@sentry/browser (incl. Tracing) 47.42 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 47.43 kB - -
@sentry/browser (incl. Tracing, Profiling) 52.16 kB - -
@sentry/browser (incl. Tracing, Replay) 86.74 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 76.16 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 91.48 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 104.11 kB - -
@sentry/browser (incl. Feedback) 47.16 kB - -
@sentry/browser (incl. sendFeedback) 34.69 kB - -
@sentry/browser (incl. FeedbackAsync) 39.78 kB - -
@sentry/browser (incl. Metrics) 30.92 kB - -
@sentry/browser (incl. Logs) 31.14 kB - -
@sentry/browser (incl. Metrics & Logs) 31.83 kB - -
@sentry/react 31.64 kB - -
@sentry/react (incl. Tracing) 49.64 kB - -
@sentry/vue 34.77 kB - -
@sentry/vue (incl. Tracing) 49.37 kB - -
@sentry/svelte 29.88 kB - -
CDN Bundle 31.89 kB - -
CDN Bundle (incl. Tracing) 47.76 kB - -
CDN Bundle (incl. Logs, Metrics) 33.44 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 49.14 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 72.8 kB - -
CDN Bundle (incl. Tracing, Replay) 85.4 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 86.68 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 91.17 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 92.47 kB - -
CDN Bundle - uncompressed 95.12 kB - -
CDN Bundle (incl. Tracing) - uncompressed 143.26 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 99.83 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 147.25 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 224.6 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 262.52 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 266.49 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 276.23 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 280.18 kB - -
@sentry/nextjs (client) 52.23 kB - -
@sentry/sveltekit (client) 47.84 kB - -
@sentry/core/server 79.73 kB - -
@sentry/core/browser 51.61 kB - -
@sentry/node 122.35 kB - -
@sentry/node/import (ESM hook with diagnostics-channel injection) 166 B - -
@sentry/node - without tracing 85.75 kB +0.01% +1 B 🔺
@sentry/aws-serverless 93.78 kB +0.01% +2 B 🔺
@sentry/cloudflare (withSentry) - minified 197.26 kB - -
@sentry/cloudflare (withSentry) 485.24 kB - -

View base workflow run

@msonnb msonnb changed the title feat(ember)!: Use function span op for route hooks feat(ember)!: Use function and ui.task span ops for route hooks and runloop Jul 27, 2026
@msonnb
msonnb force-pushed the ms/js-3105-angular-ops branch from de8350a to 7ac0b5d Compare July 27, 2026 11:44
@msonnb
msonnb force-pushed the ms/js-3105-ember-route-hooks branch from 915c173 to 62b0ee0 Compare July 27, 2026 11:44
@msonnb
msonnb force-pushed the ms/js-3105-angular-ops branch from 7ac0b5d to 6c7646e Compare July 27, 2026 12:10
@msonnb
msonnb force-pushed the ms/js-3105-ember-route-hooks branch from e55c2e0 to 7ae594a Compare July 27, 2026 12:10
@msonnb
msonnb changed the base branch from ms/js-3105-angular-ops to develop July 27, 2026 13:09
@msonnb
msonnb force-pushed the ms/js-3105-ember-route-hooks branch from 7ae594a to f9dc60e Compare July 27, 2026 13:51
msonnb and others added 5 commits July 28, 2026 15:51
Route hooks are functions, not their own op category. The hook name
moves to `code.function.name` and `ember.route.hook`.

Ref: JS-3105

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Match the `function` op and the new `code.function.name` /
`ember.route.hook` attributes. Span finders discriminate on the hook
name, since all hooks now share one op.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Queue values are phase detail, and Ember allows custom queues. The queue
moves to the `ember.runloop.queue` attribute.

Ref: JS-3105

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Component renders use `ui.render`, component definition lookups use
`function`, and the initial load uses `ui.mount`. Both component spans
set `ui.component_name`.

Ref: JS-3105

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@msonnb
msonnb force-pushed the ms/js-3105-ember-route-hooks branch from f9dc60e to d9b3e6c Compare July 28, 2026 13:52
@msonnb
msonnb marked this pull request as ready for review July 28, 2026 14:45
@msonnb
msonnb requested a review from a team as a code owner July 28, 2026 14:45
@msonnb
msonnb requested review from nicohrubec and s1gr1d and removed request for a team July 28, 2026 14:46

@nicohrubec nicohrubec left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

overall lgtm, just two questions about conventions

attributes: {
[SENTRY_OP]: BROWSER_UI_TASK_SPAN_OP,
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ui.ember',
'ember.runloop.queue': queue,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

m: does ember.runloop.queue also need to be added to @sentry/conventions?

@msonnb msonnb Jul 29, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I'm not sure whether we want to add library-specific attributes to conventions (I don't think so). If yes we'll probably wanna add it to #18895.
cc @Lms24

[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ui.ember',
[SENTRY_OP]: GENERAL_FUNCTION_SPAN_OP,
[CODE_FUNCTION_NAME]: hookName,
'ember.route.hook': hookName,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

m: same for ember.route.hook

Sign up for free to 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