Skip to content

feat(core): Deprecate beforeSendTransaction and ignoreTransactions and log warnings if used with streaming - #22908

Merged
Lms24 merged 8 commits into
developfrom
feat/deprecate-transaction-options
Jul 31, 2026
Merged

feat(core): Deprecate beforeSendTransaction and ignoreTransactions and log warnings if used with streaming#22908
Lms24 merged 8 commits into
developfrom
feat/deprecate-transaction-options

Conversation

@Lms24

@Lms24 Lms24 commented Jul 31, 2026

Copy link
Copy Markdown
Member

This PR:

  1. Deprecates beforeSendTransaction and ignoreTransactions
  2. Logs a console warning (intentionally not gated with debug: true) to warn users if they use any of the two options with span streaming enabled

I intentionally didn't update the migration guide. this is handled in #22643.

more details in #22856

closes #22856
closes #20279

Both options operate on the transaction event that span streaming no longer
produces, so they silently stopped taking effect when span streaming became
the default. That is easy to miss when upgrading.

Deprecate both options with a note that they only apply in combination with
`traceLifecycle: 'static'` and will be removed in v12, and warn at init time
when either is set while span streaming is enabled. The warning writes to the
console directly rather than through `debug`, which is opt-in and stripped from
non-debug bundles, so users who need to see it actually do.

The check runs after integration setup because `spanStreamingIntegration` can
fall back to the static trace lifecycle, in which case both options do apply
and we must stay silent.

Fixes #22856
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Comment thread packages/core/src/utils/warnAboutIgnoredTransactionOptions.ts
@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️ Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

Path Size % Change Change
@sentry/browser 29.93 kB +0.38% +113 B 🔺
@sentry/browser - with treeshaking flags 28.13 kB +0.37% +103 B 🔺
@sentry/browser (incl. Tracing) 47.19 kB +0.24% +109 B 🔺
@sentry/browser (incl. Tracing + Span Streaming) 47.2 kB +0.24% +111 B 🔺
@sentry/browser (incl. Tracing, Profiling) 51.93 kB +0.22% +109 B 🔺
@sentry/browser (incl. Tracing, Replay) 86.51 kB +0.14% +118 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 75.94 kB +0.15% +108 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas) 91.23 kB +0.13% +118 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback) 103.87 kB +0.11% +112 B 🔺
@sentry/browser (incl. Feedback) 47.24 kB +0.23% +106 B 🔺
@sentry/browser (incl. sendFeedback) 34.77 kB +0.33% +113 B 🔺
@sentry/browser (incl. FeedbackAsync) 39.87 kB +0.27% +105 B 🔺
@sentry/browser (incl. Metrics) 31 kB +0.36% +109 B 🔺
@sentry/browser (incl. Logs) 31.24 kB +0.37% +114 B 🔺
@sentry/browser (incl. Metrics & Logs) 31.91 kB +0.35% +110 B 🔺
@sentry/react 31.72 kB +0.36% +112 B 🔺
@sentry/react (incl. Tracing) 49.44 kB +0.23% +110 B 🔺
@sentry/vue 34.86 kB +0.36% +123 B 🔺
@sentry/vue (incl. Tracing) 49.16 kB +0.23% +108 B 🔺
@sentry/svelte 29.96 kB +0.37% +110 B 🔺
CDN Bundle 31.97 kB +0.32% +101 B 🔺
CDN Bundle (incl. Tracing) 47.57 kB +0.25% +118 B 🔺
CDN Bundle (incl. Logs, Metrics) 33.52 kB +0.29% +94 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) 48.93 kB +0.22% +107 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) 72.88 kB +0.14% +100 B 🔺
CDN Bundle (incl. Tracing, Replay) 85.19 kB +0.14% +116 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 86.48 kB +0.12% +98 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) 90.97 kB +0.13% +114 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 92.28 kB +0.13% +113 B 🔺
CDN Bundle - uncompressed 95.45 kB +0.36% +335 B 🔺
CDN Bundle (incl. Tracing) - uncompressed 142.68 kB +0.24% +336 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed 100.16 kB +0.34% +335 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 146.66 kB +0.23% +336 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 224.92 kB +0.15% +335 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed 261.93 kB +0.13% +336 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 265.9 kB +0.13% +336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 275.64 kB +0.13% +336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 279.59 kB +0.13% +336 B 🔺
@sentry/nextjs (client) 52.03 kB +0.21% +106 B 🔺
@sentry/sveltekit (client) 47.63 kB +0.25% +117 B 🔺
@sentry/core/server 79.88 kB +0.15% +113 B 🔺
@sentry/core/browser 51.82 kB +0.22% +113 B 🔺
@sentry/node 121.5 kB +0.08% +96 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 0 B added added
@sentry/node - without tracing 85.05 kB +0.17% +138 B 🔺
@sentry/aws-serverless 93.33 kB +0.16% +140 B 🔺
@sentry/cloudflare (withSentry) - minified 198.76 kB +0.21% +403 B 🔺
@sentry/cloudflare (withSentry) 488.98 kB +0.17% +820 B 🔺

