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

@Lms24Lms24 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>
@github-actions

github-actionsBot 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.

PathSize% ChangeChange
@sentry/browser29.93 kB+0.38%+113 B 🔺
@sentry/browser - with treeshaking flags28.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 flags75.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/react31.72 kB+0.36%+112 B 🔺
@sentry/react (incl. Tracing)49.44 kB+0.23%+110 B 🔺
@sentry/vue34.86 kB+0.36%+123 B 🔺
@sentry/vue (incl. Tracing)49.16 kB+0.23%+108 B 🔺
@sentry/svelte29.96 kB+0.37%+110 B 🔺
CDN Bundle31.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 - uncompressed95.45 kB+0.36%+335 B 🔺
CDN Bundle (incl. Tracing) - uncompressed142.68 kB+0.24%+336 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed100.16 kB+0.34%+335 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.66 kB+0.23%+336 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.92 kB+0.15%+335 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed261.93 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed265.9 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.64 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.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/server79.88 kB+0.15%+113 B 🔺
@sentry/core/browser51.82 kB+0.22%+113 B 🔺
@sentry/node121.5 kB+0.08%+96 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing85.05 kB+0.17%+138 B 🔺
@sentry/aws-serverless93.33 kB+0.16%+140 B 🔺
@sentry/cloudflare (withSentry) - minified198.76 kB+0.21%+403 B 🔺
@sentry/cloudflare (withSentry)488.98 kB+0.17%+820 B 🔺

View base workflow run

Comment threadpackages/core/test/lib/client.test.ts

@cursorcursorBot 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 threadpackages/core/test/lib/utils/warnAboutIgnoredTransactionOptions.test.ts Outdated
@Lms24Lms24 changed the title feat(core): Deprecate beforeSendTransaction and ignoreTransactionsfeat(core): Deprecate beforeSendTransaction and ignoreTransactions and log warnings if used with streamingJul 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 mydeaJuly 31, 2026 11:50
Comment threadpackages/core/src/client.ts
Lms24and 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 andreiborzaJuly 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 developJul 31, 2026
525 of 527 checks passed
@Lms24
Lms24 deleted the feat/deprecate-transaction-options branch July 31, 2026 14:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants

@Lms24@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
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

@Lms24Lms24 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>
@github-actions

github-actionsBot 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.

PathSize% ChangeChange
@sentry/browser29.93 kB+0.38%+113 B 🔺
@sentry/browser - with treeshaking flags28.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 flags75.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/react31.72 kB+0.36%+112 B 🔺
@sentry/react (incl. Tracing)49.44 kB+0.23%+110 B 🔺
@sentry/vue34.86 kB+0.36%+123 B 🔺
@sentry/vue (incl. Tracing)49.16 kB+0.23%+108 B 🔺
@sentry/svelte29.96 kB+0.37%+110 B 🔺
CDN Bundle31.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 - uncompressed95.45 kB+0.36%+335 B 🔺
CDN Bundle (incl. Tracing) - uncompressed142.68 kB+0.24%+336 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed100.16 kB+0.34%+335 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.66 kB+0.23%+336 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.92 kB+0.15%+335 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed261.93 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed265.9 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.64 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.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/server79.88 kB+0.15%+113 B 🔺
@sentry/core/browser51.82 kB+0.22%+113 B 🔺
@sentry/node121.5 kB+0.08%+96 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing85.05 kB+0.17%+138 B 🔺
@sentry/aws-serverless93.33 kB+0.16%+140 B 🔺
@sentry/cloudflare (withSentry) - minified198.76 kB+0.21%+403 B 🔺
@sentry/cloudflare (withSentry)488.98 kB+0.17%+820 B 🔺

View base workflow run

Comment threadpackages/core/test/lib/client.test.ts

@cursorcursorBot 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 threadpackages/core/test/lib/utils/warnAboutIgnoredTransactionOptions.test.ts Outdated
@Lms24Lms24 changed the title feat(core): Deprecate beforeSendTransaction and ignoreTransactionsfeat(core): Deprecate beforeSendTransaction and ignoreTransactions and log warnings if used with streamingJul 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 mydeaJuly 31, 2026 11:50
Comment threadpackages/core/src/client.ts
Lms24and 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 andreiborzaJuly 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 developJul 31, 2026
525 of 527 checks passed
@Lms24
Lms24 deleted the feat/deprecate-transaction-options branch July 31, 2026 14:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants

@Lms24@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

