Skip to content

feat(bun): Add incoming request options and sessions to bunServerIntegration - #25580

Open
isaacs wants to merge 1 commit into
isaacschlueter/js-3968-common-server-options-create-shared-typefrom
isaacschlueter/js-3969-bun-bunserve-common-handling-of-options-and-sessions
Open

isaacs wants to merge 1 commit into
isaacschlueter/js-3968-common-server-options-create-shared-typefrom
isaacschlueter/js-3969-bun-bunserve-common-handling-of-options-and-sessions

Conversation

@isaacs

@isaacs isaacs commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Bun.serve took only maxRequestBodySize. A user could not skip body capture or spans for one route, and release health showed no request sessions or crash-free rate for Bun.serve apps. denoServeIntegration got these in #25493 and #25496.

bunServerIntegration now accepts ignoreRequestBody, ignoreIncomingRequests, ignoreStaticAssets, spans, onSpanCreated, onSpanEnd, sessions and sessionFlushingDelayMS. They use the same names and behavior as denoServeIntegration, and the callbacks receive the web Request. The shared ServerRequestOptions check for Bun.serve now lists no unsupported options.

When the SDK skips the span, it still continues the incoming trace, attaches request data and the body, records the session and captures errors. For a streamed response, onSpanEnd and the session end when the stream finishes. A user callback that throws does not fail the request. If ignoreRequestBody throws, the SDK skips the body, so it cannot leak data that the filter was meant to hide.

Three changes in behavior:

  • ignoreStaticAssets defaults to true, so GET requests for files such as favicon.ico or *.js no longer create spans.
  • spans defaults to the client's tracing configuration, so the integration no longer starts spans when tracing is disabled.
  • Errors thrown for OPTIONS and HEAD requests are now captured. These requests also record sessions, as on Node and Deno.

Fixes #25571
Fixes JS-3969

@linear-code

linear-code Bot commented Oct 20, 2026

Copy link
Copy Markdown

JS-3969

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

@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 2 potential issues.

Fix All in Cursor

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

Reviewed by Cursor Bugbot for commit 7e82d34. Configure here.

Comment thread packages/bun/src/integrations/bunserver.ts
Comment thread packages/bun/test/integrations/bunserver.test.ts
@isaacs
isaacs marked this pull request as ready for review October 20, 2026 23:46
@isaacs
isaacs requested a review from a team as a code owner October 20, 2026 23:46
@isaacs
isaacs requested review from JPeer264 and mydea and removed request for a team October 20, 2026 23:46
@isaacs
isaacs force-pushed the isaacschlueter/js-3969-bun-bunserve-common-handling-of-options-and-sessions branch from 3563640 to d84e648 Compare October 21, 2026 01:07
@isaacs
isaacs requested a review from a team as a code owner October 21, 2026 01:12
@isaacs
isaacs requested review from s1gr1d and removed request for a team October 21, 2026 01:12
@isaacs
isaacs force-pushed the isaacschlueter/js-3969-bun-bunserve-common-handling-of-options-and-sessions branch from d84e648 to 3563640 Compare October 21, 2026 01:12
@isaacs
isaacs force-pushed the isaacschlueter/js-3969-bun-bunserve-common-handling-of-options-and-sessions branch from 3563640 to bdaba32 Compare October 21, 2026 01:15

@JPeer264 JPeer264 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Nice addition, just have two questions

Comment thread packages/bun/src/integrations/bunserver.ts
Comment thread packages/bun/src/integrations/bunserver.ts
@isaacs
isaacs force-pushed the isaacschlueter/js-3969-bun-bunserve-common-handling-of-options-and-sessions branch from bdaba32 to 44b5b4c Compare October 21, 2026 14:16
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

size-limit report 📦

Compared: 4247694 (PR test merge using develop at 17d5b89)

Against: 3aafe9e (develop) · base run #63222

⚠️ Baseline mismatch: 2 develop commit(s) in the PR build are missing from the baseline. Their size changes also affect this comparison. Compare commits. Re-run once develop's baseline build for 17d5b89 finishes.

