diff --git a/packages/tracing-internal/src/browser/browsertracing.ts b/packages/tracing-internal/src/browser/browsertracing.ts index 4be633821a1a..13cde107074f 100644 --- a/packages/tracing-internal/src/browser/browsertracing.ts +++ b/packages/tracing-internal/src/browser/browsertracing.ts @@ -105,7 +105,6 @@ export interface BrowserTracingOptions extends RequestInstrumentationOptions { _experiments: Partial<{ enableLongTask: boolean; enableInteractions: boolean; - enableHTTPTimings: boolean; onStartRouteTransaction: (t: Transaction | undefined, ctx: TransactionContext, getCurrentHub: () => Hub) => void; }>; @@ -140,6 +139,7 @@ const DEFAULT_BROWSER_TRACING_OPTIONS: BrowserTracingOptions = { startTransactionOnLocationChange: true, startTransactionOnPageLoad: true, enableLongTask: true, + _experiments: {}, ...defaultRequestInstrumentationOptions, }; @@ -230,6 +230,7 @@ export class BrowserTracing implements Integration { traceFetch, traceXHR, shouldCreateSpanForRequest, + enableHTTPTimings, _experiments, } = this.options; @@ -277,9 +278,7 @@ export class BrowserTracing implements Integration { traceXHR, tracePropagationTargets, shouldCreateSpanForRequest, - _experiments: { - enableHTTPTimings: _experiments.enableHTTPTimings, - }, + enableHTTPTimings, }); } diff --git a/packages/tracing-internal/src/browser/request.ts b/packages/tracing-internal/src/browser/request.ts index 071b2146bb16..f7332b9d2957 100644 --- a/packages/tracing-internal/src/browser/request.ts +++ b/packages/tracing-internal/src/browser/request.ts @@ -16,13 +16,6 @@ export const DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\/(?!\/)/]; /** Options for Request Instrumentation */ export interface RequestInstrumentationOptions { - /** - * Allow experiments for the request instrumentation. - */ - _experiments: Partial<{ - enableHTTPTimings: boolean; - }>; - /** * @deprecated Will be removed in v8. * Use `shouldCreateSpanForRequest` to control span creation and `tracePropagationTargets` to control @@ -52,6 +45,13 @@ export interface RequestInstrumentationOptions { */ traceXHR: boolean; + /** + * If true, Sentry will capture http timings and add them to the corresponding http spans. + * + * Default: true + */ + enableHTTPTimings: boolean; + /** * This function will be called before creating a span for a request with the given url. * Return false if you don't want a span for the given url. @@ -114,16 +114,23 @@ type PolymorphicRequestHeaders = export const defaultRequestInstrumentationOptions: RequestInstrumentationOptions = { traceFetch: true, traceXHR: true, + enableHTTPTimings: true, // TODO (v8): Remove this property tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS, tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS, - _experiments: {}, }; /** Registers span creators for xhr and fetch requests */ export function instrumentOutgoingRequests(_options?: Partial): void { - // eslint-disable-next-line deprecation/deprecation - const { traceFetch, traceXHR, tracePropagationTargets, tracingOrigins, shouldCreateSpanForRequest, _experiments } = { + const { + traceFetch, + traceXHR, + tracePropagationTargets, + // eslint-disable-next-line deprecation/deprecation + tracingOrigins, + shouldCreateSpanForRequest, + enableHTTPTimings, + } = { traceFetch: defaultRequestInstrumentationOptions.traceFetch, traceXHR: defaultRequestInstrumentationOptions.traceXHR, ..._options, @@ -143,7 +150,7 @@ export function instrumentOutgoingRequests(_options?: Partial { const createdSpan = fetchCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans); - if (_experiments?.enableHTTPTimings && createdSpan) { + if (enableHTTPTimings && createdSpan) { addHTTPTimings(createdSpan); } }); @@ -152,7 +159,7 @@ export function instrumentOutgoingRequests(_options?: Partial { const createdSpan = xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans); - if (_experiments?.enableHTTPTimings && createdSpan) { + if (enableHTTPTimings && createdSpan) { addHTTPTimings(createdSpan); } }); diff --git a/packages/tracing-internal/test/browser/browsertracing.test.ts b/packages/tracing-internal/test/browser/browsertracing.test.ts index 0754afd65fc8..e6a9eff3fb82 100644 --- a/packages/tracing-internal/test/browser/browsertracing.test.ts +++ b/packages/tracing-internal/test/browser/browsertracing.test.ts @@ -95,6 +95,7 @@ conditionalTest({ min: 10 })('BrowserTracing', () => { expect(browserTracing.options).toEqual({ enableLongTask: true, + _experiments: {}, ...TRACING_DEFAULTS, markBackgroundTransactions: true, routingInstrumentation: instrumentRoutingWithDefaults, @@ -132,6 +133,7 @@ conditionalTest({ min: 10 })('BrowserTracing', () => { expect(browserTracing.options).toEqual({ enableLongTask: false, + _experiments: {}, ...TRACING_DEFAULTS, markBackgroundTransactions: true, routingInstrumentation: instrumentRoutingWithDefaults, @@ -246,7 +248,7 @@ conditionalTest({ min: 10 })('BrowserTracing', () => { traceFetch: true, traceXHR: true, tracePropagationTargets: ['something'], - _experiments: {}, + enableHTTPTimings: true, }); }); @@ -260,7 +262,7 @@ conditionalTest({ min: 10 })('BrowserTracing', () => { }); expect(instrumentOutgoingRequestsMock).toHaveBeenCalledWith({ - _experiments: {}, + enableHTTPTimings: true, traceFetch: true, traceXHR: true, tracePropagationTargets: ['something-else'],