@Lms24Lms24 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>
@github-actions

github-actionsBot 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.

PathSize% ChangeChange
@sentry/browser29.93 kB+0.38%+113 B 🔺
@sentry/browser - with treeshaking flags28.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 flags75.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/react31.72 kB+0.36%+112 B 🔺
@sentry/react (incl. Tracing)49.44 kB+0.23%+110 B 🔺
@sentry/vue34.86 kB+0.36%+123 B 🔺
@sentry/vue (incl. Tracing)49.16 kB+0.23%+108 B 🔺
@sentry/svelte29.96 kB+0.37%+110 B 🔺
CDN Bundle31.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 - uncompressed95.45 kB+0.36%+335 B 🔺
CDN Bundle (incl. Tracing) - uncompressed142.68 kB+0.24%+336 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed100.16 kB+0.34%+335 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.66 kB+0.23%+336 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.92 kB+0.15%+335 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed261.93 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed265.9 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.64 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.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/server79.88 kB+0.15%+113 B 🔺
@sentry/core/browser51.82 kB+0.22%+113 B 🔺
@sentry/node121.5 kB+0.08%+96 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing85.05 kB+0.17%+138 B 🔺
@sentry/aws-serverless93.33 kB+0.16%+140 B 🔺
@sentry/cloudflare (withSentry) - minified198.76 kB+0.21%+403 B 🔺
@sentry/cloudflare (withSentry)488.98 kB+0.17%+820 B 🔺

View base workflow run

Comment threadpackages/core/test/lib/client.test.ts

@cursorcursorBot 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 threadpackages/core/test/lib/utils/warnAboutIgnoredTransactionOptions.test.ts Outdated
@Lms24Lms24 changed the title feat(core): Deprecate beforeSendTransaction and ignoreTransactionsfeat(core): Deprecate beforeSendTransaction and ignoreTransactions and log warnings if used with streamingJul 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 mydeaJuly 31, 2026 11:50
Comment threadpackages/core/src/client.ts
Lms24and 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 andreiborzaJuly 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 developJul 31, 2026
525 of 527 checks passed
@Lms24
Lms24 deleted the feat/deprecate-transaction-options branch July 31, 2026 14:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants

@Lms24@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

@Lms24Lms24 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>
@github-actions

github-actionsBot 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.

PathSize% ChangeChange
@sentry/browser29.93 kB+0.38%+113 B 🔺
@sentry/browser - with treeshaking flags28.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 flags75.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/react31.72 kB+0.36%+112 B 🔺
@sentry/react (incl. Tracing)49.44 kB+0.23%+110 B 🔺
@sentry/vue34.86 kB+0.36%+123 B 🔺
@sentry/vue (incl. Tracing)49.16 kB+0.23%+108 B 🔺
@sentry/svelte29.96 kB+0.37%+110 B 🔺
CDN Bundle31.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 - uncompressed95.45 kB+0.36%+335 B 🔺
CDN Bundle (incl. Tracing) - uncompressed142.68 kB+0.24%+336 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed100.16 kB+0.34%+335 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.66 kB+0.23%+336 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.92 kB+0.15%+335 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed261.93 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed265.9 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.64 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.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/server79.88 kB+0.15%+113 B 🔺
@sentry/core/browser51.82 kB+0.22%+113 B 🔺
@sentry/node121.5 kB+0.08%+96 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing85.05 kB+0.17%+138 B 🔺
@sentry/aws-serverless93.33 kB+0.16%+140 B 🔺
@sentry/cloudflare (withSentry) - minified198.76 kB+0.21%+403 B 🔺
@sentry/cloudflare (withSentry)488.98 kB+0.17%+820 B 🔺

View base workflow run

Comment threadpackages/core/test/lib/client.test.ts

@cursorcursorBot 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 threadpackages/core/test/lib/utils/warnAboutIgnoredTransactionOptions.test.ts Outdated
@Lms24Lms24 changed the title feat(core): Deprecate beforeSendTransaction and ignoreTransactionsfeat(core): Deprecate beforeSendTransaction and ignoreTransactions and log warnings if used with streamingJul 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 mydeaJuly 31, 2026 11:50
Comment threadpackages/core/src/client.ts
Lms24and 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 andreiborzaJuly 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 developJul 31, 2026
525 of 527 checks passed
@Lms24
Lms24 deleted the feat/deprecate-transaction-options branch July 31, 2026 14:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants

@Lms24@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
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

@Lms24Lms24 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>
@github-actions

