Skip to content

feat(v10/cloudflare): Add rpcTracePropagationBindings - #23737

Merged
JPeer264 merged 3 commits into
v10from
jp/v10-rpc-trace-propagation-bindings
Aug 28, 2026
Merged

feat(v10/cloudflare): Add rpcTracePropagationBindings#23737
JPeer264 merged 3 commits into
v10from
jp/v10-rpc-trace-propagation-bindings

Conversation

@JPeer264

@JPeer264JPeer264 commented Aug 28, 2026

Copy link
Copy Markdown
Member

Backport of: #23486

Differences to the original PR

  • packages/cloudflare/src/client.ts: enableRpcTracePropagation is kept and deprecated instead of removed, so this is not a breaking change on v10. rpcTracePropagationBindings is added next to it.
  • packages/cloudflare/src/utils/rpcPropagation.ts: the resolver falls back to the existing getEffectiveRpcPropagation(options) chain (enableRpcTracePropagation, then the deprecated instrumentPrototypeMethods) only when rpcTracePropagationBindings is left unset. Setting the option wins over both, an empty array included: enableRpcTracePropagation: true, rpcTracePropagationBindings: [] is a receiver that continues incoming traces and propagates to nothing itself. Treating [] as unset would leave that worker propagating to every binding, which is Cloudflare RPC trace propagation changes method arguments for uninstrumented receivers #23233 again for anyone who set it to opt out of sending.
  • The receiver side is unchanged. packages/cloudflare/src/durableobject.ts, packages/cloudflare/src/instrumentations/instrumentWorkerEntrypoint.ts and packages/cloudflare/src/wrapMethodWithSentry.ts keep their v10 behaviour, so a Durable Object or WorkerEntrypoint still needs enableRpcTracePropagation: true to continue an incoming trace and to instrument its RPC methods. The original PR made that unconditional, which required removing instrumentPrototypeMethods as well.
  • Because of that, the receiver-side enableRpcTracePropagation: true was kept in every integration and E2E test app; only the caller-side option was replaced with rpcTracePropagationBindings.
  • MIGRATION.md gets no entry, there is nothing to migrate on v10.
  • packages/cloudflare/test/options.test-d.ts does not exist on v10, so its changes were dropped.

@JPeer264
JPeer264 marked this pull request as ready for review August 28, 2026 13:26
@JPeer264
JPeer264 requested a review from a team as a code ownerAugust 28, 2026 13:26
@JPeer264
JPeer264 requested review from andreiborza, isaacs and nicohrubec and removed request for a teamAugust 28, 2026 13:26
@github-actions

github-actionsBot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.75 kBaddedadded
@sentry/browser - with treeshaking flags26.19 kBaddedadded
@sentry/browser (incl. Tracing)46.63 kBaddedadded
@sentry/browser (incl. Tracing + Span Streaming)48.41 kBaddedadded
@sentry/browser (incl. Tracing, Profiling)51.38 kBaddedadded
@sentry/browser (incl. Tracing, Replay)85.88 kBaddedadded
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.51 kBaddedadded
@sentry/browser (incl. Tracing, Replay with Canvas)90.61 kBaddedadded
@sentry/browser (incl. Tracing, Replay, Feedback)103.25 kBaddedadded
@sentry/browser (incl. Feedback)44.92 kBaddedadded
@sentry/browser (incl. sendFeedback)32.54 kBaddedadded
@sentry/browser (incl. FeedbackAsync)37.68 kBaddedadded
@sentry/browser (incl. Metrics)28.83 kBaddedadded
@sentry/browser (incl. Logs)29.06 kBaddedadded
@sentry/browser (incl. Metrics & Logs)29.75 kBaddedadded
@sentry/react29.56 kBaddedadded
@sentry/react (incl. Tracing)48.89 kBaddedadded
@sentry/vue33.18 kBaddedadded
@sentry/vue (incl. Tracing)48.59 kBaddedadded
@sentry/svelte27.77 kBaddedadded
CDN Bundle30.14 kBaddedadded
CDN Bundle (incl. Tracing)48.59 kBaddedadded
CDN Bundle (incl. Logs, Metrics)31.72 kBaddedadded
CDN Bundle (incl. Tracing, Logs, Metrics)49.89 kBaddedadded
CDN Bundle (incl. Replay, Logs, Metrics)71.01 kBaddedadded
CDN Bundle (incl. Tracing, Replay)86.11 kBaddedadded
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.41 kBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback)91.91 kBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)93.19 kBaddedadded
CDN Bundle - uncompressed89.87 kBaddedadded
CDN Bundle (incl. Tracing) - uncompressed146.84 kBaddedadded
CDN Bundle (incl. Logs, Metrics) - uncompressed94.58 kBaddedadded
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.82 kBaddedadded
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.41 kBaddedadded
CDN Bundle (incl. Tracing, Replay) - uncompressed266.15 kBaddedadded
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed270.12 kBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279.85 kBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed283.81 kBaddedadded
@sentry/nextjs (client)51.42 kBaddedadded
@sentry/sveltekit (client)47.04 kBaddedadded
@sentry/core/server80.53 kBaddedadded
@sentry/core/browser66.74 kBaddedadded
@sentry/node-core63.27 kBaddedadded
@sentry/node125.76 kBaddedadded
@sentry/node (incl. diagnostics channel injection)169.81 kBaddedadded
@sentry/node/import (ESM hook with diagnostics-channel injection)166 Baddedadded
@sentry/node/light51.44 kBaddedadded
@sentry/node - without tracing74.95 kBaddedadded
@sentry/aws-serverless84.22 kBaddedadded
@sentry/cloudflare (withSentry) - minified202.28 kBaddedadded
@sentry/cloudflare (withSentry)497.55 kBaddedadded

