From 7894c907f582ce15b0eb397779a95b3dc2364236 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Fri, 12 Apr 2024 14:28:27 +0200 Subject: [PATCH] feat(core): Depreacte `addTracingExtensions` Instead, users should use `registerSpanErrorInstrumentation` which is now does much less things than before. --- MIGRATION.md | 11 +++++---- .../suites/public-api/startSpan/init.js | 2 -- .../browser-utils/test/browser/utils.test.ts | 11 +-------- packages/browser/src/index.bundle.feedback.ts | 13 ++-------- packages/browser/src/index.bundle.replay.ts | 3 --- .../index.bundle.tracing.replay.feedback.ts | 6 ++--- .../src/index.bundle.tracing.replay.ts | 6 ++--- packages/browser/src/index.bundle.tracing.ts | 7 ++---- packages/browser/src/index.bundle.ts | 3 --- packages/browser/src/index.ts | 2 ++ .../src/tracing/browserTracingIntegration.ts | 4 ++-- .../test/unit/tracing/backgroundtab.test.ts | 4 +--- packages/core/src/server-runtime-client.ts | 4 ++-- packages/core/src/tracing/errors.ts | 4 ++-- packages/core/src/tracing/hubextensions.ts | 7 +++--- packages/core/src/tracing/index.ts | 2 ++ .../tracing/dynamicSamplingContext.test.ts | 8 +------ packages/core/test/lib/tracing/errors.test.ts | 16 +++++-------- .../core/test/lib/tracing/idleSpan.test.ts | 2 -- packages/core/test/lib/tracing/trace.test.ts | 24 ++++--------------- .../core/test/lib/utils/spanUtils.test.ts | 2 -- .../integration-shims/src/BrowserTracing.ts | 5 ---- packages/integration-shims/src/index.ts | 5 +--- .../src/common/utils/edgeWrapperUtils.ts | 2 -- .../common/withServerActionInstrumentation.ts | 10 +------- .../src/common/wrapApiHandlerWithSentry.ts | 3 --- .../wrapApiHandlerWithSentryVercelCrons.ts | 3 +-- .../wrapAppGetInitialPropsWithSentry.ts | 10 +------- .../wrapDocumentGetInitialPropsWithSentry.ts | 3 --- .../wrapErrorGetInitialPropsWithSentry.ts | 10 +------- .../wrapGenerationFunctionWithSentry.ts | 2 -- .../common/wrapGetInitialPropsWithSentry.ts | 10 +------- .../wrapGetServerSidePropsWithSentry.ts | 10 +------- .../common/wrapGetStaticPropsWithSentry.ts | 3 --- .../src/common/wrapPageComponentWithSentry.ts | 3 +-- .../src/common/wrapRouteHandlerWithSentry.ts | 3 --- .../common/wrapServerComponentWithSentry.ts | 2 -- packages/nextjs/src/edge/index.ts | 4 ++-- packages/nextjs/src/server/index.ts | 4 +--- .../nextjs/test/config/withSentry.test.ts | 6 +---- packages/nextjs/test/config/wrappers.test.ts | 6 +---- .../opentelemetry/test/propagator.test.ts | 6 +---- packages/svelte/test/performance.test.ts | 4 +--- packages/sveltekit/test/client/load.test.ts | 4 ---- packages/sveltekit/test/server/handle.test.ts | 5 ---- packages/sveltekit/test/server/load.test.ts | 5 ---- 46 files changed, 55 insertions(+), 214 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index 046906b2f0fd..d64f3fe03374 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -65,7 +65,7 @@ We've removed the following packages: `@sentry/tracing` has been removed and will no longer be published. See [below](./MIGRATION.md/#3-removal-of-deprecated-apis) for more details. -For Browser SDKs you can import `BrowserTracing` from the SDK directly: +For Browser SDKs you can import `browserTracingIntegration` from the SDK directly: ```js // v7 @@ -86,12 +86,13 @@ import * as Sentry from '@sentry/browser'; Sentry.init({ dsn: '__DSN__', tracesSampleRate: 1.0, - integrations: [new Sentry.BrowserTracing()], + integrations: [Sentry.browserTracingIntegration()], }); ``` -If you were importing `@sentry/tracing` for the side effect, you can now use `Sentry.addTracingExtensions()` to add the -tracing extensions to the SDK. `addTracingExtensions` replaces the `addExtensionMethods` method from `@sentry/tracing`. +If you don't want to use `browserTracingIntegration` but still manually start spans, you can now use +`Sentry.registerSpanErrorInstrumentation()` to setup handlers for span instrumentation. +`registerSpanErrorInstrumentation` replaces the `addExtensionMethods` method from `@sentry/tracing`. ```js // v7 @@ -108,7 +109,7 @@ Sentry.init({ // v8 import * as Sentry from '@sentry/browser'; -Sentry.addTracingExtensions(); +Sentry.registerSpanErrorInstrumentation(); Sentry.init({ dsn: '__DSN__', diff --git a/dev-packages/browser-integration-tests/suites/public-api/startSpan/init.js b/dev-packages/browser-integration-tests/suites/public-api/startSpan/init.js index 3fb0df7a75d4..3364667c960c 100644 --- a/dev-packages/browser-integration-tests/suites/public-api/startSpan/init.js +++ b/dev-packages/browser-integration-tests/suites/public-api/startSpan/init.js @@ -2,8 +2,6 @@ import * as Sentry from '@sentry/browser'; window.Sentry = Sentry; -Sentry.addTracingExtensions(); - Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', tracesSampleRate: 1.0, diff --git a/packages/browser-utils/test/browser/utils.test.ts b/packages/browser-utils/test/browser/utils.test.ts index 56f06f222366..bb7a757e4b6a 100644 --- a/packages/browser-utils/test/browser/utils.test.ts +++ b/packages/browser-utils/test/browser/utils.test.ts @@ -1,18 +1,9 @@ -import { - SentrySpan, - addTracingExtensions, - getCurrentScope, - getIsolationScope, - setCurrentClient, - spanToJSON, -} from '@sentry/core'; +import { SentrySpan, getCurrentScope, getIsolationScope, setCurrentClient, spanToJSON } from '@sentry/core'; import { startAndEndSpan } from '../../src/metrics/utils'; import { TestClient, getDefaultClientOptions } from '../utils/TestClient'; describe('startAndEndSpan()', () => { beforeEach(() => { - addTracingExtensions(); - getCurrentScope().clear(); getIsolationScope().clear(); diff --git a/packages/browser/src/index.bundle.feedback.ts b/packages/browser/src/index.bundle.feedback.ts index 649011bd82ed..850da7bf1e26 100644 --- a/packages/browser/src/index.bundle.feedback.ts +++ b/packages/browser/src/index.bundle.feedback.ts @@ -1,9 +1,4 @@ -// This is exported so the loader does not fail when switching off Replay/Tracing -import { - addTracingExtensionsShim, - browserTracingIntegrationShim, - replayIntegrationShim, -} from '@sentry-internal/integration-shims'; +import { browserTracingIntegrationShim, replayIntegrationShim } from '@sentry-internal/integration-shims'; export * from './index.bundle.base'; @@ -14,8 +9,4 @@ export { getFeedback, } from '@sentry-internal/feedback'; -export { - browserTracingIntegrationShim as browserTracingIntegration, - addTracingExtensionsShim as addTracingExtensions, - replayIntegrationShim as replayIntegration, -}; +export { browserTracingIntegrationShim as browserTracingIntegration, replayIntegrationShim as replayIntegration }; diff --git a/packages/browser/src/index.bundle.replay.ts b/packages/browser/src/index.bundle.replay.ts index bdc776374398..3a26a2db77ac 100644 --- a/packages/browser/src/index.bundle.replay.ts +++ b/packages/browser/src/index.bundle.replay.ts @@ -1,6 +1,4 @@ -// This is exported so the loader does not fail when switching off Replay/Tracing import { - addTracingExtensionsShim, browserTracingIntegrationShim, feedbackIntegrationShim, feedbackModalIntegrationShim, @@ -13,7 +11,6 @@ export { replayIntegration } from '@sentry-internal/replay'; export { browserTracingIntegrationShim as browserTracingIntegration, - addTracingExtensionsShim as addTracingExtensions, feedbackIntegrationShim as feedbackIntegration, feedbackModalIntegrationShim as feedbackModalIntegration, feedbackScreenshotIntegrationShim as feedbackScreenshotIntegration, diff --git a/packages/browser/src/index.bundle.tracing.replay.feedback.ts b/packages/browser/src/index.bundle.tracing.replay.feedback.ts index feaedf21e8d4..4c9c1e716534 100644 --- a/packages/browser/src/index.bundle.tracing.replay.feedback.ts +++ b/packages/browser/src/index.bundle.tracing.replay.feedback.ts @@ -1,7 +1,6 @@ -import { addTracingExtensions } from '@sentry/core'; +import { registerSpanErrorInstrumentation } from '@sentry/core'; -// We are patching the global object with our hub extension methods -addTracingExtensions(); +registerSpanErrorInstrumentation(); export * from './index.bundle.base'; @@ -14,7 +13,6 @@ export { withActiveSpan, getSpanDescendants, setMeasurement, - addTracingExtensions, } from '@sentry/core'; export { diff --git a/packages/browser/src/index.bundle.tracing.replay.ts b/packages/browser/src/index.bundle.tracing.replay.ts index fbf0e24faa73..1b986f9e794a 100644 --- a/packages/browser/src/index.bundle.tracing.replay.ts +++ b/packages/browser/src/index.bundle.tracing.replay.ts @@ -3,10 +3,9 @@ import { feedbackModalIntegrationShim, feedbackScreenshotIntegrationShim, } from '@sentry-internal/integration-shims'; -import { addTracingExtensions } from '@sentry/core'; +import { registerSpanErrorInstrumentation } from '@sentry/core'; -// We are patching the global object with our hub extension methods -addTracingExtensions(); +registerSpanErrorInstrumentation(); export * from './index.bundle.base'; @@ -19,7 +18,6 @@ export { withActiveSpan, getSpanDescendants, setMeasurement, - addTracingExtensions, } from '@sentry/core'; export { diff --git a/packages/browser/src/index.bundle.tracing.ts b/packages/browser/src/index.bundle.tracing.ts index 66d1df7792fe..f956bc4db1f6 100644 --- a/packages/browser/src/index.bundle.tracing.ts +++ b/packages/browser/src/index.bundle.tracing.ts @@ -1,14 +1,12 @@ -// This is exported so the loader does not fail when switching off Replay import { feedbackIntegrationShim, feedbackModalIntegrationShim, feedbackScreenshotIntegrationShim, replayIntegrationShim, } from '@sentry-internal/integration-shims'; -import { addTracingExtensions } from '@sentry/core'; +import { registerSpanErrorInstrumentation } from '@sentry/core'; -// We are patching the global object with our hub extension methods -addTracingExtensions(); +registerSpanErrorInstrumentation(); export * from './index.bundle.base'; @@ -21,7 +19,6 @@ export { withActiveSpan, getSpanDescendants, setMeasurement, - addTracingExtensions, } from '@sentry/core'; export { diff --git a/packages/browser/src/index.bundle.ts b/packages/browser/src/index.bundle.ts index ce04413b4053..9433e3605c3b 100644 --- a/packages/browser/src/index.bundle.ts +++ b/packages/browser/src/index.bundle.ts @@ -1,6 +1,4 @@ -// This is exported so the loader does not fail when switching off Replay/Tracing import { - addTracingExtensionsShim, browserTracingIntegrationShim, feedbackIntegrationShim, feedbackModalIntegrationShim, @@ -11,7 +9,6 @@ import { export * from './index.bundle.base'; export { - addTracingExtensionsShim as addTracingExtensions, browserTracingIntegrationShim as browserTracingIntegration, feedbackIntegrationShim as feedbackIntegration, feedbackModalIntegrationShim as feedbackModalIntegration, diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index 1bdee34b1c6a..455214f60816 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -49,7 +49,9 @@ export { } from './tracing/browserTracingIntegration'; export type { RequestInstrumentationOptions } from './tracing/request'; export { + // eslint-disable-next-line deprecation/deprecation addTracingExtensions, + registerSpanErrorInstrumentation, getActiveSpan, getRootSpan, startSpan, diff --git a/packages/browser/src/tracing/browserTracingIntegration.ts b/packages/browser/src/tracing/browserTracingIntegration.ts index d41073f46191..d1b4a90d6f97 100644 --- a/packages/browser/src/tracing/browserTracingIntegration.ts +++ b/packages/browser/src/tracing/browserTracingIntegration.ts @@ -10,13 +10,13 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, TRACING_DEFAULTS, - addTracingExtensions, continueTrace, getActiveSpan, getClient, getCurrentScope, getIsolationScope, getRootSpan, + registerSpanErrorInstrumentation, spanToJSON, startIdleSpan, withScope, @@ -153,7 +153,7 @@ const DEFAULT_BROWSER_TRACING_OPTIONS: BrowserTracingOptions = { * We explicitly export the proper type here, as this has to be extended in some cases. */ export const browserTracingIntegration = ((_options: Partial = {}) => { - addTracingExtensions(); + registerSpanErrorInstrumentation(); const options = { ...DEFAULT_BROWSER_TRACING_OPTIONS, diff --git a/packages/browser/test/unit/tracing/backgroundtab.test.ts b/packages/browser/test/unit/tracing/backgroundtab.test.ts index d31f53584521..2c998744a723 100644 --- a/packages/browser/test/unit/tracing/backgroundtab.test.ts +++ b/packages/browser/test/unit/tracing/backgroundtab.test.ts @@ -1,4 +1,4 @@ -import { addTracingExtensions, getCurrentScope } from '@sentry/core'; +import { getCurrentScope } from '@sentry/core'; import { setCurrentClient } from '@sentry/core'; import { TextDecoder, TextEncoder } from 'util'; @@ -30,8 +30,6 @@ describe('registerBackgroundTabDetection', () => { setCurrentClient(client); client.init(); - addTracingExtensions(); - global.document.addEventListener = jest.fn((event, callback) => { events[event] = callback; }); diff --git a/packages/core/src/server-runtime-client.ts b/packages/core/src/server-runtime-client.ts index 9cd05374ddd3..396e805e7fb5 100644 --- a/packages/core/src/server-runtime-client.ts +++ b/packages/core/src/server-runtime-client.ts @@ -20,9 +20,9 @@ import { DEBUG_BUILD } from './debug-build'; import type { Scope } from './scope'; import { SessionFlusher } from './sessionflusher'; import { - addTracingExtensions, getDynamicSamplingContextFromClient, getDynamicSamplingContextFromSpan, + registerSpanErrorInstrumentation, } from './tracing'; import { _getSpanForScope } from './utils/spanOnScope'; import { getRootSpan, spanToTraceContext } from './utils/spanUtils'; @@ -47,7 +47,7 @@ export class ServerRuntimeClient< */ public constructor(options: O) { // Server clients always support tracing - addTracingExtensions(); + registerSpanErrorInstrumentation(); super(options); } diff --git a/packages/core/src/tracing/errors.ts b/packages/core/src/tracing/errors.ts index de184c01391f..835038175331 100644 --- a/packages/core/src/tracing/errors.ts +++ b/packages/core/src/tracing/errors.ts @@ -16,9 +16,9 @@ export function _resetErrorsInstrumented(): void { } /** - * Configures global error listeners + * Ensure that global errors automatically set the active span status. */ -export function registerErrorInstrumentation(): void { +export function registerSpanErrorInstrumentation(): void { if (errorsInstrumented) { return; } diff --git a/packages/core/src/tracing/hubextensions.ts b/packages/core/src/tracing/hubextensions.ts index 394a2be026fe..3b08bc16a319 100644 --- a/packages/core/src/tracing/hubextensions.ts +++ b/packages/core/src/tracing/hubextensions.ts @@ -1,9 +1,8 @@ -import { registerErrorInstrumentation } from './errors'; +import { registerSpanErrorInstrumentation } from './errors'; /** - * Adds tracing extensions. - * TODO (v8): Do we still need this?? Can we solve this differently? + * @deprecated Use `registerSpanErrorInstrumentation()` instead. In v9, this function will be removed. Note that you don't need to call this in Node-based SDKs or when using `browserTracingIntegration`. */ export function addTracingExtensions(): void { - registerErrorInstrumentation(); + registerSpanErrorInstrumentation(); } diff --git a/packages/core/src/tracing/index.ts b/packages/core/src/tracing/index.ts index a01fca60316a..e1925c4b16d5 100644 --- a/packages/core/src/tracing/index.ts +++ b/packages/core/src/tracing/index.ts @@ -1,4 +1,6 @@ +export { registerSpanErrorInstrumentation } from './errors'; export { setCapturedScopesOnSpan, getCapturedScopesOnSpan } from './utils'; +// eslint-disable-next-line deprecation/deprecation export { addTracingExtensions } from './hubextensions'; export { startIdleSpan, TRACING_DEFAULTS } from './idleSpan'; export { SentrySpan } from './sentrySpan'; diff --git a/packages/core/test/lib/tracing/dynamicSamplingContext.test.ts b/packages/core/test/lib/tracing/dynamicSamplingContext.test.ts index 329d13c769af..107c039f948c 100644 --- a/packages/core/test/lib/tracing/dynamicSamplingContext.test.ts +++ b/packages/core/test/lib/tracing/dynamicSamplingContext.test.ts @@ -4,12 +4,7 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, setCurrentClient, } from '../../../src'; -import { - SentrySpan, - addTracingExtensions, - getDynamicSamplingContextFromSpan, - startInactiveSpan, -} from '../../../src/tracing'; +import { SentrySpan, getDynamicSamplingContextFromSpan, startInactiveSpan } from '../../../src/tracing'; import { freezeDscOnSpan } from '../../../src/tracing/dynamicSamplingContext'; import { TestClient, getDefaultTestClientOptions } from '../../mocks/client'; @@ -19,7 +14,6 @@ describe('getDynamicSamplingContextFromSpan', () => { const client = new TestClient(options); setCurrentClient(client); client.init(); - addTracingExtensions(); }); afterEach(() => { diff --git a/packages/core/test/lib/tracing/errors.test.ts b/packages/core/test/lib/tracing/errors.test.ts index 76c4aa9609f2..3e3f85ef73b7 100644 --- a/packages/core/test/lib/tracing/errors.test.ts +++ b/packages/core/test/lib/tracing/errors.test.ts @@ -1,7 +1,7 @@ import type { HandlerDataError, HandlerDataUnhandledRejection } from '@sentry/types'; -import { addTracingExtensions, setCurrentClient, spanToJSON, startInactiveSpan, startSpan } from '../../../src'; +import { setCurrentClient, spanToJSON, startInactiveSpan, startSpan } from '../../../src'; -import { _resetErrorsInstrumented, registerErrorInstrumentation } from '../../../src/tracing/errors'; +import { _resetErrorsInstrumented, registerSpanErrorInstrumentation } from '../../../src/tracing/errors'; import { TestClient, getDefaultTestClientOptions } from '../../mocks/client'; const mockAddGlobalErrorInstrumentationHandler = jest.fn(); @@ -25,10 +25,6 @@ jest.mock('@sentry/utils', () => { }; }); -beforeAll(() => { - addTracingExtensions(); -}); - describe('registerErrorHandlers()', () => { beforeEach(() => { mockAddGlobalErrorInstrumentationHandler.mockClear(); @@ -41,7 +37,7 @@ describe('registerErrorHandlers()', () => { }); it('registers error instrumentation', () => { - registerErrorInstrumentation(); + registerSpanErrorInstrumentation(); expect(mockAddGlobalErrorInstrumentationHandler).toHaveBeenCalledTimes(1); expect(mockAddGlobalUnhandledRejectionInstrumentationHandler).toHaveBeenCalledTimes(1); expect(mockAddGlobalErrorInstrumentationHandler).toHaveBeenCalledWith(expect.any(Function)); @@ -49,7 +45,7 @@ describe('registerErrorHandlers()', () => { }); it('does not set status if transaction is not on scope', () => { - registerErrorInstrumentation(); + registerSpanErrorInstrumentation(); const transaction = startInactiveSpan({ name: 'test' })!; expect(spanToJSON(transaction).status).toBe(undefined); @@ -64,7 +60,7 @@ describe('registerErrorHandlers()', () => { }); it('sets status for transaction on scope on error', () => { - registerErrorInstrumentation(); + registerSpanErrorInstrumentation(); startSpan({ name: 'test' }, span => { mockErrorCallback({} as HandlerDataError); @@ -73,7 +69,7 @@ describe('registerErrorHandlers()', () => { }); it('sets status for transaction on scope on unhandledrejection', () => { - registerErrorInstrumentation(); + registerSpanErrorInstrumentation(); startSpan({ name: 'test' }, span => { mockUnhandledRejectionCallback({}); diff --git a/packages/core/test/lib/tracing/idleSpan.test.ts b/packages/core/test/lib/tracing/idleSpan.test.ts index a0d5b5bf3123..5896e80654e5 100644 --- a/packages/core/test/lib/tracing/idleSpan.test.ts +++ b/packages/core/test/lib/tracing/idleSpan.test.ts @@ -5,7 +5,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, SentryNonRecordingSpan, SentrySpan, - addTracingExtensions, getActiveSpan, getClient, getCurrentScope, @@ -24,7 +23,6 @@ const dsn = 'https://123@sentry.io/42'; describe('startIdleSpan', () => { beforeEach(() => { jest.useFakeTimers(); - addTracingExtensions(); getCurrentScope().clear(); getIsolationScope().clear(); diff --git a/packages/core/test/lib/tracing/trace.test.ts b/packages/core/test/lib/tracing/trace.test.ts index 8fe6de43f219..b4b73307e174 100644 --- a/packages/core/test/lib/tracing/trace.test.ts +++ b/packages/core/test/lib/tracing/trace.test.ts @@ -3,7 +3,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, Scope, - addTracingExtensions, getCurrentScope, getGlobalScope, getIsolationScope, @@ -17,6 +16,7 @@ import { getAsyncContextStrategy } from '../../../src/hub'; import { SentrySpan, continueTrace, + registerSpanErrorInstrumentation, startInactiveSpan, startSpan, startSpanManual, @@ -28,10 +28,6 @@ import { _setSpanForScope } from '../../../src/utils/spanOnScope'; import { getActiveSpan, getRootSpan, getSpanDescendants, spanIsSampled } from '../../../src/utils/spanUtils'; import { TestClient, getDefaultTestClientOptions } from '../../mocks/client'; -beforeAll(() => { - addTracingExtensions(); -}); - const enum Type { Sync = 'sync', Async = 'async', @@ -41,7 +37,7 @@ let client: TestClient; describe('startSpan', () => { beforeEach(() => { - addTracingExtensions(); + registerSpanErrorInstrumentation(); getCurrentScope().clear(); getIsolationScope().clear(); @@ -559,7 +555,7 @@ describe('startSpan', () => { describe('startSpanManual', () => { beforeEach(() => { - addTracingExtensions(); + registerSpanErrorInstrumentation(); getCurrentScope().clear(); getIsolationScope().clear(); @@ -878,7 +874,7 @@ describe('startSpanManual', () => { describe('startInactiveSpan', () => { beforeEach(() => { - addTracingExtensions(); + registerSpanErrorInstrumentation(); getCurrentScope().clear(); getIsolationScope().clear(); @@ -1218,8 +1214,6 @@ describe('startInactiveSpan', () => { describe('continueTrace', () => { beforeEach(() => { - addTracingExtensions(); - getCurrentScope().clear(); getIsolationScope().clear(); getGlobalScope().clear(); @@ -1335,8 +1329,6 @@ describe('continueTrace', () => { describe('getActiveSpan', () => { beforeEach(() => { - addTracingExtensions(); - getCurrentScope().clear(); getIsolationScope().clear(); getGlobalScope().clear(); @@ -1384,10 +1376,6 @@ describe('getActiveSpan', () => { }); describe('withActiveSpan()', () => { - beforeAll(() => { - addTracingExtensions(); - }); - beforeEach(() => { getCurrentScope().clear(); getIsolationScope().clear(); @@ -1460,8 +1448,6 @@ describe('withActiveSpan()', () => { describe('span hooks', () => { beforeEach(() => { - addTracingExtensions(); - getCurrentScope().clear(); getIsolationScope().clear(); getGlobalScope().clear(); @@ -1511,8 +1497,6 @@ describe('span hooks', () => { describe('suppressTracing', () => { beforeEach(() => { - addTracingExtensions(); - getCurrentScope().clear(); getIsolationScope().clear(); getGlobalScope().clear(); diff --git a/packages/core/test/lib/utils/spanUtils.test.ts b/packages/core/test/lib/utils/spanUtils.test.ts index 9020a6e59229..2a4850947e80 100644 --- a/packages/core/test/lib/utils/spanUtils.test.ts +++ b/packages/core/test/lib/utils/spanUtils.test.ts @@ -7,7 +7,6 @@ import { SPAN_STATUS_OK, SPAN_STATUS_UNSET, SentrySpan, - addTracingExtensions, setCurrentClient, spanToTraceHeader, startInactiveSpan, @@ -224,7 +223,6 @@ describe('getRootSpan', () => { beforeEach(() => { const client = new TestClient(getDefaultTestClientOptions({ tracesSampleRate: 1 })); setCurrentClient(client); - addTracingExtensions(); }); it('returns the root span of a span that is a root span', () => { diff --git a/packages/integration-shims/src/BrowserTracing.ts b/packages/integration-shims/src/BrowserTracing.ts index 7fa357dffabf..cd6ed88060a6 100644 --- a/packages/integration-shims/src/BrowserTracing.ts +++ b/packages/integration-shims/src/BrowserTracing.ts @@ -16,8 +16,3 @@ export const browserTracingIntegrationShim = defineIntegration((_options?: unkno name: 'BrowserTracing', }; }); - -/** Shim function */ -export function addTracingExtensionsShim(): void { - // noop -} diff --git a/packages/integration-shims/src/index.ts b/packages/integration-shims/src/index.ts index 457761f0778e..2d1186017d4e 100644 --- a/packages/integration-shims/src/index.ts +++ b/packages/integration-shims/src/index.ts @@ -4,7 +4,4 @@ export { feedbackScreenshotIntegrationShim, } from './Feedback'; export { replayIntegrationShim } from './Replay'; -export { - browserTracingIntegrationShim, - addTracingExtensionsShim, -} from './BrowserTracing'; +export { browserTracingIntegrationShim } from './BrowserTracing'; diff --git a/packages/nextjs/src/common/utils/edgeWrapperUtils.ts b/packages/nextjs/src/common/utils/edgeWrapperUtils.ts index dc2f6628f18e..272889fa76db 100644 --- a/packages/nextjs/src/common/utils/edgeWrapperUtils.ts +++ b/packages/nextjs/src/common/utils/edgeWrapperUtils.ts @@ -2,7 +2,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SPAN_STATUS_OK, - addTracingExtensions, captureException, continueTrace, getIsolationScope, @@ -23,7 +22,6 @@ export function withEdgeWrapping( options: { spanDescription: string; spanOp: string; mechanismFunctionName: string }, ): (...params: Parameters) => Promise> { return async function (this: unknown, ...args) { - addTracingExtensions(); const req: unknown = args[0]; let sentryTrace; diff --git a/packages/nextjs/src/common/withServerActionInstrumentation.ts b/packages/nextjs/src/common/withServerActionInstrumentation.ts index a3e95575217a..83bdc9b7bbd3 100644 --- a/packages/nextjs/src/common/withServerActionInstrumentation.ts +++ b/packages/nextjs/src/common/withServerActionInstrumentation.ts @@ -1,12 +1,5 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SPAN_STATUS_ERROR, getIsolationScope } from '@sentry/core'; -import { - addTracingExtensions, - captureException, - continueTrace, - getClient, - handleCallbackErrors, - startSpan, -} from '@sentry/core'; +import { captureException, continueTrace, getClient, handleCallbackErrors, startSpan } from '@sentry/core'; import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from './debug-build'; @@ -57,7 +50,6 @@ async function withServerActionInstrumentationImplementation> { - addTracingExtensions(); return withIsolationScopeOrReuseFromRootSpan(isolationScope => { const sendDefaultPii = getClient()?.getOptions().sendDefaultPii; diff --git a/packages/nextjs/src/common/wrapApiHandlerWithSentry.ts b/packages/nextjs/src/common/wrapApiHandlerWithSentry.ts index 1519667a7abd..37d0b83c7c5b 100644 --- a/packages/nextjs/src/common/wrapApiHandlerWithSentry.ts +++ b/packages/nextjs/src/common/wrapApiHandlerWithSentry.ts @@ -1,6 +1,5 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, - addTracingExtensions, captureException, continueTrace, setHttpStatus, @@ -52,8 +51,6 @@ export function wrapApiHandlerWithSentry(apiHandler: NextApiHandler, parameteriz } req.__withSentry_applied__ = true; - addTracingExtensions(); - return withIsolationScopeOrReuseFromRootSpan(isolationScope => { return continueTrace( { diff --git a/packages/nextjs/src/common/wrapApiHandlerWithSentryVercelCrons.ts b/packages/nextjs/src/common/wrapApiHandlerWithSentryVercelCrons.ts index 83f5b4aded98..637f602b52ec 100644 --- a/packages/nextjs/src/common/wrapApiHandlerWithSentryVercelCrons.ts +++ b/packages/nextjs/src/common/wrapApiHandlerWithSentryVercelCrons.ts @@ -1,4 +1,4 @@ -import { addTracingExtensions, captureCheckIn } from '@sentry/core'; +import { captureCheckIn } from '@sentry/core'; import type { NextApiRequest } from 'next'; import type { VercelCronsConfig } from './types'; @@ -25,7 +25,6 @@ export function wrapApiHandlerWithSentryVercelCrons a generationFunction: F, context: GenerationFunctionContext, ): F { - addTracingExtensions(); const { requestAsyncStorage, componentRoute, componentType, generationFunctionIdentifier } = context; return new Proxy(generationFunction, { apply: (originalFunction, thisArg, args) => { diff --git a/packages/nextjs/src/common/wrapGetInitialPropsWithSentry.ts b/packages/nextjs/src/common/wrapGetInitialPropsWithSentry.ts index c78ce497e394..0b5425417913 100644 --- a/packages/nextjs/src/common/wrapGetInitialPropsWithSentry.ts +++ b/packages/nextjs/src/common/wrapGetInitialPropsWithSentry.ts @@ -1,10 +1,4 @@ -import { - addTracingExtensions, - getActiveSpan, - getDynamicSamplingContextFromSpan, - getRootSpan, - spanToTraceHeader, -} from '@sentry/core'; +import { getActiveSpan, getDynamicSamplingContextFromSpan, getRootSpan, spanToTraceHeader } from '@sentry/core'; import { dynamicSamplingContextToSentryBaggageHeader } from '@sentry/utils'; import type { NextPage } from 'next'; @@ -27,8 +21,6 @@ export function wrapGetInitialPropsWithSentry(origGetInitialProps: GetInitialPro return wrappingTarget.apply(thisArg, args); } - addTracingExtensions(); - const [context] = args; const { req, res } = context; diff --git a/packages/nextjs/src/common/wrapGetServerSidePropsWithSentry.ts b/packages/nextjs/src/common/wrapGetServerSidePropsWithSentry.ts index 782bc523f935..d8a14b392462 100644 --- a/packages/nextjs/src/common/wrapGetServerSidePropsWithSentry.ts +++ b/packages/nextjs/src/common/wrapGetServerSidePropsWithSentry.ts @@ -1,10 +1,4 @@ -import { - addTracingExtensions, - getActiveSpan, - getDynamicSamplingContextFromSpan, - getRootSpan, - spanToTraceHeader, -} from '@sentry/core'; +import { getActiveSpan, getDynamicSamplingContextFromSpan, getRootSpan, spanToTraceHeader } from '@sentry/core'; import { dynamicSamplingContextToSentryBaggageHeader } from '@sentry/utils'; import type { GetServerSideProps } from 'next'; @@ -28,8 +22,6 @@ export function wrapGetServerSidePropsWithSentry( return wrappingTarget.apply(thisArg, args); } - addTracingExtensions(); - const [context] = args; const { req, res } = context; diff --git a/packages/nextjs/src/common/wrapGetStaticPropsWithSentry.ts b/packages/nextjs/src/common/wrapGetStaticPropsWithSentry.ts index 67ac97daac5c..a50c25ac616b 100644 --- a/packages/nextjs/src/common/wrapGetStaticPropsWithSentry.ts +++ b/packages/nextjs/src/common/wrapGetStaticPropsWithSentry.ts @@ -1,4 +1,3 @@ -import { addTracingExtensions } from '@sentry/core'; import type { GetStaticProps } from 'next'; import { isBuild } from './utils/isBuild'; @@ -23,8 +22,6 @@ export function wrapGetStaticPropsWithSentry( return wrappingTarget.apply(thisArg, args); } - addTracingExtensions(); - const errorWrappedGetStaticProps = withErrorInstrumentation(wrappingTarget); return callDataFetcherTraced(errorWrappedGetStaticProps, args, { parameterizedRoute, diff --git a/packages/nextjs/src/common/wrapPageComponentWithSentry.ts b/packages/nextjs/src/common/wrapPageComponentWithSentry.ts index b14b5cff2e07..b6ab022afb21 100644 --- a/packages/nextjs/src/common/wrapPageComponentWithSentry.ts +++ b/packages/nextjs/src/common/wrapPageComponentWithSentry.ts @@ -1,4 +1,4 @@ -import { addTracingExtensions, captureException, getCurrentScope } from '@sentry/core'; +import { captureException, getCurrentScope } from '@sentry/core'; import { extractTraceparentData } from '@sentry/utils'; import { withIsolationScopeOrReuseFromRootSpan } from './utils/withIsolationScopeOrReuseFromRootSpan'; @@ -22,7 +22,6 @@ function isReactClassComponent(target: unknown): target is ClassComponent { * Wraps a page component with Sentry error instrumentation. */ export function wrapPageComponentWithSentry(pageComponent: FunctionComponent | ClassComponent): unknown { - addTracingExtensions(); if (isReactClassComponent(pageComponent)) { return class SentryWrappedPageComponent extends pageComponent { public render(...args: unknown[]): unknown { diff --git a/packages/nextjs/src/common/wrapRouteHandlerWithSentry.ts b/packages/nextjs/src/common/wrapRouteHandlerWithSentry.ts index e82b4a3b4bdd..06e969a737ce 100644 --- a/packages/nextjs/src/common/wrapRouteHandlerWithSentry.ts +++ b/packages/nextjs/src/common/wrapRouteHandlerWithSentry.ts @@ -3,7 +3,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SPAN_STATUS_ERROR, - addTracingExtensions, captureException, getActiveSpan, getRootSpan, @@ -61,8 +60,6 @@ export function wrapRouteHandlerWithSentry any>( routeHandler: F, context: RouteHandlerContext, ): (...args: Parameters) => ReturnType extends Promise ? ReturnType : Promise> { - addTracingExtensions(); - const { method, parameterizedRoute, headers } = context; return new Proxy(routeHandler, { diff --git a/packages/nextjs/src/common/wrapServerComponentWithSentry.ts b/packages/nextjs/src/common/wrapServerComponentWithSentry.ts index 76521b71e0d1..a41cfd2fb052 100644 --- a/packages/nextjs/src/common/wrapServerComponentWithSentry.ts +++ b/packages/nextjs/src/common/wrapServerComponentWithSentry.ts @@ -2,7 +2,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SPAN_STATUS_ERROR, SPAN_STATUS_OK, - addTracingExtensions, captureException, getCurrentScope, handleCallbackErrors, @@ -25,7 +24,6 @@ export function wrapServerComponentWithSentry any> appDirComponent: F, context: ServerComponentContext, ): F { - addTracingExtensions(); const { componentRoute, componentType } = context; // Even though users may define server components as async functions, for the client bundles diff --git a/packages/nextjs/src/edge/index.ts b/packages/nextjs/src/edge/index.ts index 7c4874d051ad..7034873f665e 100644 --- a/packages/nextjs/src/edge/index.ts +++ b/packages/nextjs/src/edge/index.ts @@ -1,4 +1,4 @@ -import { addTracingExtensions, applySdkMetadata } from '@sentry/core'; +import { applySdkMetadata, registerSpanErrorInstrumentation } from '@sentry/core'; import { GLOBAL_OBJ } from '@sentry/utils'; import type { VercelEdgeOptions } from '@sentry/vercel-edge'; import { getDefaultIntegrations, init as vercelEdgeInit } from '@sentry/vercel-edge'; @@ -14,7 +14,7 @@ const globalWithInjectedValues = GLOBAL_OBJ as typeof GLOBAL_OBJ & { /** Inits the Sentry NextJS SDK on the Edge Runtime. */ export function init(options: VercelEdgeOptions = {}): void { - addTracingExtensions(); + registerSpanErrorInstrumentation(); if (isBuild()) { return; diff --git a/packages/nextjs/src/server/index.ts b/packages/nextjs/src/server/index.ts index d961d6717e4c..7d8f9a7a7d94 100644 --- a/packages/nextjs/src/server/index.ts +++ b/packages/nextjs/src/server/index.ts @@ -1,4 +1,4 @@ -import { addEventProcessor, addTracingExtensions, applySdkMetadata, getClient } from '@sentry/core'; +import { addEventProcessor, applySdkMetadata, getClient } from '@sentry/core'; import { getDefaultIntegrations, init as nodeInit } from '@sentry/node'; import type { NodeOptions } from '@sentry/node'; import { GLOBAL_OBJ, logger } from '@sentry/utils'; @@ -64,8 +64,6 @@ export function showReportDialog(): void { /** Inits the Sentry NextJS SDK on node. */ export function init(options: NodeOptions): void { - addTracingExtensions(); - if (isBuild()) { return; } diff --git a/packages/nextjs/test/config/withSentry.test.ts b/packages/nextjs/test/config/withSentry.test.ts index 6de52dbc1989..7a29ab80afb7 100644 --- a/packages/nextjs/test/config/withSentry.test.ts +++ b/packages/nextjs/test/config/withSentry.test.ts @@ -1,14 +1,10 @@ import * as SentryCore from '@sentry/core'; -import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, addTracingExtensions } from '@sentry/core'; +import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core'; import type { NextApiRequest, NextApiResponse } from 'next'; import type { AugmentedNextApiResponse, NextApiHandler } from '../../src/common/types'; import { wrapApiHandlerWithSentry } from '../../src/server'; -// The wrap* functions require the hub to have tracing extensions. This is normally called by the NodeClient -// constructor but the client isn't used in these tests. -addTracingExtensions(); - const startSpanManualSpy = jest.spyOn(SentryCore, 'startSpanManual'); describe('withSentry', () => { diff --git a/packages/nextjs/test/config/wrappers.test.ts b/packages/nextjs/test/config/wrappers.test.ts index 47162b638533..284737f4335d 100644 --- a/packages/nextjs/test/config/wrappers.test.ts +++ b/packages/nextjs/test/config/wrappers.test.ts @@ -1,16 +1,12 @@ import type { IncomingMessage, ServerResponse } from 'http'; import * as SentryCore from '@sentry/core'; -import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, addTracingExtensions } from '@sentry/core'; +import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core'; import type { Client } from '@sentry/types'; import { wrapGetInitialPropsWithSentry, wrapGetServerSidePropsWithSentry } from '../../src/common'; const startSpanManualSpy = jest.spyOn(SentryCore, 'startSpanManual'); -// The wrap* functions require the hub to have tracing extensions. This is normally called by the NodeClient -// constructor but the client isn't used in these tests. -addTracingExtensions(); - describe('data-fetching function wrappers should create spans', () => { const route = '/tricks/[trickName]'; let req: IncomingMessage; diff --git a/packages/opentelemetry/test/propagator.test.ts b/packages/opentelemetry/test/propagator.test.ts index 244b0aa93d2b..da9f2d30fc98 100644 --- a/packages/opentelemetry/test/propagator.test.ts +++ b/packages/opentelemetry/test/propagator.test.ts @@ -8,7 +8,7 @@ import { trace, } from '@opentelemetry/api'; import { suppressTracing } from '@opentelemetry/core'; -import { addTracingExtensions, withScope } from '@sentry/core'; +import { withScope } from '@sentry/core'; import { SENTRY_BAGGAGE_HEADER, SENTRY_SCOPES_CONTEXT_KEY, SENTRY_TRACE_HEADER } from '../src/constants'; import { SentryPropagator, makeTraceState } from '../src/propagator'; @@ -16,10 +16,6 @@ import { getScopesFromContext } from '../src/utils/contextData'; import { getSamplingDecision } from '../src/utils/getSamplingDecision'; import { cleanupOtel, mockSdkInit } from './helpers/mockSdkInit'; -beforeAll(() => { - addTracingExtensions(); -}); - describe('SentryPropagator', () => { const propagator = new SentryPropagator(); let carrier: { [key: string]: unknown }; diff --git a/packages/svelte/test/performance.test.ts b/packages/svelte/test/performance.test.ts index 735a732f981a..53cf80d04d17 100644 --- a/packages/svelte/test/performance.test.ts +++ b/packages/svelte/test/performance.test.ts @@ -1,5 +1,5 @@ import { act, render } from '@testing-library/svelte'; -import { addTracingExtensions, getClient, getCurrentScope, getIsolationScope, init, startSpan } from '../src'; +import { getClient, getCurrentScope, getIsolationScope, init, startSpan } from '../src'; import type { TransactionEvent } from '@sentry/types'; import { vi } from 'vitest'; @@ -19,8 +19,6 @@ describe('Sentry.trackComponent()', () => { getCurrentScope().clear(); getIsolationScope().clear(); - addTracingExtensions(); - const beforeSendTransaction = vi.fn(event => { transactions.push(event); return null; diff --git a/packages/sveltekit/test/client/load.test.ts b/packages/sveltekit/test/client/load.test.ts index 34d1606174de..087eada60b47 100644 --- a/packages/sveltekit/test/client/load.test.ts +++ b/packages/sveltekit/test/client/load.test.ts @@ -33,10 +33,6 @@ const MOCK_LOAD_ARGS: any = { url: new URL('http://localhost:3000/users/123'), }; -beforeAll(() => { - SentrySvelte.addTracingExtensions(); -}); - describe('wrapLoadWithSentry', () => { beforeEach(() => { mockCaptureException.mockClear(); diff --git a/packages/sveltekit/test/server/handle.test.ts b/packages/sveltekit/test/server/handle.test.ts index 2c3d1a9333f1..e029a118b411 100644 --- a/packages/sveltekit/test/server/handle.test.ts +++ b/packages/sveltekit/test/server/handle.test.ts @@ -1,6 +1,5 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, - addTracingExtensions, getRootSpan, getSpanDescendants, spanIsSampled, @@ -90,10 +89,6 @@ function resolve( let client: NodeClient; -beforeAll(() => { - addTracingExtensions(); -}); - beforeEach(() => { const options = getDefaultNodeClientOptions({ tracesSampleRate: 1.0 }); client = new NodeClient(options); diff --git a/packages/sveltekit/test/server/load.test.ts b/packages/sveltekit/test/server/load.test.ts index 699fcf034232..28e7fc342308 100644 --- a/packages/sveltekit/test/server/load.test.ts +++ b/packages/sveltekit/test/server/load.test.ts @@ -2,7 +2,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, - addTracingExtensions, } from '@sentry/core'; import { NodeClient, getCurrentScope, getIsolationScope, setCurrentClient } from '@sentry/node'; import * as SentryNode from '@sentry/node'; @@ -76,10 +75,6 @@ function getServerOnlyArgs() { }; } -beforeAll(() => { - addTracingExtensions(); -}); - afterEach(() => { mockCaptureException.mockClear(); mockStartSpan.mockClear();