From c790f1c291c75ffcd700dbb36778128c12653acf Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Mon, 21 Sep 2026 14:56:55 -0400 Subject: [PATCH 1/2] feat(attributes): Deprecate the web vital report event attributes The JavaScript SDK stopped setting browser.web_vital.lcp.report_event and browser.web_vital.cls.report_event in v11, so they are deprecated without a replacement. sentry.report_event pointed at them as its successors, so its deprecation reason is updated to match. --- .../sentry-conventions/src/attributes.ts | 33 ++++++++++++++++--- javascript/sentry-conventions/src/search.ts | 4 +++ ...browser__web_vital__cls__report_event.json | 8 +++++ ...browser__web_vital__lcp__report_event.json | 8 +++++ .../sentry/sentry__report_event.json | 6 +++- python/src/sentry_conventions/attributes.py | 26 +++++++++++++-- 6 files changed, 77 insertions(+), 8 deletions(-) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index ffc1fa92d..24bc01177 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -3477,6 +3477,7 @@ export type BROWSER_VERSION_TYPE = string; * Attribute defined in OTEL: No * Visibility: public * + * @deprecated - The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the CLS value is final, so there is no report event to record. No replacement. * @example "navigation" */ export const BROWSER_WEB_VITAL_CLS_REPORT_EVENT = 'browser.web_vital.cls.report_event'; @@ -3712,6 +3713,7 @@ export type BROWSER_WEB_VITAL_LCP_RENDER_TIME_TYPE = number; * Attribute defined in OTEL: No * Visibility: public * + * @deprecated - The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the LCP value is final, so there is no report event to record. No replacement. * @example "pagehide" */ export const BROWSER_WEB_VITAL_LCP_REPORT_EVENT = 'browser.web_vital.lcp.report_event'; @@ -16106,7 +16108,7 @@ export type SENTRY_REPLAY_IS_BUFFERING_TYPE = boolean; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated - The report event is now recorded as a browser.web_vital.lcp.report_event or browser.web_vital.cls.report_event attribute. No backfill required. + * @deprecated - The report event moved to browser.web_vital.lcp.report_event and browser.web_vital.cls.report_event, which are themselves deprecated without a replacement. No backfill required. * @example "pagehide" */ export const SENTRY_REPORT_EVENT = 'sentry.report_event'; @@ -23596,7 +23598,14 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, visibility: 'public', example: 'navigation', - changelog: [{ version: '0.5.0', prs: [319], description: 'Added browser.web_vital.cls.report_event attribute' }], + deprecation: { + reason: + 'The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the CLS value is final, so there is no report event to record. No replacement.', + }, + changelog: [ + { version: 'next', description: 'Deprecated browser.web_vital.cls.report_event, which has no replacement' }, + { version: '0.5.0', prs: [319], description: 'Added browser.web_vital.cls.report_event attribute' }, + ], }, 'browser.web_vital.cls.source.': { brief: 'The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N', @@ -23726,7 +23735,14 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, visibility: 'public', example: 'pagehide', - changelog: [{ version: '0.5.0', prs: [319], description: 'Added browser.web_vital.lcp.report_event attribute' }], + deprecation: { + reason: + 'The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the LCP value is final, so there is no report event to record. No replacement.', + }, + changelog: [ + { version: 'next', description: 'Deprecated browser.web_vital.lcp.report_event, which has no replacement' }, + { version: '0.5.0', prs: [319], description: 'Added browser.web_vital.lcp.report_event attribute' }, + ], }, 'browser.web_vital.lcp.size': { brief: 'The size of the largest contentful paint element', @@ -32561,9 +32577,16 @@ export const ATTRIBUTE_METADATA: Record = { example: 'pagehide', deprecation: { reason: - 'The report event is now recorded as a browser.web_vital.lcp.report_event or browser.web_vital.cls.report_event attribute. No backfill required.', + 'The report event moved to browser.web_vital.lcp.report_event and browser.web_vital.cls.report_event, which are themselves deprecated without a replacement. No backfill required.', }, - changelog: [{ version: '0.5.0', prs: [320], description: 'Added sentry.report_event attribute' }], + changelog: [ + { + version: 'next', + description: + 'Updated the deprecation reason now that the browser.web_vital.*.report_event attributes are deprecated', + }, + { version: '0.5.0', prs: [320], description: 'Added sentry.report_event attribute' }, + ], }, 'sentry.sdk.integrations': { brief: diff --git a/javascript/sentry-conventions/src/search.ts b/javascript/sentry-conventions/src/search.ts index d39ab76d5..05c74fd8b 100644 --- a/javascript/sentry-conventions/src/search.ts +++ b/javascript/sentry-conventions/src/search.ts @@ -922,6 +922,8 @@ export const SEARCH_BROWSER__VERSION = 'browser.version'; /** * Search name for {@link attributes.BROWSER_WEB_VITAL_CLS_REPORT_EVENT}. `browser.web_vital.cls.report_event` + * + * @deprecated */ export const SEARCH_BROWSER__WEB_VITAL__CLS__REPORT_EVENT = 'browser.web_vital.cls.report_event'; @@ -972,6 +974,8 @@ export const SEARCH_BROWSER__WEB_VITAL__LCP__RENDER_TIME = 'browser.web_vital.lc /** * Search name for {@link attributes.BROWSER_WEB_VITAL_LCP_REPORT_EVENT}. `browser.web_vital.lcp.report_event` + * + * @deprecated */ export const SEARCH_BROWSER__WEB_VITAL__LCP__REPORT_EVENT = 'browser.web_vital.lcp.report_event'; diff --git a/model/attributes/browser/browser__web_vital__cls__report_event.json b/model/attributes/browser/browser__web_vital__cls__report_event.json index 3a35db570..e903a8427 100644 --- a/model/attributes/browser/browser__web_vital__cls__report_event.json +++ b/model/attributes/browser/browser__web_vital__cls__report_event.json @@ -7,8 +7,16 @@ }, "is_in_otel": false, "example": "navigation", + "deprecation": { + "reason": "The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the CLS value is final, so there is no report event to record. No replacement.", + "_status": null + }, "visibility": "public", "changelog": [ + { + "version": "next", + "description": "Deprecated browser.web_vital.cls.report_event, which has no replacement" + }, { "version": "0.5.0", "prs": [319], diff --git a/model/attributes/browser/browser__web_vital__lcp__report_event.json b/model/attributes/browser/browser__web_vital__lcp__report_event.json index 1f82da0a2..306ff9715 100644 --- a/model/attributes/browser/browser__web_vital__lcp__report_event.json +++ b/model/attributes/browser/browser__web_vital__lcp__report_event.json @@ -7,8 +7,16 @@ }, "is_in_otel": false, "example": "pagehide", + "deprecation": { + "reason": "The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the LCP value is final, so there is no report event to record. No replacement.", + "_status": null + }, "visibility": "public", "changelog": [ + { + "version": "next", + "description": "Deprecated browser.web_vital.lcp.report_event, which has no replacement" + }, { "version": "0.5.0", "prs": [319], diff --git a/model/attributes/sentry/sentry__report_event.json b/model/attributes/sentry/sentry__report_event.json index 0f517d1be..5992068df 100644 --- a/model/attributes/sentry/sentry__report_event.json +++ b/model/attributes/sentry/sentry__report_event.json @@ -8,11 +8,15 @@ "is_in_otel": false, "example": "pagehide", "deprecation": { - "reason": "The report event is now recorded as a browser.web_vital.lcp.report_event or browser.web_vital.cls.report_event attribute. No backfill required.", + "reason": "The report event moved to browser.web_vital.lcp.report_event and browser.web_vital.cls.report_event, which are themselves deprecated without a replacement. No backfill required.", "_status": null }, "visibility": "public", "changelog": [ + { + "version": "next", + "description": "Updated the deprecation reason now that the browser.web_vital.*.report_event attributes are deprecated" + }, { "version": "0.5.0", "prs": [320], diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index e5dc47e68..6b12abb4b 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -220,6 +220,8 @@ class _AttributeNamesMeta(type): "_AWS_REQUEST_ID", "AWS_REQUEST_URL", "AWS_REGION", + "BROWSER_WEB_VITAL_CLS_REPORT_EVENT", + "BROWSER_WEB_VITAL_LCP_REPORT_EVENT", "CLOUDFLARE_D1_QUERY_TYPE", "CLS_SOURCE_KEY", "CLS", @@ -2404,6 +2406,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Apply Scrubbing: manual Defined in OTEL: No Visibility: public + DEPRECATED: No replacement at this time - The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the CLS value is final, so there is no report event to record. No replacement. Example: "navigation" """ @@ -2544,6 +2547,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Apply Scrubbing: manual Defined in OTEL: No Visibility: public + DEPRECATED: No replacement at this time - The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the LCP value is final, so there is no report event to record. No replacement. Example: "pagehide" """ @@ -9481,7 +9485,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Apply Scrubbing: manual Defined in OTEL: No Visibility: public - DEPRECATED: No replacement at this time - The report event is now recorded as a browser.web_vital.lcp.report_event or browser.web_vital.cls.report_event attribute. No backfill required. + DEPRECATED: No replacement at this time - The report event moved to browser.web_vital.lcp.report_event and browser.web_vital.cls.report_event, which are themselves deprecated without a replacement. No backfill required. Example: "pagehide" """ @@ -14305,7 +14309,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, visibility=Visibility.PUBLIC, example="navigation", + deprecation=DeprecationInfo( + reason="The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the CLS value is final, so there is no report event to record. No replacement." + ), changelog=[ + ChangelogEntry( + version="next", + description="Deprecated browser.web_vital.cls.report_event, which has no replacement", + ), ChangelogEntry( version="0.5.0", prs=[319], @@ -14474,7 +14485,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, visibility=Visibility.PUBLIC, example="pagehide", + deprecation=DeprecationInfo( + reason="The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the LCP value is final, so there is no report event to record. No replacement." + ), changelog=[ + ChangelogEntry( + version="next", + description="Deprecated browser.web_vital.lcp.report_event, which has no replacement", + ), ChangelogEntry( version="0.5.0", prs=[319], @@ -24769,9 +24787,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): visibility=Visibility.PUBLIC, example="pagehide", deprecation=DeprecationInfo( - reason="The report event is now recorded as a browser.web_vital.lcp.report_event or browser.web_vital.cls.report_event attribute. No backfill required." + reason="The report event moved to browser.web_vital.lcp.report_event and browser.web_vital.cls.report_event, which are themselves deprecated without a replacement. No backfill required." ), changelog=[ + ChangelogEntry( + version="next", + description="Updated the deprecation reason now that the browser.web_vital.*.report_event attributes are deprecated", + ), ChangelogEntry( version="0.5.0", prs=[320], From 1dcc72e38ce4a7a57a7310c57c1dd7b516fc8eaa Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Mon, 21 Sep 2026 14:57:19 -0400 Subject: [PATCH 2/2] chore: Reference the PR in the changelog entries --- javascript/sentry-conventions/src/attributes.ts | 13 +++++++++++-- .../browser__web_vital__cls__report_event.json | 1 + .../browser__web_vital__lcp__report_event.json | 1 + model/attributes/sentry/sentry__report_event.json | 1 + python/src/sentry_conventions/attributes.py | 3 +++ 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 24bc01177..b18e97ce7 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -23603,7 +23603,11 @@ export const ATTRIBUTE_METADATA: Record = { 'The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the CLS value is final, so there is no report event to record. No replacement.', }, changelog: [ - { version: 'next', description: 'Deprecated browser.web_vital.cls.report_event, which has no replacement' }, + { + version: 'next', + prs: [642], + description: 'Deprecated browser.web_vital.cls.report_event, which has no replacement', + }, { version: '0.5.0', prs: [319], description: 'Added browser.web_vital.cls.report_event attribute' }, ], }, @@ -23740,7 +23744,11 @@ export const ATTRIBUTE_METADATA: Record = { 'The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the LCP value is final, so there is no report event to record. No replacement.', }, changelog: [ - { version: 'next', description: 'Deprecated browser.web_vital.lcp.report_event, which has no replacement' }, + { + version: 'next', + prs: [642], + description: 'Deprecated browser.web_vital.lcp.report_event, which has no replacement', + }, { version: '0.5.0', prs: [319], description: 'Added browser.web_vital.lcp.report_event attribute' }, ], }, @@ -32582,6 +32590,7 @@ export const ATTRIBUTE_METADATA: Record = { changelog: [ { version: 'next', + prs: [642], description: 'Updated the deprecation reason now that the browser.web_vital.*.report_event attributes are deprecated', }, diff --git a/model/attributes/browser/browser__web_vital__cls__report_event.json b/model/attributes/browser/browser__web_vital__cls__report_event.json index e903a8427..e8279749b 100644 --- a/model/attributes/browser/browser__web_vital__cls__report_event.json +++ b/model/attributes/browser/browser__web_vital__cls__report_event.json @@ -15,6 +15,7 @@ "changelog": [ { "version": "next", + "prs": [642], "description": "Deprecated browser.web_vital.cls.report_event, which has no replacement" }, { diff --git a/model/attributes/browser/browser__web_vital__lcp__report_event.json b/model/attributes/browser/browser__web_vital__lcp__report_event.json index 306ff9715..81376648d 100644 --- a/model/attributes/browser/browser__web_vital__lcp__report_event.json +++ b/model/attributes/browser/browser__web_vital__lcp__report_event.json @@ -15,6 +15,7 @@ "changelog": [ { "version": "next", + "prs": [642], "description": "Deprecated browser.web_vital.lcp.report_event, which has no replacement" }, { diff --git a/model/attributes/sentry/sentry__report_event.json b/model/attributes/sentry/sentry__report_event.json index 5992068df..da9ddbf2b 100644 --- a/model/attributes/sentry/sentry__report_event.json +++ b/model/attributes/sentry/sentry__report_event.json @@ -15,6 +15,7 @@ "changelog": [ { "version": "next", + "prs": [642], "description": "Updated the deprecation reason now that the browser.web_vital.*.report_event attributes are deprecated" }, { diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 6b12abb4b..3122bf6c3 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -14315,6 +14315,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): changelog=[ ChangelogEntry( version="next", + prs=[642], description="Deprecated browser.web_vital.cls.report_event, which has no replacement", ), ChangelogEntry( @@ -14491,6 +14492,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): changelog=[ ChangelogEntry( version="next", + prs=[642], description="Deprecated browser.web_vital.lcp.report_event, which has no replacement", ), ChangelogEntry( @@ -24792,6 +24794,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): changelog=[ ChangelogEntry( version="next", + prs=[642], description="Updated the deprecation reason now that the browser.web_vital.*.report_event attributes are deprecated", ), ChangelogEntry(