From 649fbce5876f860f8c621deadef4dfa101786d44 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Tue, 30 Sep 2025 15:03:43 +0200 Subject: [PATCH] Add support for `propagateTraceparent` --- CHANGELOG.md | 4 ++++ packages/core/src/js/options.ts | 14 ++++++++++++++ packages/core/src/js/sdk.tsx | 1 + packages/core/test/sdk.test.ts | 22 ++++++++++++++++++++++ 4 files changed, 41 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 794be356a4..8e48c00f85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ ## Unreleased +### Features + +- Adds support for `propagateTraceparent` ([#5277](https://github.com/getsentry/sentry-react-native/pull/5227)) + ### Dependencies - Bump JavaScript SDK from v10.18.0 to v10.19.0 ([#5254](https://github.com/getsentry/sentry-react-native/pull/5254)) diff --git a/packages/core/src/js/options.ts b/packages/core/src/js/options.ts index df830dfdd2..44bfecfd46 100644 --- a/packages/core/src/js/options.ts +++ b/packages/core/src/js/options.ts @@ -291,6 +291,20 @@ export interface BaseReactNativeOptions { * @deprecated This option will be removed in the next major version. Use `beforeSend` instead. */ useThreadsForMessageStack?: boolean; + + /** + * If set to `true`, the SDK propagates the W3C `traceparent` header to any outgoing requests, + * in addition to the `sentry-trace` and `baggage` headers. Use the {@link CoreOptions.tracePropagationTargets} + * option to control to which outgoing requests the header will be attached. + * + * **Important:** If you set this option to `true`, make sure that you configured your servers' + * CORS settings to allow the `traceparent` header. Otherwise, requests might get blocked. + * + * @see https://www.w3.org/TR/trace-context/ + * + * @default false + */ + propagateTraceparent?: boolean; } export type SentryReplayQuality = 'low' | 'medium' | 'high'; diff --git a/packages/core/src/js/sdk.tsx b/packages/core/src/js/sdk.tsx index 7e70ae492f..9b49a8bca6 100644 --- a/packages/core/src/js/sdk.tsx +++ b/packages/core/src/js/sdk.tsx @@ -45,6 +45,7 @@ const DEFAULT_OPTIONS: ReactNativeOptions = { enableNativeFramesTracking: true, enableStallTracking: true, enableUserInteractionTracing: false, + propagateTraceparent: false, }; /** diff --git a/packages/core/test/sdk.test.ts b/packages/core/test/sdk.test.ts index 0c48cad447..4856f185fd 100644 --- a/packages/core/test/sdk.test.ts +++ b/packages/core/test/sdk.test.ts @@ -1156,6 +1156,28 @@ describe('Tests the SDK functionality', () => { }), ); }); + + it('propagateTraceparent is false by default', () => { + init({}); + + const actualOptions = usedOptions(); + expect(actualOptions).toEqual( + expect.objectContaining({ + propagateTraceparent: false, + }), + ); + }); + + it('propagateTraceparent is getting passed to the client', () => { + init({ propagateTraceparent: true }); + + const actualOptions = usedOptions(); + expect(actualOptions).toEqual( + expect.objectContaining({ + propagateTraceparent: true, + }), + ); + }); }); function expectIntegration(name: string): void {