feat(node)!: Make channel-based instrumentation the default - #22501

Merged
andreiborza merged 47 commits into
developfrom
ab/channel-based-default
Jul 27, 2026
Merged

feat(node)!: Make channel-based instrumentation the default#22501
andreiborza merged 47 commits into
developfrom
ab/channel-based-default

Conversation

@andreiborza

@andreiborzaandreiborza commented Jul 22, 2026

Copy link
Copy Markdown
Member

What

Make orchestrion diagnostics-channel instrumentation the default in @sentry/node and remove the experimentalUseDiagnosticsChannelInjection() opt-in.

Why

The channel-based instrumentations shipped opt-in in v10. Making them the default in v11 unlocks instrumentation at run and build time.

Removal of the vendored OTel/IITM code is intentionally out of scope; it is tracked separately as follow-up.

Closes: #22345

Comment threadpackages/aws-serverless/src/init.ts
Comment threadpackages/node/src/sdk/index.ts
@github-actions

github-actionsBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser28.02 kB--
@sentry/browser - with treeshaking flags26.46 kB--
@sentry/browser (incl. Tracing)46.54 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.46 kB--
@sentry/browser (incl. Tracing, Profiling)51.3 kB--
@sentry/browser (incl. Tracing, Replay)85.87 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.51 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.58 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)45.2 kB--
@sentry/browser (incl. sendFeedback)32.82 kB--
@sentry/browser (incl. FeedbackAsync)37.86 kB--
@sentry/browser (incl. Metrics)29.12 kB--
@sentry/browser (incl. Logs)29.34 kB--
@sentry/browser (incl. Metrics & Logs)30.05 kB--
@sentry/react29.8 kB--
@sentry/react (incl. Tracing)48.85 kB--
@sentry/vue33.97 kB--
@sentry/vue (incl. Tracing)48.53 kB--
@sentry/svelte28.04 kB--
CDN Bundle30.32 kB--
CDN Bundle (incl. Tracing)47.71 kB--
CDN Bundle (incl. Logs, Metrics)31.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.08 kB--
CDN Bundle (incl. Replay, Logs, Metrics)71.17 kB--
CDN Bundle (incl. Tracing, Replay)85.31 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.61 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.12 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.39 kB--
CDN Bundle - uncompressed90.26 kB--
CDN Bundle (incl. Tracing) - uncompressed143.22 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.97 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed147.2 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.73 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.47 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266.44 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed276.18 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed280.13 kB--
@sentry/nextjs (client)51.41 kB--
@sentry/sveltekit (client)47.01 kB--
@sentry/core/server79.57 kB--
@sentry/core/browser51.54 kB--
@sentry/node125.39 kB+11.49%+12.92 kB 🔺
⛔️ @sentry/node (incl. diagnostics channel injection) (max: null)0 Bremovedremoved
@sentry/node/import (ESM hook with diagnostics-channel injection)166 B--
@sentry/node - without tracing85.7 kB+38.2%+23.69 kB 🔺
@sentry/aws-serverless93.7 kB+29.62%+21.41 kB 🔺
@sentry/cloudflare (withSentry) - minified195.94 kB--
@sentry/cloudflare (withSentry)482.5 kB--

