Skip to content

ref(node)!: Consolidate httpIntegration options - #23443

Open
RulaKhaled wants to merge 8 commits into
developfrom
rolaabuhasna/js-3035-consolidate-the-various-http-integration-options-into-one
Open

ref(node)!: Consolidate httpIntegration options#23443
RulaKhaled wants to merge 8 commits into
developfrom
rolaabuhasna/js-3035-consolidate-the-various-http-integration-options-into-one

Conversation

@RulaKhaled

@RulaKhaled RulaKhaled commented Aug 17, 2026

Copy link
Copy Markdown
Collaborator

httpIntegration now uses the same option names as httpServerIntegration / httpServerSpansIntegration and the other server SDKs. After #23396, incoming instrumentation.* hooks were already gone; this PR finishes the leftover public API: flatten outgoing instrumentation into first-class hooks, and drop the long aliases that only existed on httpIntegration.

Fixes #22255

Why

The public httpIntegration surface had long names (trackIncomingRequestsAsSessions, maxIncomingRequestBodySize, …) mapped 1:1 onto shorter names already used by the sub-integrations, Bun, Deno, and Cloudflare. Those aliases were leftover from the OTEL HttpInstrumentation era; they were never deprecated, and v11 is the point to collapse them rather than carry both.

Incoming instrumentation.{requestHook,responseHook,applyCustomAttributesOnSpan} already all ran at span create after dropping OTEL, which is why #23396 collapsed them to onSpanCreated. Outgoing still has real request vs response timing, so those become outgoingRequestHook / outgoingResponseHook / outgoingRequestApplyCustomAttributes instead of staying nested.

Nuxt's httpIntegration override is dropped with them. It flushed on every outgoing HTTP response, which is the wrong place: the serverless freeze happens at the end of the incoming request, and patchEventHandler already flushes there after the Nitro handler. On platforms without waitUntil, the old hook also started an extra 2s flush per outbound request.

Nuxt also stops pre-resolving defaultIntegrations. That line only existed to filter out Http and splice the customized integration back in, so removing the override left it doing nothing but harm: it computed the list from the raw options, pinning integration selection before initNode resolves SENTRY_TRACES_SAMPLE_RATE. Anyone enabling tracing purely through the environment silently lost every performance integration, while the channel injection inside initNode was still gated on the resolved value.

@linear-code

linear-code Bot commented Aug 17, 2026

Copy link
Copy Markdown

JS-3035

@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 30.3 kB - -
@sentry/browser - with treeshaking flags 28.47 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 26.81 kB - -
@sentry/browser (incl. Tracing) 48.58 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 48.59 kB - -
@sentry/browser (incl. Tracing, Profiling) 51.46 kB - -
@sentry/browser (incl. Tracing, Replay) 87.98 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 77.36 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 92.7 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 105.39 kB - -
@sentry/browser (incl. Feedback) 47.65 kB - -
@sentry/browser (incl. sendFeedback) 35.13 kB - -
@sentry/browser (incl. FeedbackAsync) 40.28 kB - -
@sentry/browser (incl. Metrics) 31.24 kB - -
@sentry/browser (incl. Logs) 31.52 kB - -
@sentry/browser (incl. Metrics & Logs) 32.15 kB - -
@sentry/react 32.09 kB - -
@sentry/react (incl. Tracing) 50.77 kB - -
@sentry/vue 35.34 kB - -
@sentry/vue (incl. Tracing) 50.54 kB - -
@sentry/svelte 30.33 kB - -
CDN Bundle 31.61 kB - -
CDN Bundle (incl. Tracing) 48.9 kB - -
CDN Bundle (incl. Logs, Metrics) 33.8 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 50.82 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 74.31 kB - -
CDN Bundle (incl. Tracing, Replay) 86.48 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 88.31 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 92.19 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 94.12 kB - -
CDN Bundle - uncompressed 93.84 kB - -
CDN Bundle (incl. Tracing) - uncompressed 146.75 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 100.14 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 152.44 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 229.08 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 266.01 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 271.68 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 279.71 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 285.37 kB - -
@sentry/nextjs (client) 53.29 kB - -
@sentry/sveltekit (client) 49 kB - -
@sentry/core/server 65.38 kB - -
@sentry/core/browser 51.72 kB - -
@sentry/node 117.27 kB -0.1% -107 B 🔽
@sentry/node/import (ESM hook with diagnostics-channel injection) 0 B added added
@sentry/node - without tracing 81.78 kB -0.13% -102 B 🔽
@sentry/aws-serverless 91.19 kB -0.12% -102 B 🔽
@sentry/cloudflare (withSentry) - minified 213.98 kB - -
@sentry/cloudflare (withSentry) 528.93 kB - -

