Skip to content

feat(ember): Give component definition lookups their own span op - #24271

Draft
Lms24 wants to merge 2 commits into
developfrom
lms/feat-ember-ui-resolve-op
Draft

feat(ember): Give component definition lookups their own span op#24271
Lms24 wants to merge 2 commits into
developfrom
lms/feat-ember-ui-resolve-op

Conversation

@Lms24

@Lms24 Lms24 commented Sep 9, 2026

Copy link
Copy Markdown
Member

Ember spans that resolve a component definition used the function op, which infers a description of "Function execution" and loses the component name. Switching them to ui.render would have collided with the render span that follows: same name, same ui.component_name. So they now use ui.resolve, a new op proposed in getsentry/sentry-conventions#633. It is hard-coded with a TODO until that lands and we can import the const.

Route hook spans keep the route as sentry.description and are named after the hook when span streaming is on, so the name matches code.function.name. This also converts the ember-classic E2E app to span streaming and turns on enableComponentDefinitions there, which is what covers ui.resolve — that flag was off in every app, so the code path had never run in CI. ember-embroider and ember-vite still cover the static lifecycle.

🤖 Generated with Claude Code

Ember spans that resolve a component definition were using the `function`
op, which infers a span description of "Function execution" and loses the
component name. They now use `ui.resolve`, a new op proposed in
getsentry/sentry-conventions#633. The op is hard-coded with a TODO until
that lands and we can import the const.

Route hook spans keep the route as `sentry.description` and are named after
the hook when span streaming is on, so the name matches `code.function.name`
(the `function` op's name template) in both trace lifecycles.

Also converts the `ember-classic` E2E app to span streaming and turns on
`enableComponentDefinitions` there, so `ui.resolve` gets covered. That flag
was off in every app, so the code path had never run in CI. `ember-embroider`
and `ember-vite` still cover the static lifecycle.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 28.81 kB - -
@sentry/browser - with treeshaking flags 27.12 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 27.01 kB - -
@sentry/browser (incl. Tracing) 49.27 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 49.28 kB - -
@sentry/browser (incl. Tracing, Profiling) 52.21 kB - -
@sentry/browser (incl. Tracing, Replay) 88.81 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 77.99 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 93.49 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 106.44 kB - -
@sentry/browser (incl. Feedback) 46.3 kB - -
@sentry/browser (incl. sendFeedback) 33.87 kB - -
@sentry/browser (incl. FeedbackAsync) 38.99 kB - -
@sentry/browser (incl. Metrics) 29.84 kB - -
@sentry/browser (incl. Logs) 30.1 kB - -
@sentry/browser (incl. Metrics & Logs) 30.78 kB - -
@sentry/react 30.57 kB - -
@sentry/react (incl. Tracing) 51.64 kB - -
@sentry/vue 36.07 kB - -
@sentry/vue (incl. Tracing) 51.56 kB - -
@sentry/svelte 28.85 kB - -
CDN Bundle 30.56 kB - -
CDN Bundle (incl. Tracing) 49.81 kB - -
CDN Bundle (incl. Logs, Metrics) 32.83 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 51.77 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 73.48 kB - -
CDN Bundle (incl. Tracing, Replay) 87.35 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 89.26 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 93.28 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 95.27 kB - -
CDN Bundle - uncompressed 90.47 kB - -
CDN Bundle (incl. Tracing) - uncompressed 148.36 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 97.04 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 154.32 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 226.3 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 267.95 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 273.9 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 281.65 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 287.59 kB - -
@sentry/nextjs (client) 54.09 kB - -
@sentry/sveltekit (client) 49.73 kB - -
@sentry/core/server 36.99 kB - -
@sentry/core/browser 13.55 kB - -
@sentry/node 127.95 kB +0.02% +22 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 81.61 kB - -
@sentry/node - without tracing 88.73 kB +0.03% +21 B 🔺
@sentry/node - without channel injection 107.17 kB +0.02% +20 B 🔺
@sentry/aws-serverless 97.12 kB +0.03% +26 B 🔺
@sentry/cloudflare (withSentry) - minified 202.05 kB - -
@sentry/cloudflare (withSentry) 502.91 kB - -

View base workflow run

The conversion weakened every child span check: status, span_id, trace_id,
both timestamps and the exact attribute set were gone, and parent_span_id had
become a filter rather than an assertion. Two of the segment spans also lost
`url.path` and `url.full`.

`expectChildSpan` puts all of them back on all 8 child spans. Exact attribute
matching needs the SDK's own attributes stripped first, since every streamed
span carries the segment, sdk, replay and user-agent ones.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.

1 participant