View base workflow run

Comment thread packages/core/test/lib/client.test.ts

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 2 total unresolved issues (including 1 from previous review).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 21fd1c9. Configure here.

Comment thread packages/core/test/lib/utils/warnAboutIgnoredTransactionOptions.test.ts Outdated
@Lms24 Lms24 changed the title feat(core): Deprecate beforeSendTransaction and ignoreTransactions feat(core): Deprecate beforeSendTransaction and ignoreTransactions and log warnings if used with streaming Jul 31, 2026
The warning ships in every bundle, including the base CDN bundle that has no
tracing at all, so its message text is paid for by users who will never see it.

Measured against a build with the feature stubbed out, the original cost 204 B
gzipped in the base CDN bundle. Almost all of that was the message: dropping the
array/filter/join in favour of a single static string, and giving up naming
which of the two options is actually set, brings it to 87 B — a 117 B saving.

Naming the specific option was the expensive part, not the machinery that
selected it; an interpolation-free ternary variant measured worse than the array
it would have replaced. The static message still names both options, both
replacements, and the opt-out, so it loses no actionable information.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Lms24
Lms24 marked this pull request as ready for review July 31, 2026 11:49
@Lms24
Lms24 requested review from isaacs and mydea July 31, 2026 11:50
Comment thread packages/core/src/client.ts
Lms24 and others added 2 commits July 31, 2026 14:03
A disabled client (no DSN, or `enabled: false`) skips `_setupIntegrations()`,
so `spanStreamingIntegration` never gets the chance to fall back to
`traceLifecycle: 'static'`. The lifecycle stayed 'stream' and the warning fired,
telling users their options were ignored because of span streaming — when the
real reason was that the client sends nothing at all.

The two paths were verifiably indistinguishable to the user: with an unwrapped
`beforeSendSpan`, the identical config warns without a DSN and stays correctly
silent with one, purely because setup ran in the second case.

Move the call inside the branch that sets integrations up. The Spotlight escape
hatch is handled correctly by construction: a DSN-less client with Spotlight
does set up integrations and does send spans, so it should still warn.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Lms24
Lms24 requested a review from andreiborza July 31, 2026 13:20
consoleSandbox(() => {
// oxlint-disable-next-line no-console
console.warn(
"[Sentry] `beforeSendTransaction` and `ignoreTransactions` are ignored with span streaming. Use `beforeSendSpan` and `ignoreSpans` instead, or set `traceLifecycle: 'static'`.",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

l: Could we replace span streaming with traceLifecycle: 'stream' so it's even more obvious why this happens?

@Lms24
Lms24 enabled auto-merge (squash) July 31, 2026 14:08
@Lms24
Lms24 merged commit 9698d03 into develop Jul 31, 2026
525 of 527 checks passed
@Lms24
Lms24 deleted the feat/deprecate-transaction-options branch July 31, 2026 14:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants