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
…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 3563640 to bdaba32 Compare October 21, 2026 01:15

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

1 participant