Skip to content

fix(cloudflare): Do not add back channel integrations the user removed - #25585

Open
isaacs wants to merge 1 commit into
isaacschlueter/js-3973-cloudflare-export-channel-integrationsfrom
isaacschlueter/js-3974-cloudflare-adds-back-channel-integrations-the-user-removed
Open

isaacs wants to merge 1 commit into
isaacschlueter/js-3973-cloudflare-export-channel-integrationsfrom
isaacschlueter/js-3974-cloudflare-adds-back-channel-integrations-the-user-removed

Conversation

@isaacs

@isaacs isaacs commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

The @sentry/cloudflare/vite plugin stores an integration factory for each instrumented package when the package first runs. At init(), the SDK adds the stored factories to the defaults. A package that runs after init(), for example a driver loaded with a dynamic import(), emits orchestrion.module-injected, and the SDK then called client.addIntegration(factory()).

That handler did not check the user's options, so it ignored each way to opt out: an integrations function that filtered the integration out, defaultIntegrations: false, and a custom defaultIntegrations list. The user got the integration back. For the AI integrations, that can turn prompt and response capture back on. Whether it happened depended on module load order.

The handler now applies the rules that init() applies to the defaults:

  • If the user set defaultIntegrations, the SDK defaults are off, so the handler adds nothing.
  • If integrations is a function, the handler passes the late integration through it with getIntegrationsToSetup and installs the result with the same name, if there is one. This calls the function again, once for each late module. If the function throws, the handler skips the integration, so the module load that emitted the event still works.
  • If integrations is an array, nothing changes. An array cannot remove a default, and addIntegration already skips a name the user configured.

Fixes #25576
Fixes JS-3974

@linear-code

linear-code Bot commented Oct 20, 2026

Copy link
Copy Markdown

JS-3974

@isaacs
isaacs added this pull request to stack #25589 October 20, 2026 22:30
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 29.88 kB - -
@sentry/browser - with treeshaking flags 28.02 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 27.92 kB - -
@sentry/browser (incl. Tracing) 52.07 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 52.07 kB - -
@sentry/browser (incl. Tracing, Profiling) 55.02 kB - -
@sentry/browser (incl. Tracing, Replay) 91.82 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 80.68 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 96.55 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 109.49 kB - -
@sentry/browser (incl. Feedback) 47.4 kB - -
@sentry/browser (incl. sendFeedback) 34.94 kB - -
@sentry/browser (incl. FeedbackAsync) 40.05 kB - -
@sentry/browser (incl. Metrics) 30.9 kB - -
@sentry/browser (incl. Logs) 31.18 kB - -
@sentry/browser (incl. Metrics & Logs) 31.81 kB - -
@sentry/react 31.7 kB - -
@sentry/react (incl. Tracing) 54.39 kB - -
@sentry/vue 38.04 kB - -
@sentry/vue (incl. Tracing) 55.01 kB - -
@sentry/svelte 29.9 kB - -
@sentry/remix (Remix 3 client bundle) 57.08 kB - -
CDN Bundle 31.64 kB - -
CDN Bundle (incl. Tracing) 52.58 kB - -
CDN Bundle (incl. Logs, Metrics) 33.84 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 54.52 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 74.77 kB - -
CDN Bundle (incl. Tracing, Replay) 90.25 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 92.18 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 96.4 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 98.34 kB - -
CDN Bundle - uncompressed 93.18 kB - -
CDN Bundle (incl. Tracing) - uncompressed 156.03 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 99.72 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 161.99 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 229.76 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 276.2 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 282.14 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 289.9 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 295.84 kB - -
@sentry/nextjs (client) 57.28 kB - -
@sentry/sveltekit (client) 52.45 kB - -
@sentry/core/server 41.75 kB - -
@sentry/core/browser 13.81 kB - -
@sentry/node 155.45 kB +0.13% +193 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 84.06 kB - -
@sentry/node - without tracing 97.08 kB +0.17% +160 B 🔺
@sentry/node - without channel injection 133.42 kB +0.14% +182 B 🔺
@sentry/aws-serverless 105.28 kB +0.18% +180 B 🔺
@sentry/cloudflare (withSentry) - minified 212.55 kB +0.79% +1.67 kB 🔺
@sentry/cloudflare (withSentry) 526.82 kB +0.7% +3.65 kB 🔺
@sentry/nextjs/cloudflare (withSentry) - minified 232.11 kB +0.7% +1.6 kB 🔺

View base workflow run

@isaacs

isaacs commented Oct 21, 2026

Copy link
Copy Markdown
Member Author

Bugbot run

@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.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit abb4fe2. Configure here.

@isaacs
isaacs marked this pull request as ready for review October 21, 2026 00:44
@isaacs
isaacs requested a review from a team as a code owner October 21, 2026 00:44
@isaacs
isaacs requested review from JPeer264 and mydea and removed request for a team October 21, 2026 00:44
@isaacs
isaacs force-pushed the isaacschlueter/js-3974-cloudflare-adds-back-channel-integrations-the-user-removed branch from 17f3007 to 1ec6d31 Compare October 21, 2026 01:07
@isaacs
isaacs requested a review from a team as a code owner October 21, 2026 01:13
@isaacs
isaacs requested review from s1gr1d and removed request for a team October 21, 2026 01:13
@isaacs
isaacs force-pushed the isaacschlueter/js-3974-cloudflare-adds-back-channel-integrations-the-user-removed branch from 1ec6d31 to 5097841 Compare October 21, 2026 01:13
@isaacs
isaacs force-pushed the isaacschlueter/js-3974-cloudflare-adds-back-channel-integrations-the-user-removed branch 2 times, most recently from c661f9c to e0a34f5 Compare October 21, 2026 01:20
The `@sentry/cloudflare/vite` plugin stores an integration factory for
each instrumented package when the package first runs. At `init()`, the
SDK adds the stored factories to the defaults. A package that runs after
`init()`, for example a driver loaded with a dynamic `import()`, emits
`orchestrion.module-injected`, and the SDK then called
`client.addIntegration(factory())`.

That handler did not check the user's options, so it ignored each way
to opt out: an `integrations` function that filtered the integration
out, `defaultIntegrations: false`, and a custom `defaultIntegrations`
list. The user got the integration back. For the AI integrations, that
can turn prompt and response capture back on. Whether it happened
depended on module load order.

The handler now applies the rules that `init()` applies to the defaults:

- If the user set `defaultIntegrations`, the SDK defaults are off, so
  the handler adds nothing.
- If `integrations` is a function, the handler passes the late
  integration through it with `getIntegrationsToSetup` and installs the
  result with the same name, if there is one. This calls the function
  again, once for each late module. If the function throws, the handler
  skips the integration, so the module load that emitted the event
  still works.
- If `integrations` is an array, nothing changes. An array cannot
  remove a default, and `addIntegration` already skips a name the user
  configured.

Fixes #25576
Fixes JS-3974

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@isaacs
isaacs force-pushed the isaacschlueter/js-3974-cloudflare-adds-back-channel-integrations-the-user-removed branch from e0a34f5 to f20e973 Compare October 21, 2026 04:14

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Cloudflare adds back channel integrations the user removed, when the module loads after  init()

1 participant