Skip to content

feat(core): Add url.full attribute to core fetch instrumentation - #22415

Merged
Lms24 merged 3 commits into
developfrom
lms/ref-core-url.full
Jul 21, 2026
Merged

feat(core): Add url.full attribute to core fetch instrumentation#22415
Lms24 merged 3 commits into
developfrom
lms/ref-core-url.full

Conversation

@Lms24

@Lms24 Lms24 commented Jul 21, 2026

Copy link
Copy Markdown
Member

The attribute was missing in the core fetch instrumentation, causing vercel-edge and cloudflare fetch spans to not include it. For browser, it was already added on top of the core instrumentation.

Further changes:

  • swap out hard-coded url.full attributes for constant from conventions
  • also replace some other, related hard-coded attribute names with conventions constatns
  • deprecate and replace SEMANTIC_ATTRIBUTE_URL_FULL with conventions constant

closes #22416

Comment thread packages/core/src/fetch.ts
@Lms24 Lms24 self-assigned this Jul 21, 2026
@Lms24
Lms24 force-pushed the lms/ref-core-url.full branch from 0726f56 to 50f2d36 Compare July 21, 2026 11:52
@Lms24

Lms24 commented Jul 21, 2026

Copy link
Copy Markdown
Member Author

bugbot review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 9861918. Configure here.

@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 27.76 kB +0.04% +11 B 🔺
@sentry/browser - with treeshaking flags 26.2 kB +0.05% +12 B 🔺
@sentry/browser (incl. Tracing) 46.57 kB +0.02% +7 B 🔺
@sentry/browser (incl. Tracing + Span Streaming) 48.38 kB +0.03% +10 B 🔺
@sentry/browser (incl. Tracing, Profiling) 51.38 kB +0.04% +16 B 🔺
@sentry/browser (incl. Tracing, Replay) 85.82 kB -0.02% -13 B 🔽
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 75.45 kB -0.02% -12 B 🔽
@sentry/browser (incl. Tracing, Replay with Canvas) 90.54 kB -0.02% -10 B 🔽
@sentry/browser (incl. Tracing, Replay, Feedback) 103.2 kB -0.01% -7 B 🔽
@sentry/browser (incl. Feedback) 44.95 kB +0.03% +12 B 🔺
@sentry/browser (incl. sendFeedback) 32.56 kB +0.03% +7 B 🔺
@sentry/browser (incl. FeedbackAsync) 37.69 kB -0.01% -2 B 🔽
@sentry/browser (incl. Metrics) 28.84 kB +0.02% +5 B 🔺
@sentry/browser (incl. Logs) 29.06 kB +0.03% +8 B 🔺
@sentry/browser (incl. Metrics & Logs) 29.76 kB +0.03% +7 B 🔺
@sentry/react 29.55 kB +0.03% +8 B 🔺
@sentry/react (incl. Tracing) 48.85 kB +0.03% +11 B 🔺
@sentry/vue 33.18 kB +0.03% +8 B 🔺
@sentry/vue (incl. Tracing) 48.55 kB +0.05% +21 B 🔺
@sentry/svelte 27.78 kB - -
CDN Bundle 30.16 kB +0.05% +13 B 🔺
CDN Bundle (incl. Tracing) 48.54 kB +0.03% +14 B 🔺
CDN Bundle (incl. Logs, Metrics) 31.73 kB -0.01% -2 B 🔽
CDN Bundle (incl. Tracing, Logs, Metrics) 49.84 kB +0.02% +8 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) 71 kB +0.03% +18 B 🔺
CDN Bundle (incl. Tracing, Replay) 86.04 kB -0.01% -6 B 🔽
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 87.36 kB +0.02% +9 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) 91.86 kB +0.01% +7 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 93.11 kB -0.01% -9 B 🔽
CDN Bundle - uncompressed 89.89 kB +0.02% +14 B 🔺
CDN Bundle (incl. Tracing) - uncompressed 146.72 kB -0.01% -9 B 🔽
CDN Bundle (incl. Logs, Metrics) - uncompressed 94.6 kB +0.02% +14 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 150.7 kB -0.01% -9 B 🔽
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 219.36 kB +0.01% +14 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed 265.96 kB -0.01% -9 B 🔽
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 269.92 kB -0.01% -9 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 279.66 kB -0.01% -9 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 283.61 kB -0.01% -9 B 🔽
@sentry/nextjs (client) 51.37 kB +0.02% +7 B 🔺
@sentry/sveltekit (client) 46.98 kB -0.01% -4 B 🔽
@sentry/core/server 80.28 kB +0.04% +28 B 🔺
@sentry/core/browser 66.7 kB +0.01% +2 B 🔺
@sentry/node-core 63.21 kB - -
@sentry/node 125.73 kB -0.03% -33 B 🔽
@sentry/node (incl. diagnostics channel injection) 151.22 kB +0.02% +24 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 70.03 kB -0.01% -2 B 🔽
@sentry/node/light 51.33 kB +0.04% +16 B 🔺
@sentry/node - without tracing 74.91 kB -0.01% -5 B 🔽
@sentry/aws-serverless 84.16 kB +0.02% +13 B 🔺
@sentry/cloudflare (withSentry) - minified 197.7 kB +0.02% +37 B 🔺
@sentry/cloudflare (withSentry) 486.64 kB +0.01% +28 B 🔺

View base workflow run

@Lms24
Lms24 marked this pull request as ready for review July 21, 2026 14:34
@Lms24
Lms24 requested review from a team as code owners July 21, 2026 14:34
@Lms24
Lms24 requested review from JPeer264, chargome, isaacs, logaretm, msonnb and nicohrubec and removed request for a team July 21, 2026 14:34
@Lms24
Lms24 merged commit c33e056 into develop Jul 21, 2026
314 of 315 checks passed
@Lms24
Lms24 deleted the lms/ref-core-url.full branch July 21, 2026 14:43
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 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.

Ensure SDK emits url.full attribute on http.client spans

2 participants