@JPeer264
JPeer264 merged commit 7917b0d into v10Aug 28, 2026
84 checks passed
@JPeer264
JPeer264 deleted the jp/v10-rpc-trace-propagation-bindings branch August 28, 2026 14:37
brandhaug added a commit to brandhaug/b2b-saas-starter that referenced this pull request Sep 5, 2026
## Dependency Updates
| Package | From | To | Type |
| --- | --- | --- | --- |
| `@sentry/react` | 10.71.0 | 10.73.0 | minor |
## Release Notes
<details>
<summary><b>@sentry/react</b> (10.71.0 → 10.73.0) — 2 releases</summary>
<details>
<summary><b>10.73.0</b></summary>
### Important Changes
- **feat(v10/nextjs): Add `@sentry/nextjs/config` entry point
([#23766](getsentry/sentry-javascript#23766
`withSentryConfig` is now available from `@sentry/nextjs/config`, the
path it moves to in v11. Importing it from `@sentry/nextjs` still works
on v10 but logs a warning once, so you can change your `next.config`
file today and upgrade to v11 without touching it again.
```js
// next.config.mjs
- import { withSentryConfig } from '@sentry/nextjs';
+ import { withSentryConfig } from '@sentry/nextjs/config';
```
### Other Changes
- feat(v10/node): Deprecate `shouldHandleError` on
`setupExpressErrorHandler` and `setupFasitfyErrorHandler`
([#23734](getsentry/sentry-javascript#23734))
- fix(v10/cloudflare): Instrument Durable Object handlers installed as
read-only properties
([#23769](getsentry/sentry-javascript#23769))
<details>
<summary><strong>Internal Changes</strong></summary>
- test(v10/nextjs): Drop nextjs-16-cf-workers canary variant
([#23775](getsentry/sentry-javascript#23775))
</details>
## Bundle size 📦 | Path | Size |
|
--------------------------------------------------------------------------
| ----------------- |
| @sentry/browser | 27.1 KB |
| @sentry/browser - with treeshaking flags | 25.58 KB |
| @sentry/browser (incl. Tracing) | 45.54 KB |
| @sentry/browser (incl. Tracing + Span Streaming) | 47.28 KB |
| @sentry/browser (incl. Tracing, Profiling) | 50.17 KB |
| @sentry/browser (incl. Tracing, Replay) | 83.87 KB |
| @sentry/browser (incl. Tracing, Replay) - with treeshaking flags |
…[full
notes](https://github.com/getsentry/sentry-javascript/releases/tag/10.73.0)
</details>
<details>
<summary><b>10.72.0</b></summary>
### Important Changes
- **AI integrations no longer report errors that propagate to the caller
([#23638](getsentry/sentry-javascript#23638),
[#23639](getsentry/sentry-javascript#23639),
[#23640](getsentry/sentry-javascript#23640
Across all AI integrations (OpenAI, Anthropic, Google GenAI, LangChain,
and LangGraph), the SDK no longer sends an event to Sentry for errors
that the AI framework propagates to your code. Previously the
instrumentation reported these as unhandled (`handled: false`) before
your own error handling ran, so an error your code caught still showed
up in Sentry as an unhandled crash. The span is still marked as errored
and the error still propagates, so reporting is left to your
application: if your code does not handle the error, it reaches Sentry's
global error handlers and is captured as unhandled, just like any other
uncaught error. Errors that a provider surfaces as data on an otherwise
successful response (such as Anthropic error-shaped responses or Google
GenAI blocked content) are still captured, since your code never sees
them propagate.
- **feat(v10/cloudflare): Add `rpcTracePropagationBindings`
([#23737](getsentry/sentry-javascript#23737),
[#23738](getsentry/sentry-javascript#23738
The new `rpcTracePropagationBindings` option names the `env` bindings
that outgoing RPC calls propagate trace context to. Strings match a
binding name exactly, regular expressions match by pattern, and the
default empty array propagates to nothing. RPC has no headers to carry
trace context, so the SDK appends it as a trailing argument that only a
Sentry-instrumented receiver removes again. List only the bindings whose
receiver you know runs Sentry. Setting the option takes precedence over
`enableRpcTracePropagation`, which is now deprecated. When you build
with the Sentry Cloudflare Vite plugin, the bindings that resolve to t
…[full
notes](https://github.com/getsentry/sentry-javascript/releases/tag/10.72.0)
</details>
</details>
---
*This PR was auto-generated by
[catalog-update-action](https://github.com/brandhaug/catalog-update-action).*
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.

2 participants

@JPeer264@nicohrubec