You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Investigate tree shaking of transaction code when span streaming is used #22580
Span streaming adds a hefty bundle size increase (~5KB gzip, 2-3KB added via the spanStreamingIntegration, rest is in core code) to the SDK, when enabled. In v11, streaming becomes the default, so the size increase is always there. We should investigate if we can provide a tree shaking flag for bundle-size conscious users that takes care of removing transaction code paths that are "dead code" for streaming mode.
This is also a good exercise for us to determine which code paths we should remove once transactions are no longer supported by the SDK (v12?). Plus it will give us a projection of the since decrease this will yield.
changed the title [-]Investigate adding a tree shaking flag to remove transaction code when span streaming is used[/-][+]Investigate adding tree shaking of transaction code when span streaming is used[/+]on Jul 24, 2026
changed the title [-]Investigate adding tree shaking of transaction code when span streaming is used[/-][+]Investigate tree shaking of transaction code when span streaming is used[/+]on Jul 24, 2026
I opened #26144 for this. It adds an opt-in __SENTRY_EXCLUDE_TRANSACTIONS__ build flag. When you replace it with true, the SDK always streams spans (traceLifecycle: 'static' is ignored) and the transaction code paths become dead code. Defaults don't change.
I measured it with esbuild 0.27 (minify, ESM, browser, __SENTRY_DEBUG__: false) on a tracing-only setup: BrowserClient + browserTracingIntegration, tracesSampleRate: 1.
raw
gzip
brotli-11
develop
131,185
45,437
40,286
flag true
127,648 (−3,537)
44,358 (−1,079)
39,362 (−924)
flag unset (guard overhead)
+606
+76
+45
With webpack through size-limit (init + browserTracingIntegration), the flag saves 1,405 B gzip.
The PR also lists the transaction-only paths it leaves in. Those are a starting list for what to remove once transactions go away entirely.
Activity
linear-code commentedon Jul 24, 2026
JS-3133
[-]Investigate adding a tree shaking flag to remove transaction code when span streaming is used[/-][+]Investigate adding tree shaking of transaction code when span streaming is used[/+][-]Investigate adding tree shaking of transaction code when span streaming is used[/-][+]Investigate tree shaking of transaction code when span streaming is used[/+]feat(core)!: Enable span streaming by default (#22642)
sentry-junior commentedon Nov 5, 2026
I opened #26144 for this. It adds an opt-in
__SENTRY_EXCLUDE_TRANSACTIONS__build flag. When you replace it withtrue, the SDK always streams spans (traceLifecycle: 'static'is ignored) and the transaction code paths become dead code. Defaults don't change.I measured it with esbuild 0.27 (minify, ESM, browser,
__SENTRY_DEBUG__: false) on a tracing-only setup:BrowserClient+browserTracingIntegration,tracesSampleRate: 1.developtrueWith webpack through size-limit (
init+browserTracingIntegration), the flag saves 1,405 B gzip.The PR also lists the transaction-only paths it leaves in. Those are a starting list for what to remove once transactions go away entirely.