View base workflow run

Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/mysql/index.ts
Comment threadpackages/node/src/integrations/tracing/express.ts
Comment threadpackages/node/src/integrations/tracing/index.ts
Comment threaddev-packages/e2e-tests/test-applications/node-express/tests/trpc.test.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 921217b to e9cde04CompareJuly 23, 2026 11:56
Comment threadpackages/node/src/integrations/tracing/express.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 404fb86 to c9a6733CompareJuly 24, 2026 09:07
Comment threadpackages/node/src/integrations/tracing/redis/index.ts Outdated
andreiborzaand others added 5 commits July 24, 2026 19:24
Make orchestrion diagnostics-channel injection the default in `@sentry/node`
and remove the `experimentalUseDiagnosticsChannelInjection()` opt-in.
`Sentry.init()` now installs the channel-injection module hooks unconditionally
when span recording is enabled, so the opt-in function, its loader indirection,
and the name-based OTel->channel integration swap are gone. The self-selecting
`dataloader` and `knex` integrations pick the channel path automatically now
that `isOrchestrionInjected()` is true by default.
Redis stays a composite integration: the native diagnostics-channel subscribers
(node-redis >=5.12, ioredis >=5.11, batches) plus the orchestrion subscribers
for the older ranges, all sharing the node cache `responseHook`. The vendored
OTel patchers only run on runtimes without `tracingChannel` (Node <18.19).
BREAKING CHANGE: `experimentalUseDiagnosticsChannelInjection()`,
`diagnosticsChannelInjectionIntegrations()`, `isDiagnosticsChannelInjectionEnabled()`
and `applyDiagnosticsChannelInjectionIntegrations()` are removed from
`@sentry/node`. Channel-based instrumentation is now always on; no opt-in call
is needed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Google GenAI instrumentation
from `@sentry/node`.
## Why
The Google GenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry GraphQL instrumentation from
`@sentry/node`.
## Why
The GraphQL integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry amqplib instrumentation from
`@sentry/node`.
## Why
The amqplib integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry generic-pool instrumentation
from `@sentry/node`.
## Why
The generic-pool integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql instrumentation from
`@sentry/node`.
## Why
The mysql integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql2 instrumentation from
`@sentry/node`.
## Why
The mysql2 integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Vercel AI instrumentation from
`@sentry/node`.
## Why
The Vercel AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry tedious instrumentation from
`@sentry/node`.
## Why
The tedious integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `HapiInstrumentation` (and
`instrumentHapi`) plus its vendored code from `@sentry/node`. Keeps
`setupHapiErrorHandler`.
## Why
The Hapi integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry kafkajs instrumentation from
`@sentry/node`.
## Why
The kafkajs integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the vendored OpenTelemetry fallback from the node
`dataloaderIntegration` and `knexIntegration`. They are now re-exported
directly from `@sentry/server-utils`, matching the other channel-based
integrations.
## Why
These were the only two integrations still keeping a vendored OTel
instrumentation as a runtime fallback (used when diagnostics-channel
injection was unavailable). Making them channel-only removes the last
vendored DB instrumentation and aligns them with every other integration
since channel-based became the default (#22501).
Note: on runtimes without diagnostics-channel injection (e.g. Bun, Deno,
older Node, or when injection fails), these integrations no longer
produce spans, consistent with the other integrations.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `KoaInstrumentation` (and
`instrumentKoa`) plus its vendored code from `@sentry/node`. Keeps
`setupKoaErrorHandler`.
## Why
The Koa integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry `redis` and `ioredis`
instrumentations (and their shared `semconv.ts`) from `@sentry/node`.
Keeps the `redisIntegration` wrapper, `cache.ts`, and the
`vendored/types.ts` that `cache.ts` still imports.
## Why
The redis integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored OTel instrumentations are no longer wired into the SDK, so they
are pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `ExpressInstrumentation` class (and
`instrumentExpress`) from `@sentry/node`. Keeps
`setupExpressErrorHandler` / `expressErrorHandler`.
## Why
The express integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation is no longer wired up; only the Sentry-specific
error handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres (pg) instrumentation
from `@sentry/node`.
## Why
The postgres (pg) integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangGraph instrumentation from
`@sentry/node`.
## Why
The LangGraph integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry MongoDB instrumentation from
`@sentry/node`.
## Why
The MongoDB integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry lru-memoizer instrumentation
from `@sentry/node`.
## Why
The lru-memoizer integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangChain instrumentation from
`@sentry/node`.
## Why
The LangChain integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Mongoose instrumentation from
`@sentry/node`.
## Why
The Mongoose integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry OpenAI instrumentation from
`@sentry/node`.
## Why
The OpenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Firebase instrumentation from
`@sentry/node`.
## Why
The Firebase integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres.js (`postgres`)
instrumentation from `@sentry/node`.
## Why
The postgres.js integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Anthropic AI instrumentation
from `@sentry/node`.
## Why
The Anthropic AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since
#22501). The vendored instrumentation here is
no longer wired into the SDK, so it is pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Drops support for Fastify `<3.21.0` by removing
`FastifyInstrumentationV3` (and `instrumentFastifyV3`). The node
`fastifyIntegration` becomes a thin pass-through to the channel-based
integration in `@sentry/server-utils`.
## Why
The channel-based `fastifyIntegration` (default since #22501) covers
Fastify `>=3.21.0 <6`. The v3 OpenTelemetry instrumentation only existed
to fill the `>=3.0.0 <3.21.0` gap, and it was the last remaining
import-in-the-middle module-patcher in `@sentry/node`. Dropping the old
Fastify range lets us remove it.
Ref: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
…strumentation base (#22755)
## What
Final cleanup PR. Once the vendored OpenTelemetry instrumentations are
gone, `@sentry/node` has no import-in-the-middle module patchers left,
so this removes the remaining iitm plumbing:
* Remove the `registerEsmLoaderHooks` option from `NodeOptions` and drop
the `import-in-the-middle` dependency.
* Delete the shared `InstrumentationNodeModuleFile` helper,
`esmLoader.ts`, and the ESM-loader detection util.
* Remove the deprecated `SentryHttpInstrumentation` and
`SentryNodeFetchInstrumentation` classes. The live
diagnostics-channel-based `instrumentHttpOutgoingRequests` /
`instrumentUndici` functions are kept.
* Delete the now-obsolete `esm/import-in-the-middle` integration-test
suite and add the changelog entry.
## Why
These were the last pieces tying `@sentry/node` to import-in-the-middle.
All performance integrations are channel-based via
`@sentry/server-utils` (default since
#22501), so the ESM loader hook served
nothing.
> **Depends on the per-integration removal PRs.** This branch deletes
`InstrumentationNodeModuleFile`, which the vendored instrumentations
still import on `develop`, so CI here stays red until those PRs merge.
It should be merged last.
Closes: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
chargome added a commit that referenced this pull request Aug 3, 2026
`withSentryConfig` now wires up the orchestrion code transform
automatically for webpack and Turbopack server builds.
This flips the default: build-time instrumentation was previously opt-in
behind `_experimental.useDiagnosticsChannelInjection`, which is removed.
Opting out now goes through the shared `buildTimeInstrumentation: false`
build option that the other meta-framework SDKs already use.
`resolveBuildTimeInstrumentationOption` keeps the feature off on
Turbopack below Next.js 16, where the transform can't run and the
packages dropped from `serverExternalPackages` would end up bundled
*and* uninstrumented.
Also removes the `_sentryUseDiagnosticsChannelInjection` env marker,
whose only reader was deleted in #22501.
closes#22779
Sign up for freeto 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.

Make channel-based instrumentations the default in v11

3 participants

@andreiborza@isaacs@chargome
, '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(node)!: Make channel-based instrumentation the default - #22501

Merged
andreiborza merged 47 commits into
developfrom
ab/channel-based-default
Jul 27, 2026
Merged

feat(node)!: Make channel-based instrumentation the default#22501
andreiborza merged 47 commits into
developfrom
ab/channel-based-default

Conversation

@andreiborza

@andreiborzaandreiborza commented Jul 22, 2026

Copy link
Copy Markdown
Member

What

Make orchestrion diagnostics-channel instrumentation the default in @sentry/node and remove the experimentalUseDiagnosticsChannelInjection() opt-in.

Why

The channel-based instrumentations shipped opt-in in v10. Making them the default in v11 unlocks instrumentation at run and build time.

Removal of the vendored OTel/IITM code is intentionally out of scope; it is tracked separately as follow-up.

Closes: #22345

Comment threadpackages/aws-serverless/src/init.ts
Comment threadpackages/node/src/sdk/index.ts
@github-actions

github-actionsBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser28.02 kB--
@sentry/browser - with treeshaking flags26.46 kB--
@sentry/browser (incl. Tracing)46.54 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.46 kB--
@sentry/browser (incl. Tracing, Profiling)51.3 kB--
@sentry/browser (incl. Tracing, Replay)85.87 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.51 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.58 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)45.2 kB--
@sentry/browser (incl. sendFeedback)32.82 kB--
@sentry/browser (incl. FeedbackAsync)37.86 kB--
@sentry/browser (incl. Metrics)29.12 kB--
@sentry/browser (incl. Logs)29.34 kB--
@sentry/browser (incl. Metrics & Logs)30.05 kB--
@sentry/react29.8 kB--
@sentry/react (incl. Tracing)48.85 kB--
@sentry/vue33.97 kB--
@sentry/vue (incl. Tracing)48.53 kB--
@sentry/svelte28.04 kB--
CDN Bundle30.32 kB--
CDN Bundle (incl. Tracing)47.71 kB--
CDN Bundle (incl. Logs, Metrics)31.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.08 kB--
CDN Bundle (incl. Replay, Logs, Metrics)71.17 kB--
CDN Bundle (incl. Tracing, Replay)85.31 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.61 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.12 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.39 kB--
CDN Bundle - uncompressed90.26 kB--
CDN Bundle (incl. Tracing) - uncompressed143.22 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.97 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed147.2 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.73 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.47 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266.44 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed276.18 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed280.13 kB--
@sentry/nextjs (client)51.41 kB--
@sentry/sveltekit (client)47.01 kB--
@sentry/core/server79.57 kB--
@sentry/core/browser51.54 kB--
@sentry/node125.39 kB+11.49%+12.92 kB 🔺
⛔️ @sentry/node (incl. diagnostics channel injection) (max: null)0 Bremovedremoved
@sentry/node/import (ESM hook with diagnostics-channel injection)166 B--
@sentry/node - without tracing85.7 kB+38.2%+23.69 kB 🔺
@sentry/aws-serverless93.7 kB+29.62%+21.41 kB 🔺
@sentry/cloudflare (withSentry) - minified195.94 kB--
@sentry/cloudflare (withSentry)482.5 kB--

View base workflow run

Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/mysql/index.ts
Comment threadpackages/node/src/integrations/tracing/express.ts
Comment threadpackages/node/src/integrations/tracing/index.ts
Comment threaddev-packages/e2e-tests/test-applications/node-express/tests/trpc.test.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 921217b to e9cde04CompareJuly 23, 2026 11:56
Comment threadpackages/node/src/integrations/tracing/express.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 404fb86 to c9a6733CompareJuly 24, 2026 09:07
Comment threadpackages/node/src/integrations/tracing/redis/index.ts Outdated
andreiborzaand others added 5 commits July 24, 2026 19:24
Make orchestrion diagnostics-channel injection the default in `@sentry/node`
and remove the `experimentalUseDiagnosticsChannelInjection()` opt-in.
`Sentry.init()` now installs the channel-injection module hooks unconditionally
when span recording is enabled, so the opt-in function, its loader indirection,
and the name-based OTel->channel integration swap are gone. The self-selecting
`dataloader` and `knex` integrations pick the channel path automatically now
that `isOrchestrionInjected()` is true by default.
Redis stays a composite integration: the native diagnostics-channel subscribers
(node-redis >=5.12, ioredis >=5.11, batches) plus the orchestrion subscribers
for the older ranges, all sharing the node cache `responseHook`. The vendored
OTel patchers only run on runtimes without `tracingChannel` (Node <18.19).
BREAKING CHANGE: `experimentalUseDiagnosticsChannelInjection()`,
`diagnosticsChannelInjectionIntegrations()`, `isDiagnosticsChannelInjectionEnabled()`
and `applyDiagnosticsChannelInjectionIntegrations()` are removed from
`@sentry/node`. Channel-based instrumentation is now always on; no opt-in call
is needed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Google GenAI instrumentation
from `@sentry/node`.
## Why
The Google GenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry GraphQL instrumentation from
`@sentry/node`.
## Why
The GraphQL integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry amqplib instrumentation from
`@sentry/node`.
## Why
The amqplib integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry generic-pool instrumentation
from `@sentry/node`.
## Why
The generic-pool integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql instrumentation from
`@sentry/node`.
## Why
The mysql integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql2 instrumentation from
`@sentry/node`.
## Why
The mysql2 integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Vercel AI instrumentation from
`@sentry/node`.
## Why
The Vercel AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry tedious instrumentation from
`@sentry/node`.
## Why
The tedious integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `HapiInstrumentation` (and
`instrumentHapi`) plus its vendored code from `@sentry/node`. Keeps
`setupHapiErrorHandler`.
## Why
The Hapi integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry kafkajs instrumentation from
`@sentry/node`.
## Why
The kafkajs integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the vendored OpenTelemetry fallback from the node
`dataloaderIntegration` and `knexIntegration`. They are now re-exported
directly from `@sentry/server-utils`, matching the other channel-based
integrations.
## Why
These were the only two integrations still keeping a vendored OTel
instrumentation as a runtime fallback (used when diagnostics-channel
injection was unavailable). Making them channel-only removes the last
vendored DB instrumentation and aligns them with every other integration
since channel-based became the default (#22501).
Note: on runtimes without diagnostics-channel injection (e.g. Bun, Deno,
older Node, or when injection fails), these integrations no longer
produce spans, consistent with the other integrations.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `KoaInstrumentation` (and
`instrumentKoa`) plus its vendored code from `@sentry/node`. Keeps
`setupKoaErrorHandler`.
## Why
The Koa integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry `redis` and `ioredis`
instrumentations (and their shared `semconv.ts`) from `@sentry/node`.
Keeps the `redisIntegration` wrapper, `cache.ts`, and the
`vendored/types.ts` that `cache.ts` still imports.
## Why
The redis integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored OTel instrumentations are no longer wired into the SDK, so they
are pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `ExpressInstrumentation` class (and
`instrumentExpress`) from `@sentry/node`. Keeps
`setupExpressErrorHandler` / `expressErrorHandler`.
## Why
The express integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation is no longer wired up; only the Sentry-specific
error handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres (pg) instrumentation
from `@sentry/node`.
## Why
The postgres (pg) integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangGraph instrumentation from
`@sentry/node`.
## Why
The LangGraph integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry MongoDB instrumentation from
`@sentry/node`.
## Why
The MongoDB integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry lru-memoizer instrumentation
from `@sentry/node`.
## Why
The lru-memoizer integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangChain instrumentation from
`@sentry/node`.
## Why
The LangChain integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Mongoose instrumentation from
`@sentry/node`.
## Why
The Mongoose integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry OpenAI instrumentation from
`@sentry/node`.
## Why
The OpenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Firebase instrumentation from
`@sentry/node`.
## Why
The Firebase integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres.js (`postgres`)
instrumentation from `@sentry/node`.
## Why
The postgres.js integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Anthropic AI instrumentation
from `@sentry/node`.
## Why
The Anthropic AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since
#22501). The vendored instrumentation here is
no longer wired into the SDK, so it is pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Drops support for Fastify `<3.21.0` by removing
`FastifyInstrumentationV3` (and `instrumentFastifyV3`). The node
`fastifyIntegration` becomes a thin pass-through to the channel-based
integration in `@sentry/server-utils`.
## Why
The channel-based `fastifyIntegration` (default since #22501) covers
Fastify `>=3.21.0 <6`. The v3 OpenTelemetry instrumentation only existed
to fill the `>=3.0.0 <3.21.0` gap, and it was the last remaining
import-in-the-middle module-patcher in `@sentry/node`. Dropping the old
Fastify range lets us remove it.
Ref: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
…strumentation base (#22755)
## What
Final cleanup PR. Once the vendored OpenTelemetry instrumentations are
gone, `@sentry/node` has no import-in-the-middle module patchers left,
so this removes the remaining iitm plumbing:
* Remove the `registerEsmLoaderHooks` option from `NodeOptions` and drop
the `import-in-the-middle` dependency.
* Delete the shared `InstrumentationNodeModuleFile` helper,
`esmLoader.ts`, and the ESM-loader detection util.
* Remove the deprecated `SentryHttpInstrumentation` and
`SentryNodeFetchInstrumentation` classes. The live
diagnostics-channel-based `instrumentHttpOutgoingRequests` /
`instrumentUndici` functions are kept.
* Delete the now-obsolete `esm/import-in-the-middle` integration-test
suite and add the changelog entry.
## Why
These were the last pieces tying `@sentry/node` to import-in-the-middle.
All performance integrations are channel-based via
`@sentry/server-utils` (default since
#22501), so the ESM loader hook served
nothing.
> **Depends on the per-integration removal PRs.** This branch deletes
`InstrumentationNodeModuleFile`, which the vendored instrumentations
still import on `develop`, so CI here stays red until those PRs merge.
It should be merged last.
Closes: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
chargome added a commit that referenced this pull request Aug 3, 2026
`withSentryConfig` now wires up the orchestrion code transform
automatically for webpack and Turbopack server builds.
This flips the default: build-time instrumentation was previously opt-in
behind `_experimental.useDiagnosticsChannelInjection`, which is removed.
Opting out now goes through the shared `buildTimeInstrumentation: false`
build option that the other meta-framework SDKs already use.
`resolveBuildTimeInstrumentationOption` keeps the feature off on
Turbopack below Next.js 16, where the transform can't run and the
packages dropped from `serverExternalPackages` would end up bundled
*and* uninstrumented.
Also removes the `_sentryUseDiagnosticsChannelInjection` env marker,
whose only reader was deleted in #22501.
closes#22779
Sign up for freeto 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.

Make channel-based instrumentations the default in v11

3 participants

@andreiborza@isaacs@chargome
, '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(node)!: Make channel-based instrumentation the default - #22501

Merged
andreiborza merged 47 commits into
developfrom
ab/channel-based-default
Jul 27, 2026
Merged

feat(node)!: Make channel-based instrumentation the default#22501
andreiborza merged 47 commits into
developfrom
ab/channel-based-default

Conversation

@andreiborza

@andreiborzaandreiborza commented Jul 22, 2026

Copy link
Copy Markdown
Member

What

Make orchestrion diagnostics-channel instrumentation the default in @sentry/node and remove the experimentalUseDiagnosticsChannelInjection() opt-in.

Why

The channel-based instrumentations shipped opt-in in v10. Making them the default in v11 unlocks instrumentation at run and build time.

Removal of the vendored OTel/IITM code is intentionally out of scope; it is tracked separately as follow-up.

Closes: #22345

Comment threadpackages/aws-serverless/src/init.ts
Comment threadpackages/node/src/sdk/index.ts
@github-actions

github-actionsBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser28.02 kB--
@sentry/browser - with treeshaking flags26.46 kB--
@sentry/browser (incl. Tracing)46.54 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.46 kB--
@sentry/browser (incl. Tracing, Profiling)51.3 kB--
@sentry/browser (incl. Tracing, Replay)85.87 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.51 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.58 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)45.2 kB--
@sentry/browser (incl. sendFeedback)32.82 kB--
@sentry/browser (incl. FeedbackAsync)37.86 kB--
@sentry/browser (incl. Metrics)29.12 kB--
@sentry/browser (incl. Logs)29.34 kB--
@sentry/browser (incl. Metrics & Logs)30.05 kB--
@sentry/react29.8 kB--
@sentry/react (incl. Tracing)48.85 kB--
@sentry/vue33.97 kB--
@sentry/vue (incl. Tracing)48.53 kB--
@sentry/svelte28.04 kB--
CDN Bundle30.32 kB--
CDN Bundle (incl. Tracing)47.71 kB--
CDN Bundle (incl. Logs, Metrics)31.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.08 kB--
CDN Bundle (incl. Replay, Logs, Metrics)71.17 kB--
CDN Bundle (incl. Tracing, Replay)85.31 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.61 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.12 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.39 kB--
CDN Bundle - uncompressed90.26 kB--
CDN Bundle (incl. Tracing) - uncompressed143.22 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.97 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed147.2 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.73 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.47 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266.44 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed276.18 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed280.13 kB--
@sentry/nextjs (client)51.41 kB--
@sentry/sveltekit (client)47.01 kB--
@sentry/core/server79.57 kB--
@sentry/core/browser51.54 kB--
@sentry/node125.39 kB+11.49%+12.92 kB 🔺
⛔️ @sentry/node (incl. diagnostics channel injection) (max: null)0 Bremovedremoved
@sentry/node/import (ESM hook with diagnostics-channel injection)166 B--
@sentry/node - without tracing85.7 kB+38.2%+23.69 kB 🔺
@sentry/aws-serverless93.7 kB+29.62%+21.41 kB 🔺
@sentry/cloudflare (withSentry) - minified195.94 kB--
@sentry/cloudflare (withSentry)482.5 kB--

View base workflow run

Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/mysql/index.ts
Comment threadpackages/node/src/integrations/tracing/express.ts
Comment threadpackages/node/src/integrations/tracing/index.ts
Comment threaddev-packages/e2e-tests/test-applications/node-express/tests/trpc.test.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 921217b to e9cde04CompareJuly 23, 2026 11:56
Comment threadpackages/node/src/integrations/tracing/express.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 404fb86 to c9a6733CompareJuly 24, 2026 09:07
Comment threadpackages/node/src/integrations/tracing/redis/index.ts Outdated
andreiborzaand others added 5 commits July 24, 2026 19:24
Make orchestrion diagnostics-channel injection the default in `@sentry/node`
and remove the `experimentalUseDiagnosticsChannelInjection()` opt-in.
`Sentry.init()` now installs the channel-injection module hooks unconditionally
when span recording is enabled, so the opt-in function, its loader indirection,
and the name-based OTel->channel integration swap are gone. The self-selecting
`dataloader` and `knex` integrations pick the channel path automatically now
that `isOrchestrionInjected()` is true by default.
Redis stays a composite integration: the native diagnostics-channel subscribers
(node-redis >=5.12, ioredis >=5.11, batches) plus the orchestrion subscribers
for the older ranges, all sharing the node cache `responseHook`. The vendored
OTel patchers only run on runtimes without `tracingChannel` (Node <18.19).
BREAKING CHANGE: `experimentalUseDiagnosticsChannelInjection()`,
`diagnosticsChannelInjectionIntegrations()`, `isDiagnosticsChannelInjectionEnabled()`
and `applyDiagnosticsChannelInjectionIntegrations()` are removed from
`@sentry/node`. Channel-based instrumentation is now always on; no opt-in call
is needed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Google GenAI instrumentation
from `@sentry/node`.
## Why
The Google GenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry GraphQL instrumentation from
`@sentry/node`.
## Why
The GraphQL integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry amqplib instrumentation from
`@sentry/node`.
## Why
The amqplib integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry generic-pool instrumentation
from `@sentry/node`.
## Why
The generic-pool integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql instrumentation from
`@sentry/node`.
## Why
The mysql integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql2 instrumentation from
`@sentry/node`.
## Why
The mysql2 integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Vercel AI instrumentation from
`@sentry/node`.
## Why
The Vercel AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry tedious instrumentation from
`@sentry/node`.
## Why
The tedious integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `HapiInstrumentation` (and
`instrumentHapi`) plus its vendored code from `@sentry/node`. Keeps
`setupHapiErrorHandler`.
## Why
The Hapi integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry kafkajs instrumentation from
`@sentry/node`.
## Why
The kafkajs integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the vendored OpenTelemetry fallback from the node
`dataloaderIntegration` and `knexIntegration`. They are now re-exported
directly from `@sentry/server-utils`, matching the other channel-based
integrations.
## Why
These were the only two integrations still keeping a vendored OTel
instrumentation as a runtime fallback (used when diagnostics-channel
injection was unavailable). Making them channel-only removes the last
vendored DB instrumentation and aligns them with every other integration
since channel-based became the default (#22501).
Note: on runtimes without diagnostics-channel injection (e.g. Bun, Deno,
older Node, or when injection fails), these integrations no longer
produce spans, consistent with the other integrations.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `KoaInstrumentation` (and
`instrumentKoa`) plus its vendored code from `@sentry/node`. Keeps
`setupKoaErrorHandler`.
## Why
The Koa integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry `redis` and `ioredis`
instrumentations (and their shared `semconv.ts`) from `@sentry/node`.
Keeps the `redisIntegration` wrapper, `cache.ts`, and the
`vendored/types.ts` that `cache.ts` still imports.
## Why
The redis integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored OTel instrumentations are no longer wired into the SDK, so they
are pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `ExpressInstrumentation` class (and
`instrumentExpress`) from `@sentry/node`. Keeps
`setupExpressErrorHandler` / `expressErrorHandler`.
## Why
The express integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation is no longer wired up; only the Sentry-specific
error handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres (pg) instrumentation
from `@sentry/node`.
## Why
The postgres (pg) integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangGraph instrumentation from
`@sentry/node`.
## Why
The LangGraph integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry MongoDB instrumentation from
`@sentry/node`.
## Why
The MongoDB integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry lru-memoizer instrumentation
from `@sentry/node`.
## Why
The lru-memoizer integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangChain instrumentation from
`@sentry/node`.
## Why
The LangChain integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Mongoose instrumentation from
`@sentry/node`.
## Why
The Mongoose integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry OpenAI instrumentation from
`@sentry/node`.
## Why
The OpenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Firebase instrumentation from
`@sentry/node`.
## Why
The Firebase integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres.js (`postgres`)
instrumentation from `@sentry/node`.
## Why
The postgres.js integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Anthropic AI instrumentation
from `@sentry/node`.
## Why
The Anthropic AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since
#22501). The vendored instrumentation here is
no longer wired into the SDK, so it is pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Drops support for Fastify `<3.21.0` by removing
`FastifyInstrumentationV3` (and `instrumentFastifyV3`). The node
`fastifyIntegration` becomes a thin pass-through to the channel-based
integration in `@sentry/server-utils`.
## Why
The channel-based `fastifyIntegration` (default since #22501) covers
Fastify `>=3.21.0 <6`. The v3 OpenTelemetry instrumentation only existed
to fill the `>=3.0.0 <3.21.0` gap, and it was the last remaining
import-in-the-middle module-patcher in `@sentry/node`. Dropping the old
Fastify range lets us remove it.
Ref: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
…strumentation base (#22755)
## What
Final cleanup PR. Once the vendored OpenTelemetry instrumentations are
gone, `@sentry/node` has no import-in-the-middle module patchers left,
so this removes the remaining iitm plumbing:
* Remove the `registerEsmLoaderHooks` option from `NodeOptions` and drop
the `import-in-the-middle` dependency.
* Delete the shared `InstrumentationNodeModuleFile` helper,
`esmLoader.ts`, and the ESM-loader detection util.
* Remove the deprecated `SentryHttpInstrumentation` and
`SentryNodeFetchInstrumentation` classes. The live
diagnostics-channel-based `instrumentHttpOutgoingRequests` /
`instrumentUndici` functions are kept.
* Delete the now-obsolete `esm/import-in-the-middle` integration-test
suite and add the changelog entry.
## Why
These were the last pieces tying `@sentry/node` to import-in-the-middle.
All performance integrations are channel-based via
`@sentry/server-utils` (default since
#22501), so the ESM loader hook served
nothing.
> **Depends on the per-integration removal PRs.** This branch deletes
`InstrumentationNodeModuleFile`, which the vendored instrumentations
still import on `develop`, so CI here stays red until those PRs merge.
It should be merged last.
Closes: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
chargome added a commit that referenced this pull request Aug 3, 2026
`withSentryConfig` now wires up the orchestrion code transform
automatically for webpack and Turbopack server builds.
This flips the default: build-time instrumentation was previously opt-in
behind `_experimental.useDiagnosticsChannelInjection`, which is removed.
Opting out now goes through the shared `buildTimeInstrumentation: false`
build option that the other meta-framework SDKs already use.
`resolveBuildTimeInstrumentationOption` keeps the feature off on
Turbopack below Next.js 16, where the transform can't run and the
packages dropped from `serverExternalPackages` would end up bundled
*and* uninstrumented.
Also removes the `_sentryUseDiagnosticsChannelInjection` env marker,
whose only reader was deleted in #22501.
closes#22779
Sign up for freeto 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.

Make channel-based instrumentations the default in v11

3 participants

@andreiborza@isaacs@chargome
, '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(node)!: Make channel-based instrumentation the default - #22501

Merged
andreiborza merged 47 commits into
developfrom
ab/channel-based-default
Jul 27, 2026
Merged

feat(node)!: Make channel-based instrumentation the default#22501
andreiborza merged 47 commits into
developfrom
ab/channel-based-default

Conversation

@andreiborza

@andreiborzaandreiborza commented Jul 22, 2026

Copy link
Copy Markdown
Member

What

Make orchestrion diagnostics-channel instrumentation the default in @sentry/node and remove the experimentalUseDiagnosticsChannelInjection() opt-in.

Why

The channel-based instrumentations shipped opt-in in v10. Making them the default in v11 unlocks instrumentation at run and build time.

Removal of the vendored OTel/IITM code is intentionally out of scope; it is tracked separately as follow-up.

Closes: #22345

Comment threadpackages/aws-serverless/src/init.ts
Comment threadpackages/node/src/sdk/index.ts
@github-actions

github-actionsBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser28.02 kB--
@sentry/browser - with treeshaking flags26.46 kB--
@sentry/browser (incl. Tracing)46.54 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.46 kB--
@sentry/browser (incl. Tracing, Profiling)51.3 kB--
@sentry/browser (incl. Tracing, Replay)85.87 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.51 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.58 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)45.2 kB--
@sentry/browser (incl. sendFeedback)32.82 kB--
@sentry/browser (incl. FeedbackAsync)37.86 kB--
@sentry/browser (incl. Metrics)29.12 kB--
@sentry/browser (incl. Logs)29.34 kB--
@sentry/browser (incl. Metrics & Logs)30.05 kB--
@sentry/react29.8 kB--
@sentry/react (incl. Tracing)48.85 kB--
@sentry/vue33.97 kB--
@sentry/vue (incl. Tracing)48.53 kB--
@sentry/svelte28.04 kB--
CDN Bundle30.32 kB--
CDN Bundle (incl. Tracing)47.71 kB--
CDN Bundle (incl. Logs, Metrics)31.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.08 kB--
CDN Bundle (incl. Replay, Logs, Metrics)71.17 kB--
CDN Bundle (incl. Tracing, Replay)85.31 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.61 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.12 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.39 kB--
CDN Bundle - uncompressed90.26 kB--
CDN Bundle (incl. Tracing) - uncompressed143.22 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.97 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed147.2 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.73 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.47 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266.44 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed276.18 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed280.13 kB--
@sentry/nextjs (client)51.41 kB--
@sentry/sveltekit (client)47.01 kB--
@sentry/core/server79.57 kB--
@sentry/core/browser51.54 kB--
@sentry/node125.39 kB+11.49%+12.92 kB 🔺
⛔️ @sentry/node (incl. diagnostics channel injection) (max: null)0 Bremovedremoved
@sentry/node/import (ESM hook with diagnostics-channel injection)166 B--
@sentry/node - without tracing85.7 kB+38.2%+23.69 kB 🔺
@sentry/aws-serverless93.7 kB+29.62%+21.41 kB 🔺
@sentry/cloudflare (withSentry) - minified195.94 kB--
@sentry/cloudflare (withSentry)482.5 kB--

View base workflow run

Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/mysql/index.ts
Comment threadpackages/node/src/integrations/tracing/express.ts
Comment threadpackages/node/src/integrations/tracing/index.ts
Comment threaddev-packages/e2e-tests/test-applications/node-express/tests/trpc.test.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 921217b to e9cde04CompareJuly 23, 2026 11:56
Comment threadpackages/node/src/integrations/tracing/express.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 404fb86 to c9a6733CompareJuly 24, 2026 09:07
Comment threadpackages/node/src/integrations/tracing/redis/index.ts Outdated
andreiborzaand others added 5 commits July 24, 2026 19:24
Make orchestrion diagnostics-channel injection the default in `@sentry/node`
and remove the `experimentalUseDiagnosticsChannelInjection()` opt-in.
`Sentry.init()` now installs the channel-injection module hooks unconditionally
when span recording is enabled, so the opt-in function, its loader indirection,
and the name-based OTel->channel integration swap are gone. The self-selecting
`dataloader` and `knex` integrations pick the channel path automatically now
that `isOrchestrionInjected()` is true by default.
Redis stays a composite integration: the native diagnostics-channel subscribers
(node-redis >=5.12, ioredis >=5.11, batches) plus the orchestrion subscribers
for the older ranges, all sharing the node cache `responseHook`. The vendored
OTel patchers only run on runtimes without `tracingChannel` (Node <18.19).
BREAKING CHANGE: `experimentalUseDiagnosticsChannelInjection()`,
`diagnosticsChannelInjectionIntegrations()`, `isDiagnosticsChannelInjectionEnabled()`
and `applyDiagnosticsChannelInjectionIntegrations()` are removed from
`@sentry/node`. Channel-based instrumentation is now always on; no opt-in call
is needed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Google GenAI instrumentation
from `@sentry/node`.
## Why
The Google GenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry GraphQL instrumentation from
`@sentry/node`.
## Why
The GraphQL integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry amqplib instrumentation from
`@sentry/node`.
## Why
The amqplib integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry generic-pool instrumentation
from `@sentry/node`.
## Why
The generic-pool integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql instrumentation from
`@sentry/node`.
## Why
The mysql integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql2 instrumentation from
`@sentry/node`.
## Why
The mysql2 integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Vercel AI instrumentation from
`@sentry/node`.
## Why
The Vercel AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry tedious instrumentation from
`@sentry/node`.
## Why
The tedious integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `HapiInstrumentation` (and
`instrumentHapi`) plus its vendored code from `@sentry/node`. Keeps
`setupHapiErrorHandler`.
## Why
The Hapi integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry kafkajs instrumentation from
`@sentry/node`.
## Why
The kafkajs integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the vendored OpenTelemetry fallback from the node
`dataloaderIntegration` and `knexIntegration`. They are now re-exported
directly from `@sentry/server-utils`, matching the other channel-based
integrations.
## Why
These were the only two integrations still keeping a vendored OTel
instrumentation as a runtime fallback (used when diagnostics-channel
injection was unavailable). Making them channel-only removes the last
vendored DB instrumentation and aligns them with every other integration
since channel-based became the default (#22501).
Note: on runtimes without diagnostics-channel injection (e.g. Bun, Deno,
older Node, or when injection fails), these integrations no longer
produce spans, consistent with the other integrations.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `KoaInstrumentation` (and
`instrumentKoa`) plus its vendored code from `@sentry/node`. Keeps
`setupKoaErrorHandler`.
## Why
The Koa integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry `redis` and `ioredis`
instrumentations (and their shared `semconv.ts`) from `@sentry/node`.
Keeps the `redisIntegration` wrapper, `cache.ts`, and the
`vendored/types.ts` that `cache.ts` still imports.
## Why
The redis integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored OTel instrumentations are no longer wired into the SDK, so they
are pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `ExpressInstrumentation` class (and
`instrumentExpress`) from `@sentry/node`. Keeps
`setupExpressErrorHandler` / `expressErrorHandler`.
## Why
The express integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation is no longer wired up; only the Sentry-specific
error handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres (pg) instrumentation
from `@sentry/node`.
## Why
The postgres (pg) integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangGraph instrumentation from
`@sentry/node`.
## Why
The LangGraph integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry MongoDB instrumentation from
`@sentry/node`.
## Why
The MongoDB integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry lru-memoizer instrumentation
from `@sentry/node`.
## Why
The lru-memoizer integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangChain instrumentation from
`@sentry/node`.
## Why
The LangChain integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Mongoose instrumentation from
`@sentry/node`.
## Why
The Mongoose integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry OpenAI instrumentation from
`@sentry/node`.
## Why
The OpenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Firebase instrumentation from
`@sentry/node`.
## Why
The Firebase integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres.js (`postgres`)
instrumentation from `@sentry/node`.
## Why
The postgres.js integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Anthropic AI instrumentation
from `@sentry/node`.
## Why
The Anthropic AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since
#22501). The vendored instrumentation here is
no longer wired into the SDK, so it is pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Drops support for Fastify `<3.21.0` by removing
`FastifyInstrumentationV3` (and `instrumentFastifyV3`). The node
`fastifyIntegration` becomes a thin pass-through to the channel-based
integration in `@sentry/server-utils`.
## Why
The channel-based `fastifyIntegration` (default since #22501) covers
Fastify `>=3.21.0 <6`. The v3 OpenTelemetry instrumentation only existed
to fill the `>=3.0.0 <3.21.0` gap, and it was the last remaining
import-in-the-middle module-patcher in `@sentry/node`. Dropping the old
Fastify range lets us remove it.
Ref: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
…strumentation base (#22755)
## What
Final cleanup PR. Once the vendored OpenTelemetry instrumentations are
gone, `@sentry/node` has no import-in-the-middle module patchers left,
so this removes the remaining iitm plumbing:
* Remove the `registerEsmLoaderHooks` option from `NodeOptions` and drop
the `import-in-the-middle` dependency.
* Delete the shared `InstrumentationNodeModuleFile` helper,
`esmLoader.ts`, and the ESM-loader detection util.
* Remove the deprecated `SentryHttpInstrumentation` and
`SentryNodeFetchInstrumentation` classes. The live
diagnostics-channel-based `instrumentHttpOutgoingRequests` /
`instrumentUndici` functions are kept.
* Delete the now-obsolete `esm/import-in-the-middle` integration-test
suite and add the changelog entry.
## Why
These were the last pieces tying `@sentry/node` to import-in-the-middle.
All performance integrations are channel-based via
`@sentry/server-utils` (default since
#22501), so the ESM loader hook served
nothing.
> **Depends on the per-integration removal PRs.** This branch deletes
`InstrumentationNodeModuleFile`, which the vendored instrumentations
still import on `develop`, so CI here stays red until those PRs merge.
It should be merged last.
Closes: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
chargome added a commit that referenced this pull request Aug 3, 2026
`withSentryConfig` now wires up the orchestrion code transform
automatically for webpack and Turbopack server builds.
This flips the default: build-time instrumentation was previously opt-in
behind `_experimental.useDiagnosticsChannelInjection`, which is removed.
Opting out now goes through the shared `buildTimeInstrumentation: false`
build option that the other meta-framework SDKs already use.
`resolveBuildTimeInstrumentationOption` keeps the feature off on
Turbopack below Next.js 16, where the transform can't run and the
packages dropped from `serverExternalPackages` would end up bundled
*and* uninstrumented.
Also removes the `_sentryUseDiagnosticsChannelInjection` env marker,
whose only reader was deleted in #22501.
closes#22779
Sign up for freeto 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.

Make channel-based instrumentations the default in v11

3 participants

@andreiborza@isaacs@chargome
, '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(node)!: Make channel-based instrumentation the default - #22501

Merged
andreiborza merged 47 commits into
developfrom
ab/channel-based-default
Jul 27, 2026
Merged

feat(node)!: Make channel-based instrumentation the default#22501
andreiborza merged 47 commits into
developfrom
ab/channel-based-default

Conversation

@andreiborza

@andreiborzaandreiborza commented Jul 22, 2026

Copy link
Copy Markdown
Member

What

Make orchestrion diagnostics-channel instrumentation the default in @sentry/node and remove the experimentalUseDiagnosticsChannelInjection() opt-in.

Why

The channel-based instrumentations shipped opt-in in v10. Making them the default in v11 unlocks instrumentation at run and build time.

Removal of the vendored OTel/IITM code is intentionally out of scope; it is tracked separately as follow-up.

Closes: #22345

Comment threadpackages/aws-serverless/src/init.ts
Comment threadpackages/node/src/sdk/index.ts
@github-actions

github-actionsBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser28.02 kB--
@sentry/browser - with treeshaking flags26.46 kB--
@sentry/browser (incl. Tracing)46.54 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.46 kB--
@sentry/browser (incl. Tracing, Profiling)51.3 kB--
@sentry/browser (incl. Tracing, Replay)85.87 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.51 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.58 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)45.2 kB--
@sentry/browser (incl. sendFeedback)32.82 kB--
@sentry/browser (incl. FeedbackAsync)37.86 kB--
@sentry/browser (incl. Metrics)29.12 kB--
@sentry/browser (incl. Logs)29.34 kB--
@sentry/browser (incl. Metrics & Logs)30.05 kB--
@sentry/react29.8 kB--
@sentry/react (incl. Tracing)48.85 kB--
@sentry/vue33.97 kB--
@sentry/vue (incl. Tracing)48.53 kB--
@sentry/svelte28.04 kB--
CDN Bundle30.32 kB--
CDN Bundle (incl. Tracing)47.71 kB--
CDN Bundle (incl. Logs, Metrics)31.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.08 kB--
CDN Bundle (incl. Replay, Logs, Metrics)71.17 kB--
CDN Bundle (incl. Tracing, Replay)85.31 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.61 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.12 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.39 kB--
CDN Bundle - uncompressed90.26 kB--
CDN Bundle (incl. Tracing) - uncompressed143.22 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.97 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed147.2 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.73 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.47 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266.44 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed276.18 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed280.13 kB--
@sentry/nextjs (client)51.41 kB--
@sentry/sveltekit (client)47.01 kB--
@sentry/core/server79.57 kB--
@sentry/core/browser51.54 kB--
@sentry/node125.39 kB+11.49%+12.92 kB 🔺
⛔️ @sentry/node (incl. diagnostics channel injection) (max: null)0 Bremovedremoved
@sentry/node/import (ESM hook with diagnostics-channel injection)166 B--
@sentry/node - without tracing85.7 kB+38.2%+23.69 kB 🔺
@sentry/aws-serverless93.7 kB+29.62%+21.41 kB 🔺
@sentry/cloudflare (withSentry) - minified195.94 kB--
@sentry/cloudflare (withSentry)482.5 kB--

View base workflow run

Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/mysql/index.ts
Comment threadpackages/node/src/integrations/tracing/express.ts
Comment threadpackages/node/src/integrations/tracing/index.ts
Comment threaddev-packages/e2e-tests/test-applications/node-express/tests/trpc.test.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 921217b to e9cde04CompareJuly 23, 2026 11:56
Comment threadpackages/node/src/integrations/tracing/express.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 404fb86 to c9a6733CompareJuly 24, 2026 09:07
Comment threadpackages/node/src/integrations/tracing/redis/index.ts Outdated
andreiborzaand others added 5 commits July 24, 2026 19:24
Make orchestrion diagnostics-channel injection the default in `@sentry/node`
and remove the `experimentalUseDiagnosticsChannelInjection()` opt-in.
`Sentry.init()` now installs the channel-injection module hooks unconditionally
when span recording is enabled, so the opt-in function, its loader indirection,
and the name-based OTel->channel integration swap are gone. The self-selecting
`dataloader` and `knex` integrations pick the channel path automatically now
that `isOrchestrionInjected()` is true by default.
Redis stays a composite integration: the native diagnostics-channel subscribers
(node-redis >=5.12, ioredis >=5.11, batches) plus the orchestrion subscribers
for the older ranges, all sharing the node cache `responseHook`. The vendored
OTel patchers only run on runtimes without `tracingChannel` (Node <18.19).
BREAKING CHANGE: `experimentalUseDiagnosticsChannelInjection()`,
`diagnosticsChannelInjectionIntegrations()`, `isDiagnosticsChannelInjectionEnabled()`
and `applyDiagnosticsChannelInjectionIntegrations()` are removed from
`@sentry/node`. Channel-based instrumentation is now always on; no opt-in call
is needed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Google GenAI instrumentation
from `@sentry/node`.
## Why
The Google GenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry GraphQL instrumentation from
`@sentry/node`.
## Why
The GraphQL integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry amqplib instrumentation from
`@sentry/node`.
## Why
The amqplib integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry generic-pool instrumentation
from `@sentry/node`.
## Why
The generic-pool integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql instrumentation from
`@sentry/node`.
## Why
The mysql integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql2 instrumentation from
`@sentry/node`.
## Why
The mysql2 integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Vercel AI instrumentation from
`@sentry/node`.
## Why
The Vercel AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry tedious instrumentation from
`@sentry/node`.
## Why
The tedious integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `HapiInstrumentation` (and
`instrumentHapi`) plus its vendored code from `@sentry/node`. Keeps
`setupHapiErrorHandler`.
## Why
The Hapi integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry kafkajs instrumentation from
`@sentry/node`.
## Why
The kafkajs integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the vendored OpenTelemetry fallback from the node
`dataloaderIntegration` and `knexIntegration`. They are now re-exported
directly from `@sentry/server-utils`, matching the other channel-based
integrations.
## Why
These were the only two integrations still keeping a vendored OTel
instrumentation as a runtime fallback (used when diagnostics-channel
injection was unavailable). Making them channel-only removes the last
vendored DB instrumentation and aligns them with every other integration
since channel-based became the default (#22501).
Note: on runtimes without diagnostics-channel injection (e.g. Bun, Deno,
older Node, or when injection fails), these integrations no longer
produce spans, consistent with the other integrations.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `KoaInstrumentation` (and
`instrumentKoa`) plus its vendored code from `@sentry/node`. Keeps
`setupKoaErrorHandler`.
## Why
The Koa integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry `redis` and `ioredis`
instrumentations (and their shared `semconv.ts`) from `@sentry/node`.
Keeps the `redisIntegration` wrapper, `cache.ts`, and the
`vendored/types.ts` that `cache.ts` still imports.
## Why
The redis integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored OTel instrumentations are no longer wired into the SDK, so they
are pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `ExpressInstrumentation` class (and
`instrumentExpress`) from `@sentry/node`. Keeps
`setupExpressErrorHandler` / `expressErrorHandler`.
## Why
The express integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation is no longer wired up; only the Sentry-specific
error handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres (pg) instrumentation
from `@sentry/node`.
## Why
The postgres (pg) integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangGraph instrumentation from
`@sentry/node`.
## Why
The LangGraph integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry MongoDB instrumentation from
`@sentry/node`.
## Why
The MongoDB integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry lru-memoizer instrumentation
from `@sentry/node`.
## Why
The lru-memoizer integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangChain instrumentation from
`@sentry/node`.
## Why
The LangChain integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Mongoose instrumentation from
`@sentry/node`.
## Why
The Mongoose integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry OpenAI instrumentation from
`@sentry/node`.
## Why
The OpenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Firebase instrumentation from
`@sentry/node`.
## Why
The Firebase integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres.js (`postgres`)
instrumentation from `@sentry/node`.
## Why
The postgres.js integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Anthropic AI instrumentation
from `@sentry/node`.
## Why
The Anthropic AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since
#22501). The vendored instrumentation here is
no longer wired into the SDK, so it is pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Drops support for Fastify `<3.21.0` by removing
`FastifyInstrumentationV3` (and `instrumentFastifyV3`). The node
`fastifyIntegration` becomes a thin pass-through to the channel-based
integration in `@sentry/server-utils`.
## Why
The channel-based `fastifyIntegration` (default since #22501) covers
Fastify `>=3.21.0 <6`. The v3 OpenTelemetry instrumentation only existed
to fill the `>=3.0.0 <3.21.0` gap, and it was the last remaining
import-in-the-middle module-patcher in `@sentry/node`. Dropping the old
Fastify range lets us remove it.
Ref: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
…strumentation base (#22755)
## What
Final cleanup PR. Once the vendored OpenTelemetry instrumentations are
gone, `@sentry/node` has no import-in-the-middle module patchers left,
so this removes the remaining iitm plumbing:
* Remove the `registerEsmLoaderHooks` option from `NodeOptions` and drop
the `import-in-the-middle` dependency.
* Delete the shared `InstrumentationNodeModuleFile` helper,
`esmLoader.ts`, and the ESM-loader detection util.
* Remove the deprecated `SentryHttpInstrumentation` and
`SentryNodeFetchInstrumentation` classes. The live
diagnostics-channel-based `instrumentHttpOutgoingRequests` /
`instrumentUndici` functions are kept.
* Delete the now-obsolete `esm/import-in-the-middle` integration-test
suite and add the changelog entry.
## Why
These were the last pieces tying `@sentry/node` to import-in-the-middle.
All performance integrations are channel-based via
`@sentry/server-utils` (default since
#22501), so the ESM loader hook served
nothing.
> **Depends on the per-integration removal PRs.** This branch deletes
`InstrumentationNodeModuleFile`, which the vendored instrumentations
still import on `develop`, so CI here stays red until those PRs merge.
It should be merged last.
Closes: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
chargome added a commit that referenced this pull request Aug 3, 2026
`withSentryConfig` now wires up the orchestrion code transform
automatically for webpack and Turbopack server builds.
This flips the default: build-time instrumentation was previously opt-in
behind `_experimental.useDiagnosticsChannelInjection`, which is removed.
Opting out now goes through the shared `buildTimeInstrumentation: false`
build option that the other meta-framework SDKs already use.
`resolveBuildTimeInstrumentationOption` keeps the feature off on
Turbopack below Next.js 16, where the transform can't run and the
packages dropped from `serverExternalPackages` would end up bundled
*and* uninstrumented.
Also removes the `_sentryUseDiagnosticsChannelInjection` env marker,
whose only reader was deleted in #22501.
closes#22779
Sign up for freeto 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.

Make channel-based instrumentations the default in v11

3 participants

@andreiborza@isaacs@chargome
, '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(node)!: Make channel-based instrumentation the default - #22501

Merged
andreiborza merged 47 commits into
developfrom
ab/channel-based-default
Jul 27, 2026
Merged

feat(node)!: Make channel-based instrumentation the default#22501
andreiborza merged 47 commits into
developfrom
ab/channel-based-default

Conversation

@andreiborza

@andreiborzaandreiborza commented Jul 22, 2026

Copy link
Copy Markdown
Member

What

Make orchestrion diagnostics-channel instrumentation the default in @sentry/node and remove the experimentalUseDiagnosticsChannelInjection() opt-in.

Why

The channel-based instrumentations shipped opt-in in v10. Making them the default in v11 unlocks instrumentation at run and build time.

Removal of the vendored OTel/IITM code is intentionally out of scope; it is tracked separately as follow-up.

Closes: #22345

Comment threadpackages/aws-serverless/src/init.ts
Comment threadpackages/node/src/sdk/index.ts
@github-actions

github-actionsBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser28.02 kB--
@sentry/browser - with treeshaking flags26.46 kB--
@sentry/browser (incl. Tracing)46.54 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.46 kB--
@sentry/browser (incl. Tracing, Profiling)51.3 kB--
@sentry/browser (incl. Tracing, Replay)85.87 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.51 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.58 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)45.2 kB--
@sentry/browser (incl. sendFeedback)32.82 kB--
@sentry/browser (incl. FeedbackAsync)37.86 kB--
@sentry/browser (incl. Metrics)29.12 kB--
@sentry/browser (incl. Logs)29.34 kB--
@sentry/browser (incl. Metrics & Logs)30.05 kB--
@sentry/react29.8 kB--
@sentry/react (incl. Tracing)48.85 kB--
@sentry/vue33.97 kB--
@sentry/vue (incl. Tracing)48.53 kB--
@sentry/svelte28.04 kB--
CDN Bundle30.32 kB--
CDN Bundle (incl. Tracing)47.71 kB--
CDN Bundle (incl. Logs, Metrics)31.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.08 kB--
CDN Bundle (incl. Replay, Logs, Metrics)71.17 kB--
CDN Bundle (incl. Tracing, Replay)85.31 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.61 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.12 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.39 kB--
CDN Bundle - uncompressed90.26 kB--
CDN Bundle (incl. Tracing) - uncompressed143.22 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.97 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed147.2 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.73 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.47 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266.44 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed276.18 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed280.13 kB--
@sentry/nextjs (client)51.41 kB--
@sentry/sveltekit (client)47.01 kB--
@sentry/core/server79.57 kB--
@sentry/core/browser51.54 kB--
@sentry/node125.39 kB+11.49%+12.92 kB 🔺
⛔️ @sentry/node (incl. diagnostics channel injection) (max: null)0 Bremovedremoved
@sentry/node/import (ESM hook with diagnostics-channel injection)166 B--
@sentry/node - without tracing85.7 kB+38.2%+23.69 kB 🔺
@sentry/aws-serverless93.7 kB+29.62%+21.41 kB 🔺
@sentry/cloudflare (withSentry) - minified195.94 kB--
@sentry/cloudflare (withSentry)482.5 kB--

View base workflow run

Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/mysql/index.ts
Comment threadpackages/node/src/integrations/tracing/express.ts
Comment threadpackages/node/src/integrations/tracing/index.ts
Comment threaddev-packages/e2e-tests/test-applications/node-express/tests/trpc.test.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 921217b to e9cde04CompareJuly 23, 2026 11:56
Comment threadpackages/node/src/integrations/tracing/express.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 404fb86 to c9a6733CompareJuly 24, 2026 09:07
Comment threadpackages/node/src/integrations/tracing/redis/index.ts Outdated
andreiborzaand others added 5 commits July 24, 2026 19:24
Make orchestrion diagnostics-channel injection the default in `@sentry/node`
and remove the `experimentalUseDiagnosticsChannelInjection()` opt-in.
`Sentry.init()` now installs the channel-injection module hooks unconditionally
when span recording is enabled, so the opt-in function, its loader indirection,
and the name-based OTel->channel integration swap are gone. The self-selecting
`dataloader` and `knex` integrations pick the channel path automatically now
that `isOrchestrionInjected()` is true by default.
Redis stays a composite integration: the native diagnostics-channel subscribers
(node-redis >=5.12, ioredis >=5.11, batches) plus the orchestrion subscribers
for the older ranges, all sharing the node cache `responseHook`. The vendored
OTel patchers only run on runtimes without `tracingChannel` (Node <18.19).
BREAKING CHANGE: `experimentalUseDiagnosticsChannelInjection()`,
`diagnosticsChannelInjectionIntegrations()`, `isDiagnosticsChannelInjectionEnabled()`
and `applyDiagnosticsChannelInjectionIntegrations()` are removed from
`@sentry/node`. Channel-based instrumentation is now always on; no opt-in call
is needed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Google GenAI instrumentation
from `@sentry/node`.
## Why
The Google GenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry GraphQL instrumentation from
`@sentry/node`.
## Why
The GraphQL integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry amqplib instrumentation from
`@sentry/node`.
## Why
The amqplib integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry generic-pool instrumentation
from `@sentry/node`.
## Why
The generic-pool integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql instrumentation from
`@sentry/node`.
## Why
The mysql integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql2 instrumentation from
`@sentry/node`.
## Why
The mysql2 integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Vercel AI instrumentation from
`@sentry/node`.
## Why
The Vercel AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry tedious instrumentation from
`@sentry/node`.
## Why
The tedious integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `HapiInstrumentation` (and
`instrumentHapi`) plus its vendored code from `@sentry/node`. Keeps
`setupHapiErrorHandler`.
## Why
The Hapi integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry kafkajs instrumentation from
`@sentry/node`.
## Why
The kafkajs integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the vendored OpenTelemetry fallback from the node
`dataloaderIntegration` and `knexIntegration`. They are now re-exported
directly from `@sentry/server-utils`, matching the other channel-based
integrations.
## Why
These were the only two integrations still keeping a vendored OTel
instrumentation as a runtime fallback (used when diagnostics-channel
injection was unavailable). Making them channel-only removes the last
vendored DB instrumentation and aligns them with every other integration
since channel-based became the default (#22501).
Note: on runtimes without diagnostics-channel injection (e.g. Bun, Deno,
older Node, or when injection fails), these integrations no longer
produce spans, consistent with the other integrations.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `KoaInstrumentation` (and
`instrumentKoa`) plus its vendored code from `@sentry/node`. Keeps
`setupKoaErrorHandler`.
## Why
The Koa integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry `redis` and `ioredis`
instrumentations (and their shared `semconv.ts`) from `@sentry/node`.
Keeps the `redisIntegration` wrapper, `cache.ts`, and the
`vendored/types.ts` that `cache.ts` still imports.
## Why
The redis integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored OTel instrumentations are no longer wired into the SDK, so they
are pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `ExpressInstrumentation` class (and
`instrumentExpress`) from `@sentry/node`. Keeps
`setupExpressErrorHandler` / `expressErrorHandler`.
## Why
The express integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation is no longer wired up; only the Sentry-specific
error handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres (pg) instrumentation
from `@sentry/node`.
## Why
The postgres (pg) integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangGraph instrumentation from
`@sentry/node`.
## Why
The LangGraph integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry MongoDB instrumentation from
`@sentry/node`.
## Why
The MongoDB integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry lru-memoizer instrumentation
from `@sentry/node`.
## Why
The lru-memoizer integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangChain instrumentation from
`@sentry/node`.
## Why
The LangChain integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Mongoose instrumentation from
`@sentry/node`.
## Why
The Mongoose integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry OpenAI instrumentation from
`@sentry/node`.
## Why
The OpenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Firebase instrumentation from
`@sentry/node`.
## Why
The Firebase integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres.js (`postgres`)
instrumentation from `@sentry/node`.
## Why
The postgres.js integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Anthropic AI instrumentation
from `@sentry/node`.
## Why
The Anthropic AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since
#22501). The vendored instrumentation here is
no longer wired into the SDK, so it is pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Drops support for Fastify `<3.21.0` by removing
`FastifyInstrumentationV3` (and `instrumentFastifyV3`). The node
`fastifyIntegration` becomes a thin pass-through to the channel-based
integration in `@sentry/server-utils`.
## Why
The channel-based `fastifyIntegration` (default since #22501) covers
Fastify `>=3.21.0 <6`. The v3 OpenTelemetry instrumentation only existed
to fill the `>=3.0.0 <3.21.0` gap, and it was the last remaining
import-in-the-middle module-patcher in `@sentry/node`. Dropping the old
Fastify range lets us remove it.
Ref: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
…strumentation base (#22755)
## What
Final cleanup PR. Once the vendored OpenTelemetry instrumentations are
gone, `@sentry/node` has no import-in-the-middle module patchers left,
so this removes the remaining iitm plumbing:
* Remove the `registerEsmLoaderHooks` option from `NodeOptions` and drop
the `import-in-the-middle` dependency.
* Delete the shared `InstrumentationNodeModuleFile` helper,
`esmLoader.ts`, and the ESM-loader detection util.
* Remove the deprecated `SentryHttpInstrumentation` and
`SentryNodeFetchInstrumentation` classes. The live
diagnostics-channel-based `instrumentHttpOutgoingRequests` /
`instrumentUndici` functions are kept.
* Delete the now-obsolete `esm/import-in-the-middle` integration-test
suite and add the changelog entry.
## Why
These were the last pieces tying `@sentry/node` to import-in-the-middle.
All performance integrations are channel-based via
`@sentry/server-utils` (default since
#22501), so the ESM loader hook served
nothing.
> **Depends on the per-integration removal PRs.** This branch deletes
`InstrumentationNodeModuleFile`, which the vendored instrumentations
still import on `develop`, so CI here stays red until those PRs merge.
It should be merged last.
Closes: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
chargome added a commit that referenced this pull request Aug 3, 2026
`withSentryConfig` now wires up the orchestrion code transform
automatically for webpack and Turbopack server builds.
This flips the default: build-time instrumentation was previously opt-in
behind `_experimental.useDiagnosticsChannelInjection`, which is removed.
Opting out now goes through the shared `buildTimeInstrumentation: false`
build option that the other meta-framework SDKs already use.
`resolveBuildTimeInstrumentationOption` keeps the feature off on
Turbopack below Next.js 16, where the transform can't run and the
packages dropped from `serverExternalPackages` would end up bundled
*and* uninstrumented.
Also removes the `_sentryUseDiagnosticsChannelInjection` env marker,
whose only reader was deleted in #22501.
closes#22779
Sign up for freeto 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.

Make channel-based instrumentations the default in v11

3 participants

@andreiborza@isaacs@chargome
, '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(node)!: Make channel-based instrumentation the default - #22501

Merged
andreiborza merged 47 commits into
developfrom
ab/channel-based-default
Jul 27, 2026
Merged

feat(node)!: Make channel-based instrumentation the default#22501
andreiborza merged 47 commits into
developfrom
ab/channel-based-default

Conversation

@andreiborza

@andreiborzaandreiborza commented Jul 22, 2026

Copy link
Copy Markdown
Member

What

Make orchestrion diagnostics-channel instrumentation the default in @sentry/node and remove the experimentalUseDiagnosticsChannelInjection() opt-in.

Why

The channel-based instrumentations shipped opt-in in v10. Making them the default in v11 unlocks instrumentation at run and build time.

Removal of the vendored OTel/IITM code is intentionally out of scope; it is tracked separately as follow-up.

Closes: #22345

Comment threadpackages/aws-serverless/src/init.ts
Comment threadpackages/node/src/sdk/index.ts
@github-actions

github-actionsBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser28.02 kB--
@sentry/browser - with treeshaking flags26.46 kB--
@sentry/browser (incl. Tracing)46.54 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.46 kB--
@sentry/browser (incl. Tracing, Profiling)51.3 kB--
@sentry/browser (incl. Tracing, Replay)85.87 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.51 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.58 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)45.2 kB--
@sentry/browser (incl. sendFeedback)32.82 kB--
@sentry/browser (incl. FeedbackAsync)37.86 kB--
@sentry/browser (incl. Metrics)29.12 kB--
@sentry/browser (incl. Logs)29.34 kB--
@sentry/browser (incl. Metrics & Logs)30.05 kB--
@sentry/react29.8 kB--
@sentry/react (incl. Tracing)48.85 kB--
@sentry/vue33.97 kB--
@sentry/vue (incl. Tracing)48.53 kB--
@sentry/svelte28.04 kB--
CDN Bundle30.32 kB--
CDN Bundle (incl. Tracing)47.71 kB--
CDN Bundle (incl. Logs, Metrics)31.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.08 kB--
CDN Bundle (incl. Replay, Logs, Metrics)71.17 kB--
CDN Bundle (incl. Tracing, Replay)85.31 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.61 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.12 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.39 kB--
CDN Bundle - uncompressed90.26 kB--
CDN Bundle (incl. Tracing) - uncompressed143.22 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.97 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed147.2 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.73 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.47 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266.44 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed276.18 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed280.13 kB--
@sentry/nextjs (client)51.41 kB--
@sentry/sveltekit (client)47.01 kB--
@sentry/core/server79.57 kB--
@sentry/core/browser51.54 kB--
@sentry/node125.39 kB+11.49%+12.92 kB 🔺
⛔️ @sentry/node (incl. diagnostics channel injection) (max: null)0 Bremovedremoved
@sentry/node/import (ESM hook with diagnostics-channel injection)166 B--
@sentry/node - without tracing85.7 kB+38.2%+23.69 kB 🔺
@sentry/aws-serverless93.7 kB+29.62%+21.41 kB 🔺
@sentry/cloudflare (withSentry) - minified195.94 kB--
@sentry/cloudflare (withSentry)482.5 kB--

View base workflow run

Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/mysql/index.ts
Comment threadpackages/node/src/integrations/tracing/express.ts
Comment threadpackages/node/src/integrations/tracing/index.ts
Comment threaddev-packages/e2e-tests/test-applications/node-express/tests/trpc.test.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 921217b to e9cde04CompareJuly 23, 2026 11:56
Comment threadpackages/node/src/integrations/tracing/express.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 404fb86 to c9a6733CompareJuly 24, 2026 09:07
Comment threadpackages/node/src/integrations/tracing/redis/index.ts Outdated
andreiborzaand others added 5 commits July 24, 2026 19:24
Make orchestrion diagnostics-channel injection the default in `@sentry/node`
and remove the `experimentalUseDiagnosticsChannelInjection()` opt-in.
`Sentry.init()` now installs the channel-injection module hooks unconditionally
when span recording is enabled, so the opt-in function, its loader indirection,
and the name-based OTel->channel integration swap are gone. The self-selecting
`dataloader` and `knex` integrations pick the channel path automatically now
that `isOrchestrionInjected()` is true by default.
Redis stays a composite integration: the native diagnostics-channel subscribers
(node-redis >=5.12, ioredis >=5.11, batches) plus the orchestrion subscribers
for the older ranges, all sharing the node cache `responseHook`. The vendored
OTel patchers only run on runtimes without `tracingChannel` (Node <18.19).
BREAKING CHANGE: `experimentalUseDiagnosticsChannelInjection()`,
`diagnosticsChannelInjectionIntegrations()`, `isDiagnosticsChannelInjectionEnabled()`
and `applyDiagnosticsChannelInjectionIntegrations()` are removed from
`@sentry/node`. Channel-based instrumentation is now always on; no opt-in call
is needed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Google GenAI instrumentation
from `@sentry/node`.
## Why
The Google GenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry GraphQL instrumentation from
`@sentry/node`.
## Why
The GraphQL integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry amqplib instrumentation from
`@sentry/node`.
## Why
The amqplib integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry generic-pool instrumentation
from `@sentry/node`.
## Why
The generic-pool integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql instrumentation from
`@sentry/node`.
## Why
The mysql integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql2 instrumentation from
`@sentry/node`.
## Why
The mysql2 integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Vercel AI instrumentation from
`@sentry/node`.
## Why
The Vercel AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry tedious instrumentation from
`@sentry/node`.
## Why
The tedious integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `HapiInstrumentation` (and
`instrumentHapi`) plus its vendored code from `@sentry/node`. Keeps
`setupHapiErrorHandler`.
## Why
The Hapi integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry kafkajs instrumentation from
`@sentry/node`.
## Why
The kafkajs integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the vendored OpenTelemetry fallback from the node
`dataloaderIntegration` and `knexIntegration`. They are now re-exported
directly from `@sentry/server-utils`, matching the other channel-based
integrations.
## Why
These were the only two integrations still keeping a vendored OTel
instrumentation as a runtime fallback (used when diagnostics-channel
injection was unavailable). Making them channel-only removes the last
vendored DB instrumentation and aligns them with every other integration
since channel-based became the default (#22501).
Note: on runtimes without diagnostics-channel injection (e.g. Bun, Deno,
older Node, or when injection fails), these integrations no longer
produce spans, consistent with the other integrations.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `KoaInstrumentation` (and
`instrumentKoa`) plus its vendored code from `@sentry/node`. Keeps
`setupKoaErrorHandler`.
## Why
The Koa integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry `redis` and `ioredis`
instrumentations (and their shared `semconv.ts`) from `@sentry/node`.
Keeps the `redisIntegration` wrapper, `cache.ts`, and the
`vendored/types.ts` that `cache.ts` still imports.
## Why
The redis integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored OTel instrumentations are no longer wired into the SDK, so they
are pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `ExpressInstrumentation` class (and
`instrumentExpress`) from `@sentry/node`. Keeps
`setupExpressErrorHandler` / `expressErrorHandler`.
## Why
The express integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation is no longer wired up; only the Sentry-specific
error handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres (pg) instrumentation
from `@sentry/node`.
## Why
The postgres (pg) integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangGraph instrumentation from
`@sentry/node`.
## Why
The LangGraph integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry MongoDB instrumentation from
`@sentry/node`.
## Why
The MongoDB integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry lru-memoizer instrumentation
from `@sentry/node`.
## Why
The lru-memoizer integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangChain instrumentation from
`@sentry/node`.
## Why
The LangChain integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Mongoose instrumentation from
`@sentry/node`.
## Why
The Mongoose integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry OpenAI instrumentation from
`@sentry/node`.
## Why
The OpenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Firebase instrumentation from
`@sentry/node`.
## Why
The Firebase integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres.js (`postgres`)
instrumentation from `@sentry/node`.
## Why
The postgres.js integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Anthropic AI instrumentation
from `@sentry/node`.
## Why
The Anthropic AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since
#22501). The vendored instrumentation here is
no longer wired into the SDK, so it is pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Drops support for Fastify `<3.21.0` by removing
`FastifyInstrumentationV3` (and `instrumentFastifyV3`). The node
`fastifyIntegration` becomes a thin pass-through to the channel-based
integration in `@sentry/server-utils`.
## Why
The channel-based `fastifyIntegration` (default since #22501) covers
Fastify `>=3.21.0 <6`. The v3 OpenTelemetry instrumentation only existed
to fill the `>=3.0.0 <3.21.0` gap, and it was the last remaining
import-in-the-middle module-patcher in `@sentry/node`. Dropping the old
Fastify range lets us remove it.
Ref: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
…strumentation base (#22755)
## What
Final cleanup PR. Once the vendored OpenTelemetry instrumentations are
gone, `@sentry/node` has no import-in-the-middle module patchers left,
so this removes the remaining iitm plumbing:
* Remove the `registerEsmLoaderHooks` option from `NodeOptions` and drop
the `import-in-the-middle` dependency.
* Delete the shared `InstrumentationNodeModuleFile` helper,
`esmLoader.ts`, and the ESM-loader detection util.
* Remove the deprecated `SentryHttpInstrumentation` and
`SentryNodeFetchInstrumentation` classes. The live
diagnostics-channel-based `instrumentHttpOutgoingRequests` /
`instrumentUndici` functions are kept.
* Delete the now-obsolete `esm/import-in-the-middle` integration-test
suite and add the changelog entry.
## Why
These were the last pieces tying `@sentry/node` to import-in-the-middle.
All performance integrations are channel-based via
`@sentry/server-utils` (default since
#22501), so the ESM loader hook served
nothing.
> **Depends on the per-integration removal PRs.** This branch deletes
`InstrumentationNodeModuleFile`, which the vendored instrumentations
still import on `develop`, so CI here stays red until those PRs merge.
It should be merged last.
Closes: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
chargome added a commit that referenced this pull request Aug 3, 2026
`withSentryConfig` now wires up the orchestrion code transform
automatically for webpack and Turbopack server builds.
This flips the default: build-time instrumentation was previously opt-in
behind `_experimental.useDiagnosticsChannelInjection`, which is removed.
Opting out now goes through the shared `buildTimeInstrumentation: false`
build option that the other meta-framework SDKs already use.
`resolveBuildTimeInstrumentationOption` keeps the feature off on
Turbopack below Next.js 16, where the transform can't run and the
packages dropped from `serverExternalPackages` would end up bundled
*and* uninstrumented.
Also removes the `_sentryUseDiagnosticsChannelInjection` env marker,
whose only reader was deleted in #22501.
closes#22779
Sign up for freeto 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.

Make channel-based instrumentations the default in v11

3 participants

@andreiborza@isaacs@chargome
, '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(node)!: Make channel-based instrumentation the default - #22501

Merged
andreiborza merged 47 commits into
developfrom
ab/channel-based-default
Jul 27, 2026
Merged

feat(node)!: Make channel-based instrumentation the default#22501
andreiborza merged 47 commits into
developfrom
ab/channel-based-default

Conversation

@andreiborza

@andreiborzaandreiborza commented Jul 22, 2026

Copy link
Copy Markdown
Member

What

Make orchestrion diagnostics-channel instrumentation the default in @sentry/node and remove the experimentalUseDiagnosticsChannelInjection() opt-in.

Why

The channel-based instrumentations shipped opt-in in v10. Making them the default in v11 unlocks instrumentation at run and build time.

Removal of the vendored OTel/IITM code is intentionally out of scope; it is tracked separately as follow-up.

Closes: #22345

Comment threadpackages/aws-serverless/src/init.ts
Comment threadpackages/node/src/sdk/index.ts
@github-actions

github-actionsBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser28.02 kB--
@sentry/browser - with treeshaking flags26.46 kB--
@sentry/browser (incl. Tracing)46.54 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.46 kB--
@sentry/browser (incl. Tracing, Profiling)51.3 kB--
@sentry/browser (incl. Tracing, Replay)85.87 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.51 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.58 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)103.22 kB--
@sentry/browser (incl. Feedback)45.2 kB--
@sentry/browser (incl. sendFeedback)32.82 kB--
@sentry/browser (incl. FeedbackAsync)37.86 kB--
@sentry/browser (incl. Metrics)29.12 kB--
@sentry/browser (incl. Logs)29.34 kB--
@sentry/browser (incl. Metrics & Logs)30.05 kB--
@sentry/react29.8 kB--
@sentry/react (incl. Tracing)48.85 kB--
@sentry/vue33.97 kB--
@sentry/vue (incl. Tracing)48.53 kB--
@sentry/svelte28.04 kB--
CDN Bundle30.32 kB--
CDN Bundle (incl. Tracing)47.71 kB--
CDN Bundle (incl. Logs, Metrics)31.9 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.08 kB--
CDN Bundle (incl. Replay, Logs, Metrics)71.17 kB--
CDN Bundle (incl. Tracing, Replay)85.31 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.61 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.12 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.39 kB--
CDN Bundle - uncompressed90.26 kB--
CDN Bundle (incl. Tracing) - uncompressed143.22 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.97 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed147.2 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.73 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed262.47 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed266.44 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed276.18 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed280.13 kB--
@sentry/nextjs (client)51.41 kB--
@sentry/sveltekit (client)47.01 kB--
@sentry/core/server79.57 kB--
@sentry/core/browser51.54 kB--
@sentry/node125.39 kB+11.49%+12.92 kB 🔺
⛔️ @sentry/node (incl. diagnostics channel injection) (max: null)0 Bremovedremoved
@sentry/node/import (ESM hook with diagnostics-channel injection)166 B--
@sentry/node - without tracing85.7 kB+38.2%+23.69 kB 🔺
@sentry/aws-serverless93.7 kB+29.62%+21.41 kB 🔺
@sentry/cloudflare (withSentry) - minified195.94 kB--
@sentry/cloudflare (withSentry)482.5 kB--

View base workflow run

Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/mysql/index.ts
Comment threadpackages/node/src/integrations/tracing/express.ts
Comment threadpackages/node/src/integrations/tracing/index.ts
Comment threaddev-packages/e2e-tests/test-applications/node-express/tests/trpc.test.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 921217b to e9cde04CompareJuly 23, 2026 11:56
Comment threadpackages/node/src/integrations/tracing/express.ts Outdated
Comment threadpackages/nextjs/src/server/index.ts Outdated
Comment threadpackages/node/src/integrations/tracing/index.ts Outdated
@andreiborza
andreiborzaforce-pushed the ab/channel-based-default branch from 404fb86 to c9a6733CompareJuly 24, 2026 09:07
Comment threadpackages/node/src/integrations/tracing/redis/index.ts Outdated
andreiborzaand others added 5 commits July 24, 2026 19:24
Make orchestrion diagnostics-channel injection the default in `@sentry/node`
and remove the `experimentalUseDiagnosticsChannelInjection()` opt-in.
`Sentry.init()` now installs the channel-injection module hooks unconditionally
when span recording is enabled, so the opt-in function, its loader indirection,
and the name-based OTel->channel integration swap are gone. The self-selecting
`dataloader` and `knex` integrations pick the channel path automatically now
that `isOrchestrionInjected()` is true by default.
Redis stays a composite integration: the native diagnostics-channel subscribers
(node-redis >=5.12, ioredis >=5.11, batches) plus the orchestrion subscribers
for the older ranges, all sharing the node cache `responseHook`. The vendored
OTel patchers only run on runtimes without `tracingChannel` (Node <18.19).
BREAKING CHANGE: `experimentalUseDiagnosticsChannelInjection()`,
`diagnosticsChannelInjectionIntegrations()`, `isDiagnosticsChannelInjectionEnabled()`
and `applyDiagnosticsChannelInjectionIntegrations()` are removed from
`@sentry/node`. Channel-based instrumentation is now always on; no opt-in call
is needed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Google GenAI instrumentation
from `@sentry/node`.
## Why
The Google GenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry GraphQL instrumentation from
`@sentry/node`.
## Why
The GraphQL integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry amqplib instrumentation from
`@sentry/node`.
## Why
The amqplib integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry generic-pool instrumentation
from `@sentry/node`.
## Why
The generic-pool integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql instrumentation from
`@sentry/node`.
## Why
The mysql integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry mysql2 instrumentation from
`@sentry/node`.
## Why
The mysql2 integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Vercel AI instrumentation from
`@sentry/node`.
## Why
The Vercel AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry tedious instrumentation from
`@sentry/node`.
## Why
The tedious integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `HapiInstrumentation` (and
`instrumentHapi`) plus its vendored code from `@sentry/node`. Keeps
`setupHapiErrorHandler`.
## Why
The Hapi integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry kafkajs instrumentation from
`@sentry/node`.
## Why
The kafkajs integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the vendored OpenTelemetry fallback from the node
`dataloaderIntegration` and `knexIntegration`. They are now re-exported
directly from `@sentry/server-utils`, matching the other channel-based
integrations.
## Why
These were the only two integrations still keeping a vendored OTel
instrumentation as a runtime fallback (used when diagnostics-channel
injection was unavailable). Making them channel-only removes the last
vendored DB instrumentation and aligns them with every other integration
since channel-based became the default (#22501).
Note: on runtimes without diagnostics-channel injection (e.g. Bun, Deno,
older Node, or when injection fails), these integrations no longer
produce spans, consistent with the other integrations.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `KoaInstrumentation` (and
`instrumentKoa`) plus its vendored code from `@sentry/node`. Keeps
`setupKoaErrorHandler`.
## Why
The Koa integration is now provided by the channel-based implementation
in `@sentry/server-utils` (the default since #22501). The vendored
instrumentation is no longer wired up; only the Sentry-specific error
handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry `redis` and `ioredis`
instrumentations (and their shared `semconv.ts`) from `@sentry/node`.
Keeps the `redisIntegration` wrapper, `cache.ts`, and the
`vendored/types.ts` that `cache.ts` still imports.
## Why
The redis integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored OTel instrumentations are no longer wired into the SDK, so they
are pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead OpenTelemetry `ExpressInstrumentation` class (and
`instrumentExpress`) from `@sentry/node`. Keeps
`setupExpressErrorHandler` / `expressErrorHandler`.
## Why
The express integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation is no longer wired up; only the Sentry-specific
error handler remains user-facing.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres (pg) instrumentation
from `@sentry/node`.
## Why
The postgres (pg) integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangGraph instrumentation from
`@sentry/node`.
## Why
The LangGraph integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry MongoDB instrumentation from
`@sentry/node`.
## Why
The MongoDB integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry lru-memoizer instrumentation
from `@sentry/node`.
## Why
The lru-memoizer integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry LangChain instrumentation from
`@sentry/node`.
## Why
The LangChain integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Mongoose instrumentation from
`@sentry/node`.
## Why
The Mongoose integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry OpenAI instrumentation from
`@sentry/node`.
## Why
The OpenAI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Firebase instrumentation from
`@sentry/node`.
## Why
The Firebase integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry postgres.js (`postgres`)
instrumentation from `@sentry/node`.
## Why
The postgres.js integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since #22501). The
vendored instrumentation here is no longer wired into the SDK, so it is
pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Removes the dead vendored OpenTelemetry Anthropic AI instrumentation
from `@sentry/node`.
## Why
The Anthropic AI integration is now provided by the channel-based
implementation in `@sentry/server-utils` (the default since
#22501). The vendored instrumentation here is
no longer wired into the SDK, so it is pure dead code.
Ref: #22346
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
## What
Drops support for Fastify `<3.21.0` by removing
`FastifyInstrumentationV3` (and `instrumentFastifyV3`). The node
`fastifyIntegration` becomes a thin pass-through to the channel-based
integration in `@sentry/server-utils`.
## Why
The channel-based `fastifyIntegration` (default since #22501) covers
Fastify `>=3.21.0 <6`. The v3 OpenTelemetry instrumentation only existed
to fill the `>=3.0.0 <3.21.0` gap, and it was the last remaining
import-in-the-middle module-patcher in `@sentry/node`. Dropping the old
Fastify range lets us remove it.
Ref: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
andreiborza added a commit that referenced this pull request Jul 28, 2026
…strumentation base (#22755)
## What
Final cleanup PR. Once the vendored OpenTelemetry instrumentations are
gone, `@sentry/node` has no import-in-the-middle module patchers left,
so this removes the remaining iitm plumbing:
* Remove the `registerEsmLoaderHooks` option from `NodeOptions` and drop
the `import-in-the-middle` dependency.
* Delete the shared `InstrumentationNodeModuleFile` helper,
`esmLoader.ts`, and the ESM-loader detection util.
* Remove the deprecated `SentryHttpInstrumentation` and
`SentryNodeFetchInstrumentation` classes. The live
diagnostics-channel-based `instrumentHttpOutgoingRequests` /
`instrumentUndici` functions are kept.
* Delete the now-obsolete `esm/import-in-the-middle` integration-test
suite and add the changelog entry.
## Why
These were the last pieces tying `@sentry/node` to import-in-the-middle.
All performance integrations are channel-based via
`@sentry/server-utils` (default since
#22501), so the ESM loader hook served
nothing.
> **Depends on the per-integration removal PRs.** This branch deletes
`InstrumentationNodeModuleFile`, which the vendored instrumentations
still import on `develop`, so CI here stays red until those PRs merge.
It should be merged last.
Closes: #22346
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
chargome added a commit that referenced this pull request Aug 3, 2026
`withSentryConfig` now wires up the orchestrion code transform
automatically for webpack and Turbopack server builds.
This flips the default: build-time instrumentation was previously opt-in
behind `_experimental.useDiagnosticsChannelInjection`, which is removed.
Opting out now goes through the shared `buildTimeInstrumentation: false`
build option that the other meta-framework SDKs already use.
`resolveBuildTimeInstrumentationOption` keeps the feature off on
Turbopack below Next.js 16, where the transform can't run and the
packages dropped from `serverExternalPackages` would end up bundled
*and* uninstrumented.
Also removes the `_sentryUseDiagnosticsChannelInjection` env marker,
whose only reader was deleted in #22501.
closes#22779
Sign up for freeto 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.

Make channel-based instrumentations the default in v11

3 participants

@andreiborza@isaacs@chargome