View base workflow run

@RulaKhaled

Copy link
Copy Markdown
Collaborator Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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

Fix All in Cursor

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

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit fc42fd3. Configure here.

Comment thread packages/nuxt/src/server/sdk.ts Outdated
@RulaKhaled
RulaKhaled force-pushed the rolaabuhasna/js-3035-consolidate-the-various-http-integration-options-into-one branch 2 times, most recently from 0dcceac to c1f4d06 Compare August 19, 2026 09:50
Base automatically changed from feat/node-http-v11-cleanup to develop August 20, 2026 09:56
@RulaKhaled
RulaKhaled force-pushed the rolaabuhasna/js-3035-consolidate-the-various-http-integration-options-into-one branch 2 times, most recently from d0b18ac to b3a3892 Compare August 20, 2026 11:55
RulaKhaled and others added 8 commits August 20, 2026 19:02
Public option names now match httpServerIntegration / httpServerSpansIntegration. Nested instrumentation hooks are first-class outgoing hooks instead of a leftover OTEL-era nest.

Fixes #22255
Serverless freeze happens at the end of the incoming request, which onSpanCreated and Nitro's event-handler patch already cover. Flushing again on each outbound response starts extra 2s flushes on platforms without waitUntil.
patchEventHandler already flushes after the Nitro handler. The onSpanCreated hook ran at span start, before the request had events to send.

Co-Authored-By: Cursor Grok 4.6 <cursoragent@cursor.com>
Precomputing them here pinned the selection to the raw options, before
`initNode` resolves `SENTRY_TRACES_SAMPLE_RATE`. Anyone enabling tracing
purely through the environment got `hasSpansEnabled() === false` at this
call site and lost every performance integration, while the channel
injection inside `initNode` was still gated on the resolved value.

Now that the Http override is gone there is nothing left to customize,
so the whole array can be left to `initNode`.
`httpServerSpansIntegration` only instruments incoming requests, so pointing
its migration note at `outgoingRequestHook` and friends sent readers looking
for options that integration does not have. Those live on `httpIntegration`.

Also drops the before/after block under the consolidation table. It restated
every row it sat under, and the sibling "Removed option" table for
`@sentry/nextjs` carries no example either.
…mple

`instrumentation.requestHook` ran for incoming and outgoing spans in v10, so a
reader migrating an outgoing hook would copy the sample onto `onSpanCreated`
and get a hook that never fires for client spans.

Restores the consolidation before/after block dropped earlier in this branch.
`outgoingRequestHook`, `outgoingResponseHook` and
`outgoingRequestApplyCustomAttributes` had no coverage after #23396 dropped the
incoming `instrumentation.*` assertions without replacing the outgoing side.

Each hook derives its attribute from the objects it is handed, so a hook wired
to the wrong span, request or response fails rather than passing silently.
It was an intersection of the outgoing options with nine deprecated no-ops.
Removing those collapsed it into a bare alias of
`OutgoingHttpRequestInstrumentationOptions`, leaving two names for one type —
and the surviving name points at `SentryHttpInstrumentation`, an export that no
longer exists.

Neither name is re-exported from `@sentry/node`, so this is internal only.
@RulaKhaled
RulaKhaled force-pushed the rolaabuhasna/js-3035-consolidate-the-various-http-integration-options-into-one branch from 1cbbdc4 to a8d5090 Compare August 20, 2026 17:06
@RulaKhaled
RulaKhaled marked this pull request as ready for review August 20, 2026 17:07
@RulaKhaled
RulaKhaled requested review from a team as code owners August 20, 2026 17:07
@RulaKhaled
RulaKhaled requested review from JPeer264, chargome, isaacs and s1gr1d and removed request for a team August 20, 2026 17:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Consolidate the various HTTP integration options into one

1 participant