github-actionsBot 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.

PathSize% ChangeChange
@sentry/browser29.93 kB+0.38%+113 B 🔺
@sentry/browser - with treeshaking flags28.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 flags75.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/react31.72 kB+0.36%+112 B 🔺
@sentry/react (incl. Tracing)49.44 kB+0.23%+110 B 🔺
@sentry/vue34.86 kB+0.36%+123 B 🔺
@sentry/vue (incl. Tracing)49.16 kB+0.23%+108 B 🔺
@sentry/svelte29.96 kB+0.37%+110 B 🔺
CDN Bundle31.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 - uncompressed95.45 kB+0.36%+335 B 🔺
CDN Bundle (incl. Tracing) - uncompressed142.68 kB+0.24%+336 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed100.16 kB+0.34%+335 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.66 kB+0.23%+336 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.92 kB+0.15%+335 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed261.93 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed265.9 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.64 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.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/server79.88 kB+0.15%+113 B 🔺
@sentry/core/browser51.82 kB+0.22%+113 B 🔺
@sentry/node121.5 kB+0.08%+96 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing85.05 kB+0.17%+138 B 🔺
@sentry/aws-serverless93.33 kB+0.16%+140 B 🔺
@sentry/cloudflare (withSentry) - minified198.76 kB+0.21%+403 B 🔺
@sentry/cloudflare (withSentry)488.98 kB+0.17%+820 B 🔺

View base workflow run

Comment threadpackages/core/test/lib/client.test.ts

@cursorcursorBot 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 threadpackages/core/test/lib/utils/warnAboutIgnoredTransactionOptions.test.ts Outdated
@Lms24Lms24 changed the title feat(core): Deprecate beforeSendTransaction and ignoreTransactionsfeat(core): Deprecate beforeSendTransaction and ignoreTransactions and log warnings if used with streamingJul 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 mydeaJuly 31, 2026 11:50
Comment threadpackages/core/src/client.ts
Lms24and 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 andreiborzaJuly 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 developJul 31, 2026
525 of 527 checks passed
@Lms24
Lms24 deleted the feat/deprecate-transaction-options branch July 31, 2026 14:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants

@Lms24@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

@Lms24Lms24 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>
@github-actions

github-actionsBot 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.

PathSize% ChangeChange
@sentry/browser29.93 kB+0.38%+113 B 🔺
@sentry/browser - with treeshaking flags28.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 flags75.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/react31.72 kB+0.36%+112 B 🔺
@sentry/react (incl. Tracing)49.44 kB+0.23%+110 B 🔺
@sentry/vue34.86 kB+0.36%+123 B 🔺
@sentry/vue (incl. Tracing)49.16 kB+0.23%+108 B 🔺
@sentry/svelte29.96 kB+0.37%+110 B 🔺
CDN Bundle31.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 - uncompressed95.45 kB+0.36%+335 B 🔺
CDN Bundle (incl. Tracing) - uncompressed142.68 kB+0.24%+336 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed100.16 kB+0.34%+335 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.66 kB+0.23%+336 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.92 kB+0.15%+335 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed261.93 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed265.9 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.64 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.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/server79.88 kB+0.15%+113 B 🔺
@sentry/core/browser51.82 kB+0.22%+113 B 🔺
@sentry/node121.5 kB+0.08%+96 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing85.05 kB+0.17%+138 B 🔺
@sentry/aws-serverless93.33 kB+0.16%+140 B 🔺
@sentry/cloudflare (withSentry) - minified198.76 kB+0.21%+403 B 🔺
@sentry/cloudflare (withSentry)488.98 kB+0.17%+820 B 🔺

View base workflow run

Comment threadpackages/core/test/lib/client.test.ts

@cursorcursorBot 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 threadpackages/core/test/lib/utils/warnAboutIgnoredTransactionOptions.test.ts Outdated
@Lms24Lms24 changed the title feat(core): Deprecate beforeSendTransaction and ignoreTransactionsfeat(core): Deprecate beforeSendTransaction and ignoreTransactions and log warnings if used with streamingJul 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 mydeaJuly 31, 2026 11:50
Comment threadpackages/core/src/client.ts
Lms24and 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 andreiborzaJuly 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 developJul 31, 2026
525 of 527 checks passed
@Lms24
Lms24 deleted the feat/deprecate-transaction-options branch July 31, 2026 14:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants

@Lms24@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

@Lms24Lms24 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>
@github-actions

github-actionsBot 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.

