Skip to content

feat(attribute): Add browser performance attributes#321

Open
Lms24 wants to merge 2 commits intomainfrom
lms/feat-browser-perf-attributes
Open

feat(attribute): Add browser performance attributes#321
Lms24 wants to merge 2 commits intomainfrom
lms/feat-browser-perf-attributes

Conversation

@Lms24
Copy link
Copy Markdown
Member

@Lms24 Lms24 commented Apr 14, 2026

Description

Adds browser performance attributes which previously were sent as performance.*. While this is namespaced, the namespace is (besides browser) unprecedented, and I'd rather have it scoped under browser.performance, given the attributes are taken from the browser's performance API.

Deprecated -> New:

  • performance.timeOrigin -> browser.performance.time_origin
  • performance.activationStart -> browser.performance.navigation.activation_start

PR Checklist

  • I have run yarn test and verified that the tests pass.
  • I have run yarn generate to generate and format code and docs.

If an attribute was added:

  • The attribute is in a namespace (e.g. nextjs.function_id, not function_id)
  • I have used the correct value for pii (i.e. maybe or true. Use false only for values that should never be scrubbed such as IDs)

If an attribute was deprecated:

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 14, 2026

Semver Impact of This PR

🟡 Minor (new features)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


New Features ✨

Attributes

  • Add app.vitals.* attributes for mobile performance by buenaflor in #313
  • Add remaining app context attributes by buenaflor in #304
  • Add sentry.mobile and sentry.main_thread attributes by buenaflor in #317
  • Add more device context attributes by buenaflor in #303
  • Add OS context attributes by buenaflor in #301
  • Add gen_ai.function_id attribute by constantinius in #308
  • Add gen_ai.context.window_size and gen_ai.context.utilization for generation spans by constantinius in #315
  • Add db.driver.name attribute by alexander-alderman-webb in #295
  • Add network connection-related attributes by Lms24 in #279
  • Add cache.write attribute by adinauer in #292
  • Add device context attributes by buenaflor in #300
  • Add app context attributes for mobile by buenaflor in #296
  • Add device memory and core count attributes by Lms24 in #281
  • Add ui.element.* attributes by Lms24 in #284
  • Add remaining TTFB, FCP and FP web vital attributes by Lms24 in #235
  • Add LCP web vital meta attributes by Lms24 in #233
  • Add CLS web vital source attribute by Lms24 in #234
  • Add core web web vital value attributes by Lms24 in #229
  • Add allow_any_value field to attribute schema by vgrozdanic in #272

Other

  • (attribute) Add browser performance attributes by Lms24 in #321
  • (http) Add http.server.request.time_in_queue attribute by dingsdax in #267
  • (resource) Add resource.deployment.environment by mjq in #266
  • Add sentry.timestamp.sequence attribute to the spec by logaretm in #262
  • Add changelog tracking to attribute definitions by ericapisani in #270

Bug Fixes 🐛

  • (attributes) Remove allow_any_value boolean attribute and allow any as type by vgrozdanic in #273
  • (gen_ai) Input and output token description by obostjancic in #261
  • (release) Run yarn install before yarn generate in pre-release script by vgrozdanic in #316
  • (sentry) Deprecate sentry.trace.parent_span_id by mjq in #287
  • Don't run changelog generation on yarn generate by Lms24 in #277
  • Avoid changelog generation recursion by Lms24 in #274

Documentation 📚

  • (sentry) Add deprecated sentry.source by s1gr1d in #288
  • Redirect from old /generated pages to new routes by Lms24 in #291
  • Remove extra yarn run format instruction by mjq in #289
  • Update README with up-to-date links by ericapisani in #258

Internal Changes 🔧

Deps

  • Bump defu from 6.1.4 to 6.1.6 by dependabot in #309
  • Bump vite from 6.4.1 to 6.4.2 by dependabot in #310
  • Bump pygments from 2.19.2 to 2.20.0 in /python by dependabot in #307
  • Bump smol-toml from 1.6.0 to 1.6.1 by dependabot in #305
  • Bump h3 from 1.15.5 to 1.15.9 by dependabot in #299
  • Bump devalue from 5.6.3 to 5.6.4 by dependabot in #286
  • Bump dompurify from 3.3.1 to 3.3.2 by dependabot in #278
  • Bump svgo from 3.3.2 to 3.3.3 by dependabot in #275
  • Bump svelte from 5.51.5 to 5.53.5 by dependabot in #271
  • Bump rollup from 4.40.1 to 4.59.0 by dependabot in #269
  • Bump svelte from 5.48.1 to 5.51.5 by dependabot in #260

Deps Dev

  • Bump tar from 7.5.10 to 7.5.11 by dependabot in #285
  • Bump tar from 7.5.8 to 7.5.10 by dependabot in #276
  • Bump tar from 7.5.7 to 7.5.8 by dependabot in #259

Other

  • (ai) Deprecate rest of ai.* attributes by constantinius in #264
  • (attributes) Ensure each attribute json has a changelog entry by Lms24 in #282
  • (docs) Upgrade to Astro 6 by Lms24 in #283
  • (gen_ai) Deprecate gen_ai.tool.input, gen_ai.tool.message, gen_ai.tool.output by constantinius in #265
  • (publish) Bump next entries in changelog when releasing by Lms24 in #290
  • (repo) Populate changelog property when running yarn create:attribute by Lms24 in #280
  • Update CONTRIBUTING with process and minor changes by Lms24 in #255
  • Pin GitHub Actions to full-length commit SHAs by joshuarli in #302
  • Wrong link to CONTRIBUTING.md in PR template by sentrivana in #298

Other

  • deprecate(attributes): Mark gen_ai.tool.type as deprecated by ericapisani in #312

🤖 This preview updates automatically when you update the PR.

@Lms24 Lms24 marked this pull request as ready for review April 15, 2026 11:55
@Lms24 Lms24 requested review from a team, cleptric, lcian, mjq and nsdeschenes as code owners April 15, 2026 11:55
@Lms24 Lms24 self-assigned this Apr 15, 2026
@Lms24 Lms24 changed the title feat(attribute): Add browser performance attributes feat(attribute): Add browser performance attributes Apr 15, 2026
Lms24 added a commit to getsentry/sentry-javascript that referenced this pull request Apr 16, 2026
## Summary

(Updated from @Lms24)

Closes #17931

When span streaming is enabled (`traceLifecycle: 'stream'`), emit web
vital values as non-standalone spans that flow through the v2 pipeline
(`afterSpanEnd` → `captureSpan()` → `SpanBuffer`).

- Emit LCP, CLS, INP as streamed spans when
`hasSpanStreamingEnabled(client)` is `true`
- LCP, CLS, INP v2 spans exclusively send new
`browser.web_vital.<vitalName>.*` attributes
- Disable standalone CLS/LCP spans when span streaming is enabled
(`!spanStreamingEnabled && enableStandaloneClsSpans`)
- Add `MAX_PLAUSIBLE_INP_DURATION` (60s) sanity check to streamed INP
path, matching the existing standalone handler
- TTFB, FCP, FP are **not** emitted as spans — they stay as pageload
span attributes but get sent with the new
`browser.web_vital.(ttfb|fcp|fp).value` attributes
- Performance meta attributes are sent with better names
(getsentry/sentry-conventions#321)
- Added integration tests
- LCP v2 spans now have a duration and are no longer point in time

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Lukas Stracke <lukas.stracke@sentry.io>
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