From f18c82327129e2b69a3c626720d76352015ae0c2 Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Wed, 9 Sep 2026 12:15:17 -0400 Subject: [PATCH] ref(browser)!: Remove the deprecated `enableInp` option `enableInp` was deprecated in favor of `webVitals: { ignore: ['inp'] }`. Since v11 is a major, drop it instead of carrying it further. --- MIGRATION.md | 14 +++++++++++++ .../tracesSampler-precedence/init.js | 2 +- .../tracesSampler-precedence/init.js | 2 +- .../init.js | 2 +- .../init.js | 2 +- .../init.js | 2 +- .../long-tasks-before-navigation/init.js | 2 +- .../web-vitals-inp-before-send-span/init.js | 1 - .../metrics/web-vitals-inp-late/init.js | 1 - .../metrics/web-vitals-inp-navigate/init.js | 1 - .../web-vitals-inp-parametrized-late/init.js | 1 - .../web-vitals-inp-parametrized/init.js | 1 - .../tracing/metrics/web-vitals-inp/init.js | 1 - .../src/tracing/browserTracingIntegration.ts | 21 +------------------ .../tracing/browserTracingIntegration.test.ts | 20 +++++------------- 15 files changed, 26 insertions(+), 47 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index ae5c2d0583d7..b641548dce0d 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -1472,6 +1472,20 @@ Sentry.init({ - The experimental `_experiments.enableStandaloneClsSpans` and `_experiments.enableStandaloneLcpSpans` options were removed from both `browserTracingIntegration` and `webVitalsIntegration`. CLS and LCP are no longer configurable: they are recorded as measurements on the pageload span, unless span streaming is enabled (`traceLifecycle: 'stream'`), in which case they are sent as dedicated spans. - INP is now always sent as a web vital span (streamed when span streaming is enabled, standalone otherwise) that carries its value as a `browser.web_vital.inp.value` attribute. Previously, with span streaming disabled, INP was sent as a standalone span that carried its value as a span measurement. +- The deprecated `enableInp` option of `browserTracingIntegration` was removed. INP is captured by default; to opt out, ignore it via the `webVitals` option. + +```js +// before +Sentry.init({ + integrations: [Sentry.browserTracingIntegration({ enableInp: false })], +}); + +// after +Sentry.init({ + integrations: [Sentry.browserTracingIntegration({ webVitals: { ignore: ['inp'] } })], +}); +``` + - `browserTracingIntegration` no longer captures spans created by `performance.mark()` and `performance.measure()` by default. Add `userTimingIntegration()` to continue capturing them. The `ignorePerformanceApiSpans` option moved to the new integration as `ignore`. ```js diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces-streamed/consistent-sampling/tracesSampler-precedence/init.js b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces-streamed/consistent-sampling/tracesSampler-precedence/init.js index 623db0ecc028..c7b81f40d5fc 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces-streamed/consistent-sampling/tracesSampler-precedence/init.js +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces-streamed/consistent-sampling/tracesSampler-precedence/init.js @@ -8,7 +8,7 @@ Sentry.init({ Sentry.browserTracingIntegration({ linkPreviousTrace: 'in-memory', consistentTraceSampling: true, - enableInp: false, + webVitals: { ignore: ['inp'] }, }), Sentry.spanStreamingIntegration(), ], diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/tracesSampler-precedence/init.js b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/tracesSampler-precedence/init.js index e2efc43e50f2..10d604dbec3d 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/tracesSampler-precedence/init.js +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/tracesSampler-precedence/init.js @@ -9,7 +9,7 @@ Sentry.init({ Sentry.browserTracingIntegration({ linkPreviousTrace: 'in-memory', consistentTraceSampling: true, - enableInp: false, + webVitals: { ignore: ['inp'] }, }), ], tracePropagationTargets: ['sentry-test-external.io'], diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-animation-frame-before-navigation-streamed/init.js b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-animation-frame-before-navigation-streamed/init.js index d3c861a8ae26..97abf732f9ca 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-animation-frame-before-navigation-streamed/init.js +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-animation-frame-before-navigation-streamed/init.js @@ -9,7 +9,7 @@ Sentry.init({ enableLongTask: false, enableLongAnimationFrame: true, instrumentPageLoad: false, - enableInp: false, + webVitals: { ignore: ['inp'] }, }), Sentry.spanStreamingIntegration(), ], diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-animation-frame-before-navigation/init.js b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-animation-frame-before-navigation/init.js index a8a7fc20c7f9..00d1d51f2b46 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-animation-frame-before-navigation/init.js +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-animation-frame-before-navigation/init.js @@ -10,7 +10,7 @@ Sentry.init({ enableLongTask: false, enableLongAnimationFrame: true, instrumentPageLoad: false, - enableInp: false, + webVitals: { ignore: ['inp'] }, }), ], tracesSampleRate: 1, diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-tasks-before-navigation-streamed/init.js b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-tasks-before-navigation-streamed/init.js index 9f36511d8ff5..2ec133da2c28 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-tasks-before-navigation-streamed/init.js +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-tasks-before-navigation-streamed/init.js @@ -9,7 +9,7 @@ Sentry.init({ enableLongAnimationFrame: false, instrumentPageLoad: false, instrumentNavigation: true, - enableInp: false, + webVitals: { ignore: ['inp'] }, enableLongTask: true, }), Sentry.spanStreamingIntegration(), diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-tasks-before-navigation/init.js b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-tasks-before-navigation/init.js index 63abc00dea38..e4f564304e29 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-tasks-before-navigation/init.js +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/long-tasks-before-navigation/init.js @@ -10,7 +10,7 @@ Sentry.init({ enableLongAnimationFrame: false, instrumentPageLoad: false, instrumentNavigation: true, - enableInp: false, + webVitals: { ignore: ['inp'] }, enableLongTask: true, }), ], diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-before-send-span/init.js b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-before-send-span/init.js index 5dd891ccc2f8..2503257250f7 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-before-send-span/init.js +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-before-send-span/init.js @@ -9,7 +9,6 @@ Sentry.init({ Sentry.browserTracingIntegration({ idleTimeout: 4000, enableLongTask: false, - enableInp: true, instrumentPageLoad: false, instrumentNavigation: false, }), diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-late/init.js b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-late/init.js index 398edbd14fe2..e6e8610aed8d 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-late/init.js +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-late/init.js @@ -8,7 +8,6 @@ Sentry.init({ integrations: [ Sentry.browserTracingIntegration({ enableLongTask: false, - enableInp: true, instrumentPageLoad: false, instrumentNavigation: false, }), diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-navigate/init.js b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-navigate/init.js index 822c40214adb..52fa27a1b3f1 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-navigate/init.js +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-navigate/init.js @@ -9,7 +9,6 @@ Sentry.init({ Sentry.browserTracingIntegration({ idleTimeout: 1000, enableLongTask: false, - enableInp: true, instrumentPageLoad: false, instrumentNavigation: false, }), diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized-late/init.js b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized-late/init.js index 4745a0f370de..260d24ba37d1 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized-late/init.js +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized-late/init.js @@ -8,7 +8,6 @@ Sentry.init({ integrations: [ Sentry.browserTracingIntegration({ enableLongTask: false, - enableInp: true, instrumentPageLoad: false, instrumentNavigation: false, }), diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized/init.js b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized/init.js index 3adb365703b9..43d462ab536b 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized/init.js +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized/init.js @@ -9,7 +9,6 @@ Sentry.init({ Sentry.browserTracingIntegration({ idleTimeout: 4000, enableLongTask: false, - enableInp: true, instrumentPageLoad: false, instrumentNavigation: false, }), diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp/init.js b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp/init.js index 44acb2f6c147..056dfdc4e678 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp/init.js +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp/init.js @@ -9,7 +9,6 @@ Sentry.init({ Sentry.browserTracingIntegration({ idleTimeout: 4000, enableLongTask: false, - enableInp: true, instrumentPageLoad: false, instrumentNavigation: false, }), diff --git a/packages/browser/src/tracing/browserTracingIntegration.ts b/packages/browser/src/tracing/browserTracingIntegration.ts index dfcffe20ac24..047bffa83c16 100644 --- a/packages/browser/src/tracing/browserTracingIntegration.ts +++ b/packages/browser/src/tracing/browserTracingIntegration.ts @@ -118,15 +118,6 @@ export interface BrowserTracingOptions { */ enableLongAnimationFrame: boolean; - /** - * If true, Sentry will capture first input delay and add it to the corresponding transaction. - * - * Default: true - * - * @deprecated Use {@link BrowserTracingOptions.webVitals} instead: `webVitals: { ignore: ['inp'] }`. - */ - enableInp: boolean; - /** * Options for the `webVitalsIntegration` that is auto-registered when none is present. * Ignored if you register `webVitalsIntegration` yourself. @@ -268,8 +259,6 @@ const DEFAULT_BROWSER_TRACING_OPTIONS: BrowserTracingOptions = { markBackgroundSpan: true, enableLongTask: true, enableLongAnimationFrame: true, - // oxlint-disable-next-line typescript/no-deprecated -- still honoured until it is removed - enableInp: true, ignoreResourceSpans: [], detectRedirects: true, linkPreviousTrace: 'in-memory', @@ -304,8 +293,6 @@ export const browserTracingIntegration = ((options: Partial { const client = new BrowserClient( getDefaultBrowserClientOptions({ tracesSampleRate: 1, - integrations: [browserTracingIntegration({ webVitals: { softNavigations: false } })], + integrations: [browserTracingIntegration({ webVitals: { softNavigations: false, ignore: ['inp'] } })], }), ); setCurrentClient(client); client.init(); - expect(webVitalsSpy).toHaveBeenCalledWith(expect.objectContaining({ softNavigations: false })); + expect(webVitalsSpy).toHaveBeenCalledWith(expect.objectContaining({ softNavigations: false, ignore: ['inp'] })); }); - it.each([ - ['leaves the ignore list alone when INP is enabled', {}, []], - // oxlint-disable-next-line typescript/no-deprecated - ['appends inp to the ignore list when disabled', { enableInp: false }, ['inp']], - [ - 'keeps user-provided entries when appending inp', - // oxlint-disable-next-line typescript/no-deprecated - { enableInp: false, webVitals: { ignore: ['cls' as const] } }, - ['cls', 'inp'], - ], - ])('enableInp %s', (_name, options, expected) => { + it('does not ignore any web vital by default', () => { const webVitalsSpy = vi.spyOn(webVitalsModule, 'webVitalsIntegration'); const client = new BrowserClient( getDefaultBrowserClientOptions({ tracesSampleRate: 1, - integrations: [browserTracingIntegration(options)], + integrations: [browserTracingIntegration()], }), ); setCurrentClient(client); client.init(); - expect(webVitalsSpy).toHaveBeenCalledWith(expect.objectContaining({ ignore: expected })); + expect(webVitalsSpy).toHaveBeenCalledWith(undefined); }); it('works with tracing disabled', () => {