diff --git a/packages/astro/src/index.types.ts b/packages/astro/src/index.types.ts index e9bb84c6e266..d31cc3ac69e2 100644 --- a/packages/astro/src/index.types.ts +++ b/packages/astro/src/index.types.ts @@ -20,7 +20,6 @@ export declare function init(options: Options | clientSdk.BrowserOptions | NodeO export declare const linkedErrorsIntegration: typeof clientSdk.linkedErrorsIntegration; export declare const contextLinesIntegration: typeof clientSdk.contextLinesIntegration; -export declare const spanStreamingIntegration: typeof clientSdk.spanStreamingIntegration; export declare const startSpan: typeof clientSdk.startSpan; export declare const startSpanManual: typeof clientSdk.startSpanManual; export declare const startInactiveSpan: typeof clientSdk.startInactiveSpan; diff --git a/packages/browser/src/index.bundle.tracing.logs.metrics.ts b/packages/browser/src/index.bundle.tracing.logs.metrics.ts index 76759a8f9a6b..ef86a63b4a1e 100644 --- a/packages/browser/src/index.bundle.tracing.logs.metrics.ts +++ b/packages/browser/src/index.bundle.tracing.logs.metrics.ts @@ -17,6 +17,7 @@ export { startSpan, startSpanManual, withActiveSpan, + spanStreamingIntegration, } from '@sentry/core/browser'; export { @@ -29,7 +30,6 @@ export { elementTimingIntegration } from '@sentry/browser-utils'; export { reportPageLoaded } from './tracing/reportPageLoaded'; export { setActiveSpanInBrowser } from './tracing/setActiveSpan'; -export { spanStreamingIntegration } from '@sentry/core/browser'; export { fetchStreamPerformanceIntegration } from './integrations/fetchStreamPerformance'; export { webVitalsIntegration } from './integrations/webVitals'; diff --git a/packages/browser/src/index.bundle.tracing.replay.feedback.logs.metrics.ts b/packages/browser/src/index.bundle.tracing.replay.feedback.logs.metrics.ts index 7c62252e49b2..5811a3ac6eab 100644 --- a/packages/browser/src/index.bundle.tracing.replay.feedback.logs.metrics.ts +++ b/packages/browser/src/index.bundle.tracing.replay.feedback.logs.metrics.ts @@ -18,6 +18,7 @@ export { logger, consoleLoggingIntegration, metrics, + spanStreamingIntegration, } from '@sentry/core/browser'; export { @@ -30,7 +31,6 @@ export { elementTimingIntegration } from '@sentry/browser-utils'; export { reportPageLoaded } from './tracing/reportPageLoaded'; export { setActiveSpanInBrowser } from './tracing/setActiveSpan'; -export { spanStreamingIntegration } from '@sentry/core/browser'; export { fetchStreamPerformanceIntegration } from './integrations/fetchStreamPerformance'; export { webVitalsIntegration } from './integrations/webVitals'; diff --git a/packages/browser/src/index.bundle.tracing.replay.feedback.ts b/packages/browser/src/index.bundle.tracing.replay.feedback.ts index cd869bd1f72f..99c2fd3eb5b0 100644 --- a/packages/browser/src/index.bundle.tracing.replay.feedback.ts +++ b/packages/browser/src/index.bundle.tracing.replay.feedback.ts @@ -23,6 +23,7 @@ export { withActiveSpan, getSpanDescendants, setMeasurement, + spanStreamingIntegration, } from '@sentry/core/browser'; export { @@ -36,7 +37,6 @@ export { setActiveSpanInBrowser } from './tracing/setActiveSpan'; export { reportPageLoaded } from './tracing/reportPageLoaded'; -export { spanStreamingIntegration } from '@sentry/core/browser'; export { fetchStreamPerformanceIntegration } from './integrations/fetchStreamPerformance'; export { webVitalsIntegration } from './integrations/webVitals'; diff --git a/packages/browser/src/index.bundle.tracing.replay.logs.metrics.ts b/packages/browser/src/index.bundle.tracing.replay.logs.metrics.ts index f14d51d4f0f9..bd505ecbd4ca 100644 --- a/packages/browser/src/index.bundle.tracing.replay.logs.metrics.ts +++ b/packages/browser/src/index.bundle.tracing.replay.logs.metrics.ts @@ -17,6 +17,7 @@ export { startSpan, startSpanManual, withActiveSpan, + spanStreamingIntegration, } from '@sentry/core/browser'; export { @@ -29,7 +30,6 @@ export { elementTimingIntegration } from '@sentry/browser-utils'; export { reportPageLoaded } from './tracing/reportPageLoaded'; export { setActiveSpanInBrowser } from './tracing/setActiveSpan'; -export { spanStreamingIntegration } from '@sentry/core/browser'; export { fetchStreamPerformanceIntegration } from './integrations/fetchStreamPerformance'; export { webVitalsIntegration } from './integrations/webVitals'; diff --git a/packages/browser/src/index.bundle.tracing.replay.ts b/packages/browser/src/index.bundle.tracing.replay.ts index 59f9469bb59a..132965196ef9 100644 --- a/packages/browser/src/index.bundle.tracing.replay.ts +++ b/packages/browser/src/index.bundle.tracing.replay.ts @@ -23,6 +23,7 @@ export { withActiveSpan, getSpanDescendants, setMeasurement, + spanStreamingIntegration, } from '@sentry/core/browser'; export { @@ -35,7 +36,6 @@ export { elementTimingIntegrationShim as elementTimingIntegration }; export { reportPageLoaded } from './tracing/reportPageLoaded'; export { setActiveSpanInBrowser } from './tracing/setActiveSpan'; -export { spanStreamingIntegration } from '@sentry/core/browser'; export { fetchStreamPerformanceIntegration } from './integrations/fetchStreamPerformance'; export { webVitalsIntegration } from './integrations/webVitals'; diff --git a/packages/browser/src/index.bundle.tracing.ts b/packages/browser/src/index.bundle.tracing.ts index af2377b0111a..31296862d4d8 100644 --- a/packages/browser/src/index.bundle.tracing.ts +++ b/packages/browser/src/index.bundle.tracing.ts @@ -24,6 +24,7 @@ export { withActiveSpan, getSpanDescendants, setMeasurement, + spanStreamingIntegration, } from '@sentry/core/browser'; export { @@ -37,7 +38,6 @@ export { setActiveSpanInBrowser } from './tracing/setActiveSpan'; export { reportPageLoaded } from './tracing/reportPageLoaded'; -export { spanStreamingIntegration } from '@sentry/core/browser'; export { fetchStreamPerformanceIntegration } from './integrations/fetchStreamPerformance'; export { webVitalsIntegration } from './integrations/webVitals'; diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index 1708d8b17ba2..b7a1f410bfea 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -36,7 +36,6 @@ export { elementTimingIntegration, getAbsoluteUrl, isBotUserAgent } from '@sentr export { normalizeStringifyValue } from './normalizeStringifyValue'; export { reportPageLoaded } from './tracing/reportPageLoaded'; export { setActiveSpanInBrowser } from './tracing/setActiveSpan'; -export { spanStreamingIntegration } from '@sentry/core/browser'; export { fetchStreamPerformanceIntegration } from './integrations/fetchStreamPerformance'; export { webVitalsIntegration } from './integrations/webVitals'; export { userTimingIntegration } from './integrations/usertiming'; @@ -73,6 +72,7 @@ export { featureFlagsIntegration, logger, metrics, + spanStreamingIntegration, } from '@sentry/core/browser'; export type { Span, FeatureFlagsIntegration } from '@sentry/core/browser'; export { makeBrowserOfflineTransport } from './transports/offline'; diff --git a/packages/core/src/browser-exports.ts b/packages/core/src/browser-exports.ts index 076754a95db3..fc0d5044abdb 100644 --- a/packages/core/src/browser-exports.ts +++ b/packages/core/src/browser-exports.ts @@ -13,8 +13,6 @@ export { export { startIdleSpan } from './tracing/idleSpan'; -export { spanStreamingIntegration } from './integrations/browserSpanStreaming'; - export { supportsNativeFetch } from './utils/supports'; export type { XhrBreadcrumbData, XhrBreadcrumbHint } from './types/breadcrumb'; export type { BrowserClientReplayOptions } from './types/browseroptions'; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index f5d8e3815143..ef84d9312185 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -11,4 +11,3 @@ export * from './browser-exports'; // We need to re-export them here to disambiguate the exports for anyone importing // from `@sentry/core`. Server exports win over browser exports. export { startSpan, startInactiveSpan, startSpanManual } from './server-exports'; -export { spanStreamingIntegration } from './server-exports'; diff --git a/packages/core/src/integrations/browserSpanStreaming.ts b/packages/core/src/integrations/browserSpanStreaming.ts deleted file mode 100644 index 6c8ae324082d..000000000000 --- a/packages/core/src/integrations/browserSpanStreaming.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { IntegrationFn } from '../types/integration'; -import { DEBUG_BUILD } from '../debug-build'; -import { defineIntegration } from '../integration'; -import { captureSpan } from '../tracing/spans/captureSpan'; -import { hasSpanStreamingEnabled } from '../tracing/spans/hasSpanStreamingEnabled'; -import { SpanBuffer } from '../tracing/spans/spanBuffer'; -import { debug } from '../utils/debug-logger'; -import { spanIsSampled } from '../utils/spanUtils'; - -export const INTEGRATION_NAME = 'SpanStreaming' as const; - -export const spanStreamingIntegration = defineIntegration(() => { - return { - name: INTEGRATION_NAME, - setup(client) { - if (!hasSpanStreamingEnabled(client)) { - DEBUG_BUILD && debug.log(`[${INTEGRATION_NAME}] \`traceLifecycle\` is "static", skipping setup.`); - return; - } - - const buffer = new SpanBuffer(client); - - client.on('afterSpanEnd', span => { - // Negatively sampled spans must not be captured. - // This happens because OTel and we create non-recording spans for negatively sampled spans - // that go through the same life cycle as recording spans. - if (!spanIsSampled(span)) { - return; - } - buffer.add(captureSpan(span, client)); - }); - - // In addition to capturing the span, we also flush the trace when the segment - // span ends to ensure things are sent timely. We never know when the browser - // is closed, users navigate away, etc. - client.on('afterSegmentSpanEnd', segmentSpan => { - const traceId = segmentSpan.spanContext().traceId; - setTimeout(() => { - buffer.flush(traceId); - }, 500); - }); - }, - }; -}) satisfies IntegrationFn; diff --git a/packages/core/src/integrations/spanStreaming.ts b/packages/core/src/integrations/spanStreaming.ts index d44ac947bad4..e717ee84eac9 100644 --- a/packages/core/src/integrations/spanStreaming.ts +++ b/packages/core/src/integrations/spanStreaming.ts @@ -6,10 +6,24 @@ import { hasSpanStreamingEnabled } from '../tracing/spans/hasSpanStreamingEnable import { SpanBuffer } from '../tracing/spans/spanBuffer'; import { debug } from '../utils/debug-logger'; import { spanIsSampled } from '../utils/spanUtils'; +import { safeUnref } from '../utils/timer'; export const INTEGRATION_NAME = 'SpanStreaming' as const; -export const spanStreamingIntegration = defineIntegration(() => { +interface SpanStreamingOptions { + /** + * When enabled, a trace is flushed shortly after its segment span ends, rather than relying solely + * on the buffer's timeout/size thresholds or an explicit `flushTraceSpans` emission. + * + * + * @default true + */ + flushOnSegmentEnd?: boolean; +} + +export const spanStreamingIntegration = defineIntegration((options: SpanStreamingOptions = {}) => { + const flushOnSegmentEnd = options.flushOnSegmentEnd ?? true; + return { name: INTEGRATION_NAME, @@ -33,6 +47,20 @@ export const spanStreamingIntegration = defineIntegration(() => { client.on('flushTraceSpans', traceId => { buffer.flush(traceId); }); + + if (flushOnSegmentEnd) { + // Also flush the trace when the segment span ends to ensure things are sent timely. + client.on('afterSegmentSpanEnd', segmentSpan => { + const traceId = segmentSpan.spanContext().traceId; + // `safeUnref` so an enabled `flushOnSegmentEnd` on a server runtime can't keep the + // process alive until the timer fires (no-op in the browser, where it's the default path). + safeUnref( + setTimeout(() => { + buffer.flush(traceId); + }, 500), + ); + }); + } }, }; }) satisfies IntegrationFn; diff --git a/packages/core/src/server-exports.ts b/packages/core/src/server-exports.ts index 5037dc9cb784..a4256b2baa26 100644 --- a/packages/core/src/server-exports.ts +++ b/packages/core/src/server-exports.ts @@ -5,7 +5,6 @@ */ export { startSpan, startInactiveSpan, startSpanManual } from './tracing/trace'; -export { spanStreamingIntegration } from './integrations/spanStreaming'; export type { ServerRuntimeClientOptions } from './server-runtime-client'; export { ServerRuntimeClient } from './server-runtime-client'; diff --git a/packages/core/src/shared-exports.ts b/packages/core/src/shared-exports.ts index aacaa27a4d26..2c0a1d1c17f9 100644 --- a/packages/core/src/shared-exports.ts +++ b/packages/core/src/shared-exports.ts @@ -161,6 +161,7 @@ export type { FeatureFlagsIntegration } from './integrations/featureFlags'; export { featureFlagsIntegration } from './integrations/featureFlags'; export { growthbookIntegration } from './integrations/featureFlags'; export { conversationIdIntegration } from './integrations/conversationId'; +export { spanStreamingIntegration } from './integrations/spanStreaming'; export { profiler } from './profiling'; // eslint thinks the entire function is deprecated (while only one overload is actually deprecated) // Therefore: diff --git a/packages/core/src/tracing/browserSpanApi.ts b/packages/core/src/tracing/browserSpanApi.ts index 6d6752799171..202e5f859dea 100644 --- a/packages/core/src/tracing/browserSpanApi.ts +++ b/packages/core/src/tracing/browserSpanApi.ts @@ -1,6 +1,6 @@ import type { Client } from '../client'; import { getClient } from '../currentScopes'; -import { spanStreamingIntegration } from '../integrations/browserSpanStreaming'; +import { spanStreamingIntegration } from '../integrations/spanStreaming'; import type { Span } from '../types/span'; import type { StartSpanOptions } from '../types/startSpanOptions'; import { hasSpanStreamingEnabled } from './spans/hasSpanStreamingEnabled'; diff --git a/packages/core/test/exports.test.ts b/packages/core/test/exports.test.ts index 7d490acdfd63..0936e59c5808 100644 --- a/packages/core/test/exports.test.ts +++ b/packages/core/test/exports.test.ts @@ -1,8 +1,7 @@ import { describe, expect, it } from 'vitest'; import * as browserEntry from '../src/browser'; import * as rootEntry from '../src/index'; -import { spanStreamingIntegration as browserSpanStreamingIntegration } from '../src/integrations/browserSpanStreaming'; -import { spanStreamingIntegration as plainSpanStreamingIntegration } from '../src/integrations/spanStreaming'; +import { spanStreamingIntegration } from '../src/integrations/spanStreaming'; import * as serverEntry from '../src/server'; import * as browserSpanApi from '../src/tracing/browserSpanApi'; import { @@ -20,7 +19,6 @@ describe('entry point resolution', () => { ['startSpan', plainStartSpan, browserSpanApi.startSpan], ['startInactiveSpan', plainStartInactiveSpan, browserSpanApi.startInactiveSpan], ['startSpanManual', plainStartSpanManual, browserSpanApi.startSpanManual], - ['spanStreamingIntegration', plainSpanStreamingIntegration, browserSpanStreamingIntegration], ] as const; it.each(cases)('`%s`: the root entry serves the plain variant', (name, plain) => { @@ -35,4 +33,13 @@ describe('entry point resolution', () => { expect(browserEntry[name]).toBe(browser); expect(browserEntry[name]).not.toBe(plain); }); + + // `spanStreamingIntegration` is a single shared implementation, exported from both + // `browser-exports` and `server-exports`. Because both re-export the identical binding, it is not + // an ambiguous star export and needs no explicit disambiguation in `index.ts` — every entry + // resolves to the exact same function. + it.each(['index', 'server', 'browser'] as const)('`spanStreamingIntegration`: the %s entry serves it', entry => { + const entries = { index: rootEntry, server: serverEntry, browser: browserEntry }; + expect(entries[entry].spanStreamingIntegration).toBe(spanStreamingIntegration); + }); }); diff --git a/packages/core/test/integrations/browserSpanStreaming.test.ts b/packages/core/test/integrations/browserSpanStreaming.test.ts deleted file mode 100644 index d16e15e989e9..000000000000 --- a/packages/core/test/integrations/browserSpanStreaming.test.ts +++ /dev/null @@ -1,159 +0,0 @@ -import * as SentryCore from '../../src'; -import { debug } from '../../src'; -import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { spanStreamingIntegration } from '../../src/integrations/browserSpanStreaming'; -import { TestClient, getDefaultTestClientOptions } from '../mocks/client'; - -const mockSpanBufferInstance = vi.hoisted(() => ({ - flush: vi.fn(), - add: vi.fn(), - drain: vi.fn(), -})); - -const MockSpanBuffer = vi.hoisted(() => { - return vi.fn(() => mockSpanBufferInstance); -}); - -vi.mock('../../src/tracing/spans/spanBuffer', async () => { - const original = await vi.importActual('../../src/tracing/spans/spanBuffer'); - return { - ...original, - SpanBuffer: MockSpanBuffer, - }; -}); - -describe('spanStreamingIntegration (browser)', () => { - beforeEach(() => { - vi.clearAllMocks(); - }); - - it('has the correct name and setup hook', () => { - const integration = spanStreamingIntegration(); - expect(integration.name).toBe('SpanStreaming'); - // eslint-disable-next-line @typescript-eslint/unbound-method - expect(integration.setup).toBeDefined(); - }); - - it('does not set up span streaming if traceLifecycle is "static"', () => { - const debugSpy = vi.spyOn(debug, 'log').mockImplementation(() => {}); - const client = new TestClient({ - ...getDefaultTestClientOptions(), - dsn: 'https://username@domain/123', - integrations: [spanStreamingIntegration()], - traceLifecycle: 'static', - tracesSampleRate: 1, - }); - - SentryCore.setCurrentClient(client); - client.init(); - - expect(debugSpy).toHaveBeenCalledWith('[SpanStreaming] `traceLifecycle` is "static", skipping setup.'); - debugSpy.mockRestore(); - - expect(MockSpanBuffer).not.toHaveBeenCalled(); - - // Without the hooks registered, ending a span must not enqueue anything - client.emit('afterSpanEnd', new SentryCore.SentrySpan({ name: 'test', sampled: true })); - expect(mockSpanBufferInstance.add).not.toHaveBeenCalled(); - }); - - it.each([ - ['explicitly set to "stream"', 'stream' as const], - ['left unset', undefined], - ])('sets up span streaming if traceLifecycle is %s', (_, traceLifecycle) => { - const client = new TestClient({ - ...getDefaultTestClientOptions(), - dsn: 'https://username@domain/123', - integrations: [spanStreamingIntegration()], - traceLifecycle, - }); - - SentryCore.setCurrentClient(client); - client.init(); - - expect(MockSpanBuffer).toHaveBeenCalledWith(client); - expect(client.getOptions().traceLifecycle).toBe('stream'); - }); - - it('still sets up span streaming if beforeSendSpan is wrapped with withStaticSpan', () => { - const client = new TestClient({ - ...getDefaultTestClientOptions(), - dsn: 'https://username@domain/123', - integrations: [spanStreamingIntegration()], - traceLifecycle: 'stream', - beforeSendSpan: SentryCore.withStaticSpan(span => span), - }); - - SentryCore.setCurrentClient(client); - client.init(); - - expect(MockSpanBuffer).toHaveBeenCalledWith(client); - expect(client.getOptions().traceLifecycle).toBe('stream'); - }); - - it('enqueues a span into the buffer when the span ends', () => { - const client = new TestClient({ - ...getDefaultTestClientOptions(), - dsn: 'https://username@domain/123', - integrations: [spanStreamingIntegration()], - traceLifecycle: 'stream', - tracesSampleRate: 1, - }); - - SentryCore.setCurrentClient(client); - client.init(); - - const span = new SentryCore.SentrySpan({ name: 'test', sampled: true }); - client.emit('afterSpanEnd', span); - - expect(mockSpanBufferInstance.add).toHaveBeenCalledWith( - expect.objectContaining({ - _segmentSpan: span, - trace_id: span.spanContext().traceId, - span_id: span.spanContext().spanId, - name: 'test', - }), - ); - }); - - it('does not enqueue a span into the buffer when the span is not sampled', () => { - const client = new TestClient({ - ...getDefaultTestClientOptions(), - dsn: 'https://username@domain/123', - integrations: [spanStreamingIntegration()], - traceLifecycle: 'stream', - tracesSampleRate: 1, - }); - - SentryCore.setCurrentClient(client); - client.init(); - - const span = new SentryCore.SentrySpan({ name: 'test', sampled: false }); - client.emit('afterSpanEnd', span); - - expect(mockSpanBufferInstance.add).not.toHaveBeenCalled(); - expect(mockSpanBufferInstance.flush).not.toHaveBeenCalled(); - }); - - it('flushes the trace when the segment span ends after a delay for close to finished child spans', () => { - vi.useFakeTimers(); - const client = new TestClient({ - ...getDefaultTestClientOptions(), - dsn: 'https://username@domain/123', - integrations: [spanStreamingIntegration()], - traceLifecycle: 'stream', - }); - - SentryCore.setCurrentClient(client); - client.init(); - - const span = new SentryCore.SentrySpan({ name: 'test' }); - client.emit('afterSegmentSpanEnd', span); - - vi.advanceTimersByTime(500); - - expect(mockSpanBufferInstance.flush).toHaveBeenCalledWith(span.spanContext().traceId); - - vi.useRealTimers(); - }); -}); diff --git a/packages/core/test/integrations/spanStreaming.test.ts b/packages/core/test/integrations/spanStreaming.test.ts index 610aeb2be8c1..e1028cd66cbd 100644 --- a/packages/core/test/integrations/spanStreaming.test.ts +++ b/packages/core/test/integrations/spanStreaming.test.ts @@ -152,4 +152,48 @@ describe('spanStreamingIntegration (core)', () => { expect(mockSpanBufferInstance.flush).toHaveBeenCalledWith('trace-1'); expect(mockSpanBufferInstance.drain).not.toHaveBeenCalled(); }); + + it('does not flush when the segment span ends if flushOnSegmentEnd is disabled', () => { + vi.useFakeTimers(); + const client = new TestClient({ + ...getDefaultTestClientOptions(), + dsn: 'https://username@domain/123', + integrations: [spanStreamingIntegration({ flushOnSegmentEnd: false })], + traceLifecycle: 'stream', + }); + + SentryCore.setCurrentClient(client); + client.init(); + + client.emit('afterSegmentSpanEnd', new SentryCore.SentrySpan({ name: 'test' })); + vi.advanceTimersByTime(500); + + expect(mockSpanBufferInstance.flush).not.toHaveBeenCalled(); + + vi.useRealTimers(); + }); + + it('flushes the trace after a delay when the segment span ends and flushOnSegmentEnd is set', () => { + vi.useFakeTimers(); + const client = new TestClient({ + ...getDefaultTestClientOptions(), + dsn: 'https://username@domain/123', + integrations: [spanStreamingIntegration({ flushOnSegmentEnd: true })], + traceLifecycle: 'stream', + }); + + SentryCore.setCurrentClient(client); + client.init(); + + const span = new SentryCore.SentrySpan({ name: 'test' }); + client.emit('afterSegmentSpanEnd', span); + + expect(mockSpanBufferInstance.flush).not.toHaveBeenCalled(); + + vi.advanceTimersByTime(500); + + expect(mockSpanBufferInstance.flush).toHaveBeenCalledWith(span.spanContext().traceId); + + vi.useRealTimers(); + }); }); diff --git a/packages/effect/src/index.types.ts b/packages/effect/src/index.types.ts index aef1f1ac98c6..d23297f3849c 100644 --- a/packages/effect/src/index.types.ts +++ b/packages/effect/src/index.types.ts @@ -21,7 +21,6 @@ export declare function effectLayer( export declare function init(options: Options | clientSdk.BrowserOptions | serverSdk.NodeOptions): Client | undefined; export declare const linkedErrorsIntegration: typeof clientSdk.linkedErrorsIntegration; export declare const contextLinesIntegration: typeof clientSdk.contextLinesIntegration; -export declare const spanStreamingIntegration: typeof clientSdk.spanStreamingIntegration; export declare const SentryEffectTracer: typeof clientSdk.SentryEffectTracer; export declare const startSpan: typeof clientSdk.startSpan; export declare const startSpanManual: typeof clientSdk.startSpanManual; diff --git a/packages/nextjs/src/index.types.ts b/packages/nextjs/src/index.types.ts index 46b7544ded42..c9a4eaa8980a 100644 --- a/packages/nextjs/src/index.types.ts +++ b/packages/nextjs/src/index.types.ts @@ -25,7 +25,6 @@ export declare const contextLinesIntegration: typeof clientSdk.contextLinesInteg export declare const consoleIntegration: typeof serverSdk.consoleIntegration; // Node-only at runtime; the edge build exports an inert shim so named imports resolve in edge-compiled modules. export declare const pinoIntegration: typeof serverSdk.pinoIntegration; -export declare const spanStreamingIntegration: typeof clientSdk.spanStreamingIntegration; // The client uses the `@sentry/core/browser` span-start APIs while server and edge use the Cache // Components-aware ones from `common/utils/nextSpan`. Same signatures, but the star exports above // are ambiguous without these. diff --git a/packages/nuxt/src/index.types.ts b/packages/nuxt/src/index.types.ts index 953331327cea..c7a1a7e67b36 100644 --- a/packages/nuxt/src/index.types.ts +++ b/packages/nuxt/src/index.types.ts @@ -16,7 +16,6 @@ export * from './index.server'; export declare function init(options: Options | SentryNuxtClientOptions | SentryNuxtServerOptions): Client | undefined; export declare const linkedErrorsIntegration: typeof clientSdk.linkedErrorsIntegration; export declare const contextLinesIntegration: typeof clientSdk.contextLinesIntegration; -export declare const spanStreamingIntegration: typeof clientSdk.spanStreamingIntegration; export declare const startSpan: typeof clientSdk.startSpan; export declare const startSpanManual: typeof clientSdk.startSpanManual; export declare const startInactiveSpan: typeof clientSdk.startInactiveSpan; diff --git a/packages/react-router/src/index.types.ts b/packages/react-router/src/index.types.ts index 457df9af0471..53d5b368afb7 100644 --- a/packages/react-router/src/index.types.ts +++ b/packages/react-router/src/index.types.ts @@ -15,7 +15,6 @@ export declare function init(options: Options | clientSdk.BrowserOptions | serve export declare const contextLinesIntegration: typeof clientSdk.contextLinesIntegration; export declare const linkedErrorsIntegration: typeof clientSdk.linkedErrorsIntegration; -export declare const spanStreamingIntegration: typeof clientSdk.spanStreamingIntegration; export declare const startSpan: typeof clientSdk.startSpan; export declare const startSpanManual: typeof clientSdk.startSpanManual; export declare const startInactiveSpan: typeof clientSdk.startInactiveSpan; diff --git a/packages/remix/src/index.types.ts b/packages/remix/src/index.types.ts index 6b3b86bba2d5..560f41f40dab 100644 --- a/packages/remix/src/index.types.ts +++ b/packages/remix/src/index.types.ts @@ -18,7 +18,6 @@ export declare function init(options: RemixOptions): Client | undefined; export declare const browserTracingIntegration: typeof clientSdk.browserTracingIntegration; export declare const linkedErrorsIntegration: typeof clientSdk.linkedErrorsIntegration; export declare const contextLinesIntegration: typeof clientSdk.contextLinesIntegration; -export declare const spanStreamingIntegration: typeof clientSdk.spanStreamingIntegration; export declare const startSpan: typeof clientSdk.startSpan; export declare const startSpanManual: typeof clientSdk.startSpanManual; export declare const startInactiveSpan: typeof clientSdk.startInactiveSpan; diff --git a/packages/solidstart/src/index.types.ts b/packages/solidstart/src/index.types.ts index c02a833b40a0..296a87b99eb3 100644 --- a/packages/solidstart/src/index.types.ts +++ b/packages/solidstart/src/index.types.ts @@ -18,7 +18,6 @@ export declare function init(options: Options | clientSdk.BrowserOptions | serve export declare const linkedErrorsIntegration: typeof clientSdk.linkedErrorsIntegration; export declare const contextLinesIntegration: typeof clientSdk.contextLinesIntegration; -export declare const spanStreamingIntegration: typeof clientSdk.spanStreamingIntegration; export declare const startSpan: typeof clientSdk.startSpan; export declare const startSpanManual: typeof clientSdk.startSpanManual; export declare const startInactiveSpan: typeof clientSdk.startInactiveSpan; diff --git a/packages/sveltekit/src/index.types.ts b/packages/sveltekit/src/index.types.ts index e70bb94c5aed..91accfc4944d 100644 --- a/packages/sveltekit/src/index.types.ts +++ b/packages/sveltekit/src/index.types.ts @@ -46,7 +46,6 @@ export declare function wrapLoadWithSentry any>(orig export declare const linkedErrorsIntegration: typeof clientSdk.linkedErrorsIntegration; export declare const contextLinesIntegration: typeof clientSdk.contextLinesIntegration; -export declare const spanStreamingIntegration: typeof clientSdk.spanStreamingIntegration; export declare const startSpan: typeof clientSdk.startSpan; export declare const startSpanManual: typeof clientSdk.startSpanManual; export declare const startInactiveSpan: typeof clientSdk.startInactiveSpan; diff --git a/packages/tanstackstart-react/src/index.types.ts b/packages/tanstackstart-react/src/index.types.ts index 981e23ad9b31..65fd3cf7a35b 100644 --- a/packages/tanstackstart-react/src/index.types.ts +++ b/packages/tanstackstart-react/src/index.types.ts @@ -17,7 +17,6 @@ export declare function init(options: Options | clientSdk.BrowserOptions | serve export declare const linkedErrorsIntegration: typeof clientSdk.linkedErrorsIntegration; export declare const contextLinesIntegration: typeof clientSdk.contextLinesIntegration; -export declare const spanStreamingIntegration: typeof clientSdk.spanStreamingIntegration; export declare const startSpan: typeof clientSdk.startSpan; export declare const startSpanManual: typeof clientSdk.startSpanManual; export declare const startInactiveSpan: typeof clientSdk.startInactiveSpan;