PathSize% ChangeChange
@sentry/browser29.93 kB+0.38%+113 B 🔺
@sentry/browser - with treeshaking flags28.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 flags75.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/react31.72 kB+0.36%+112 B 🔺
@sentry/react (incl. Tracing)49.44 kB+0.23%+110 B 🔺
@sentry/vue34.86 kB+0.36%+123 B 🔺
@sentry/vue (incl. Tracing)49.16 kB+0.23%+108 B 🔺
@sentry/svelte29.96 kB+0.37%+110 B 🔺
CDN Bundle31.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 - uncompressed95.45 kB+0.36%+335 B 🔺
CDN Bundle (incl. Tracing) - uncompressed142.68 kB+0.24%+336 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed100.16 kB+0.34%+335 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.66 kB+0.23%+336 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.92 kB+0.15%+335 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed261.93 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed265.9 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.64 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.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/server79.88 kB+0.15%+113 B 🔺
@sentry/core/browser51.82 kB+0.22%+113 B 🔺
@sentry/node121.5 kB+0.08%+96 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing85.05 kB+0.17%+138 B 🔺
@sentry/aws-serverless93.33 kB+0.16%+140 B 🔺
@sentry/cloudflare (withSentry) - minified198.76 kB+0.21%+403 B 🔺
@sentry/cloudflare (withSentry)488.98 kB+0.17%+820 B 🔺

View base workflow run

Comment threadpackages/core/test/lib/client.test.ts

@cursorcursorBot 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 threadpackages/core/test/lib/utils/warnAboutIgnoredTransactionOptions.test.ts Outdated
@Lms24Lms24 changed the title feat(core): Deprecate beforeSendTransaction and ignoreTransactionsfeat(core): Deprecate beforeSendTransaction and ignoreTransactions and log warnings if used with streamingJul 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 mydeaJuly 31, 2026 11:50
Comment threadpackages/core/src/client.ts
Lms24and 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 andreiborzaJuly 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 developJul 31, 2026
525 of 527 checks passed
@Lms24
Lms24 deleted the feat/deprecate-transaction-options branch July 31, 2026 14:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants

@Lms24@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
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

@Lms24Lms24 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>
@github-actions

github-actionsBot 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.

PathSize% ChangeChange
@sentry/browser29.93 kB+0.38%+113 B 🔺
@sentry/browser - with treeshaking flags28.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 flags75.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/react31.72 kB+0.36%+112 B 🔺
@sentry/react (incl. Tracing)49.44 kB+0.23%+110 B 🔺
@sentry/vue34.86 kB+0.36%+123 B 🔺
@sentry/vue (incl. Tracing)49.16 kB+0.23%+108 B 🔺
@sentry/svelte29.96 kB+0.37%+110 B 🔺
CDN Bundle31.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 - uncompressed95.45 kB+0.36%+335 B 🔺
CDN Bundle (incl. Tracing) - uncompressed142.68 kB+0.24%+336 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed100.16 kB+0.34%+335 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed146.66 kB+0.23%+336 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed224.92 kB+0.15%+335 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed261.93 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed265.9 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed275.64 kB+0.13%+336 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed279.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/server79.88 kB+0.15%+113 B 🔺
@sentry/core/browser51.82 kB+0.22%+113 B 🔺
@sentry/node121.5 kB+0.08%+96 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection)0 Baddedadded
@sentry/node - without tracing85.05 kB+0.17%+138 B 🔺
@sentry/aws-serverless93.33 kB+0.16%+140 B 🔺
@sentry/cloudflare (withSentry) - minified198.76 kB+0.21%+403 B 🔺
@sentry/cloudflare (withSentry)488.98 kB+0.17%+820 B 🔺

View base workflow run

Comment threadpackages/core/test/lib/client.test.ts

@cursorcursorBot 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 threadpackages/core/test/lib/utils/warnAboutIgnoredTransactionOptions.test.ts Outdated
@Lms24Lms24 changed the title feat(core): Deprecate beforeSendTransaction and ignoreTransactionsfeat(core): Deprecate beforeSendTransaction and ignoreTransactions and log warnings if used with streamingJul 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 mydeaJuly 31, 2026 11:50
Comment threadpackages/core/src/client.ts
Lms24and 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 andreiborzaJuly 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 developJul 31, 2026
525 of 527 checks passed
@Lms24
Lms24 deleted the feat/deprecate-transaction-options branch July 31, 2026 14:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants

@Lms24@andreiborza