From 99cfd9942d2f7bdde7f81b39a67fd8499e6a4dc7 Mon Sep 17 00:00:00 2001 From: Martin Sonnberger Date: Mon, 27 Jul 2026 15:42:39 +0200 Subject: [PATCH 1/2] feat(browser)!: Use `browser.paint` span op for paint entries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `paint` is not a registered op; `browser.paint` is. Only affects tracing spans — Session Replay performance entries are unchanged. Ref: JS-3105 Co-Authored-By: Claude Opus 5 (1M context) --- .../suites/tracing/metrics/web-vitals-fp-fcp/test.ts | 4 ++-- packages/browser-utils/src/metrics/browserMetrics.ts | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-fp-fcp/test.ts b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-fp-fcp/test.ts index 9351baf09a0e..cd63b699cc06 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-fp-fcp/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-fp-fcp/test.ts @@ -18,7 +18,7 @@ sentryTest('should capture FP vital.', async ({ browserName, getLocalTestUrl, pa const fpSpan = eventData.spans?.filter(({ description }) => description === 'first-paint')[0]; expect(fpSpan).toBeDefined(); - expect(fpSpan?.op).toBe('paint'); + expect(fpSpan?.op).toBe('browser.paint'); expect(fpSpan?.parent_span_id).toBe(eventData.contexts?.trace?.span_id); }); @@ -36,6 +36,6 @@ sentryTest('should capture FCP vital.', async ({ getLocalTestUrl, page }) => { const fcpSpan = eventData.spans?.filter(({ description }) => description === 'first-contentful-paint')[0]; expect(fcpSpan).toBeDefined(); - expect(fcpSpan?.op).toBe('paint'); + expect(fcpSpan?.op).toBe('browser.paint'); expect(fcpSpan?.parent_span_id).toBe(eventData.contexts?.trace?.span_id); }); diff --git a/packages/browser-utils/src/metrics/browserMetrics.ts b/packages/browser-utils/src/metrics/browserMetrics.ts index f1e28a7d50b5..dd47933c5f2c 100644 --- a/packages/browser-utils/src/metrics/browserMetrics.ts +++ b/packages/browser-utils/src/metrics/browserMetrics.ts @@ -27,6 +27,7 @@ import { getNavigationEntry } from './web-vitals/lib/getNavigationEntry'; import { getVisibilityWatcher } from './web-vitals/lib/getVisibilityWatcher'; import { DEBUG_BUILD } from '../debug-build'; import { URL_FULL } from '@sentry/conventions/attributes'; +import { BROWSER_BROWSER_PAINT_SPAN_OP } from '@sentry/conventions/op'; interface NavigatorNetworkInformation { readonly connection?: NetworkInformation; } @@ -483,7 +484,7 @@ function _addPaintSpan( startAndEndSpan(span, startTimestamp, startTimestamp + duration, { name: entry.name, - op: entry.entryType, + op: BROWSER_BROWSER_PAINT_SPAN_OP, attributes: { [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.resource.browser.metrics', }, From c12229ee0b9ef370294cc45aef12c946b9e3bd45 Mon Sep 17 00:00:00 2001 From: Martin Sonnberger Date: Tue, 4 Aug 2026 15:33:58 +0200 Subject: [PATCH 2/2] SENTRY_OP --- packages/browser-utils/src/metrics/browserMetrics.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/browser-utils/src/metrics/browserMetrics.ts b/packages/browser-utils/src/metrics/browserMetrics.ts index dd47933c5f2c..5427d568e07e 100644 --- a/packages/browser-utils/src/metrics/browserMetrics.ts +++ b/packages/browser-utils/src/metrics/browserMetrics.ts @@ -26,7 +26,7 @@ import { getActivationStart } from './web-vitals/lib/getActivationStart'; import { getNavigationEntry } from './web-vitals/lib/getNavigationEntry'; import { getVisibilityWatcher } from './web-vitals/lib/getVisibilityWatcher'; import { DEBUG_BUILD } from '../debug-build'; -import { URL_FULL } from '@sentry/conventions/attributes'; +import { SENTRY_OP, URL_FULL } from '@sentry/conventions/attributes'; import { BROWSER_BROWSER_PAINT_SPAN_OP } from '@sentry/conventions/op'; interface NavigatorNetworkInformation { readonly connection?: NetworkInformation; @@ -484,8 +484,8 @@ function _addPaintSpan( startAndEndSpan(span, startTimestamp, startTimestamp + duration, { name: entry.name, - op: BROWSER_BROWSER_PAINT_SPAN_OP, attributes: { + [SENTRY_OP]: BROWSER_BROWSER_PAINT_SPAN_OP, [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.resource.browser.metrics', }, });