Path Size % Change Change
@sentry/browser 29.91 kB - -
@sentry/browser - with treeshaking flags 28.05 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 27.95 kB - -
@sentry/browser (incl. Tracing) 52.1 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 52.1 kB - -
@sentry/browser (incl. Tracing, Profiling) 55.05 kB - -
@sentry/browser (incl. Tracing, Replay) 91.85 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 80.72 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 96.58 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 109.52 kB - -
@sentry/browser (incl. Feedback) 47.42 kB - -
@sentry/browser (incl. sendFeedback) 34.97 kB - -
@sentry/browser (incl. FeedbackAsync) 40.07 kB - -
@sentry/browser (incl. Metrics) 30.93 kB - -
@sentry/browser (incl. Logs) 31.21 kB - -
@sentry/browser (incl. Metrics & Logs) 31.84 kB - -
@sentry/react 31.74 kB - -
@sentry/react (incl. Tracing) 54.42 kB - -
@sentry/vue 38.07 kB - -
@sentry/vue (incl. Tracing) 55.03 kB - -
@sentry/svelte 29.93 kB - -
@sentry/remix (Remix 3 client bundle) 57.11 kB - -
CDN Bundle 31.67 kB - -
CDN Bundle (incl. Tracing) 52.61 kB - -
CDN Bundle (incl. Logs, Metrics) 33.87 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 54.55 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 74.8 kB - -
CDN Bundle (incl. Tracing, Replay) 90.29 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 92.22 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 96.43 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 98.38 kB - -
CDN Bundle - uncompressed 93.29 kB - -
CDN Bundle (incl. Tracing) - uncompressed 156.14 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 99.84 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 162.11 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 229.91 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 276.34 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 282.3 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 290.05 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 295.99 kB - -
@sentry/nextjs (client) 57.3 kB - -
@sentry/sveltekit (client) 52.48 kB - -
@sentry/core/server 41.85 kB - -
@sentry/core/browser 13.81 kB - -
@sentry/node 152.96 kB - -
@sentry/node/import (ESM hook with diagnostics-channel injection) 81.58 kB - -
@sentry/node - without tracing 94.57 kB - -
@sentry/node - without channel injection 133.6 kB - -
@sentry/aws-serverless 102.74 kB - -
@sentry/cloudflare (withSentry) - minified 192.31 kB - -
@sentry/cloudflare (withSentry) 478.7 kB - -
@sentry/nextjs/cloudflare (withSentry) - minified 213.28 kB - -

View base workflow run

@isaacs
isaacs force-pushed the isaacschlueter/js-3969-bun-bunserve-common-handling-of-options-and-sessions branch from 44b5b4c to ff5ddbf Compare October 21, 2026 16:45
@isaacs
isaacs force-pushed the isaacschlueter/js-3969-bun-bunserve-common-handling-of-options-and-sessions branch from ff5ddbf to ec55de6 Compare October 21, 2026 16:55
@isaacs
isaacs force-pushed the isaacschlueter/js-3969-bun-bunserve-common-handling-of-options-and-sessions branch from ec55de6 to a45bb60 Compare October 21, 2026 17:25
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Optional E2E tests

All optional checks were successful. 6 successful. See the run.

Successful checks
Check Status
✅ CI: Optional E2E Tests / E2E nextjs-16 (canary, turbopack) Test (optional) Successful in 6m Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (vinext) Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (canary, webpack) Test (optional) Successful in 10m Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (deno) Test (optional) Successful in 3m Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (vinext, bun) Test (optional) Successful in 3m Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (cloudflare, latest) Test (optional) Successful in 4m Details

@isaacs
isaacs force-pushed the isaacschlueter/js-3969-bun-bunserve-common-handling-of-options-and-sessions branch from a45bb60 to 92a214b Compare October 21, 2026 18:21
@isaacs
isaacs requested a review from JPeer264 October 21, 2026 20:57
@isaacs
isaacs force-pushed the isaacschlueter/js-3969-bun-bunserve-common-handling-of-options-and-sessions branch from 92a214b to f758460 Compare October 22, 2026 15:37
…egration`

`Bun.serve` took only `maxRequestBodySize`. A user could not skip body
capture or spans for one route, and release health showed no request
sessions or crash-free rate for `Bun.serve` apps. `denoServeIntegration`
got these in #25493 and #25496.

`bunServerIntegration` now accepts `ignoreRequestBody`,
`ignoreIncomingRequests`, `ignoreStaticAssets`, `spans`,
`onSpanCreated`, `onSpanEnd`, `sessions` and `sessionFlushingDelayMS`.
They use the same names and behavior as `denoServeIntegration`, and the
callbacks receive the web `Request`. The shared `ServerRequestOptions`
check for `Bun.serve` now lists no unsupported options.

When the SDK skips the span, it still continues the incoming trace,
attaches request data and the body, records the session and captures
errors. For a streamed response, `onSpanEnd` and the session end when
the stream finishes. A user callback that throws does not fail the
request. If `ignoreRequestBody` throws, the SDK skips the body, so it
cannot leak data that the filter was meant to hide.

Three changes in behavior:

- `ignoreStaticAssets` defaults to `true`, so `GET` requests for files
  such as `favicon.ico` or `*.js` no longer create spans.
- `spans` defaults to the client's tracing configuration, so the
  integration no longer starts spans when tracing is disabled.
- Errors thrown for `OPTIONS` and `HEAD` requests are now captured.
  These requests also record sessions, as on Node and Deno.

Fixes #25571
Fixes JS-3969

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@isaacs
isaacs force-pushed the isaacschlueter/js-3969-bun-bunserve-common-handling-of-options-and-sessions branch from f758460 to f75d0c1 Compare October 22, 2026 20:24

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bun: Bun.serve common handling of options and sessions

3 participants