From 3e38d2c41ae7f8ca20e445cf6795eb4a90fcc0bf Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Thu, 15 Jan 2026 11:58:01 +0100 Subject: [PATCH 1/3] fix(replay): Fix traces not always being attached to replays with errors --- CHANGELOG.md | 1 + packages/core/src/js/replay/mobilereplay.ts | 12 +++++++++++ .../core/test/replay/mobilereplay.test.ts | 20 +++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef271ff7e6..fd082054a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ - Fix for missing `replay_id` from metrics ([#5483](https://github.com/getsentry/sentry-react-native/pull/5483)) - Skip span ID check when standalone mode is enabled ([#5493](https://github.com/getsentry/sentry-react-native/pull/5493)) +- Fix traces not always being attached to replays with errors ([#5537](https://github.com/getsentry/sentry-react-native/pull/5537)) ### Dependencies diff --git a/packages/core/src/js/replay/mobilereplay.ts b/packages/core/src/js/replay/mobilereplay.ts index 293a14ea5d..437df76d3c 100644 --- a/packages/core/src/js/replay/mobilereplay.ts +++ b/packages/core/src/js/replay/mobilereplay.ts @@ -216,6 +216,12 @@ export const mobileReplayIntegration = (initOptions: MobileReplayOptions = defau debug.log( `[Sentry] ${MOBILE_REPLAY_INTEGRATION_NAME} Captured recording replay ${replayId} for event ${event.event_id}.`, ); + // Add replay_id to error event contexts to link replays to events/traces + event.contexts = event.contexts || {}; + event.contexts.replay = { + ...event.contexts.replay, + replay_id: replayId, + }; } else { // Check if there's an ongoing recording and update cache if found const recordingReplayId = NATIVE.getCurrentReplayId(); @@ -224,6 +230,12 @@ export const mobileReplayIntegration = (initOptions: MobileReplayOptions = defau debug.log( `[Sentry] ${MOBILE_REPLAY_INTEGRATION_NAME} assign already recording replay ${recordingReplayId} for event ${event.event_id}.`, ); + // Add replay_id to error event contexts to link replays to events/traces + event.contexts = event.contexts || {}; + event.contexts.replay = { + ...event.contexts.replay, + replay_id: recordingReplayId, + }; } else { updateCachedReplayId(null); debug.log(`[Sentry] ${MOBILE_REPLAY_INTEGRATION_NAME} not sampled for event ${event.event_id}.`); diff --git a/packages/core/test/replay/mobilereplay.test.ts b/packages/core/test/replay/mobilereplay.test.ts index aa76c65a36..87cec35e5f 100644 --- a/packages/core/test/replay/mobilereplay.test.ts +++ b/packages/core/test/replay/mobilereplay.test.ts @@ -258,6 +258,26 @@ describe('Mobile Replay Integration', () => { expect(mockCaptureReplay).toHaveBeenCalled(); }); + + it('should add replay context to error events when replay is captured', async () => { + const integration = mobileReplayIntegration(); + const replayId = 'test-replay-id'; + mockCaptureReplay.mockResolvedValue(replayId); + + const event: Event = { + event_id: 'test-event-id', + exception: { + values: [{ type: 'Error', value: 'Test error' }], + }, + }; + const hint: EventHint = {}; + + if (integration.processEvent) { + const processedEvent = await integration.processEvent(event, hint); + expect(processedEvent.contexts?.replay?.replay_id).toBe(replayId); + } + }); + }); describe('platform checks', () => { From 78fa367c71fe53d4152471f878bb750bcd80beba Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Thu, 15 Jan 2026 12:00:22 +0100 Subject: [PATCH 2/3] Update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd082054a8..723683411a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ - Fix for missing `replay_id` from metrics ([#5483](https://github.com/getsentry/sentry-react-native/pull/5483)) - Skip span ID check when standalone mode is enabled ([#5493](https://github.com/getsentry/sentry-react-native/pull/5493)) -- Fix traces not always being attached to replays with errors ([#5537](https://github.com/getsentry/sentry-react-native/pull/5537)) +- Fix traces not always being attached to replays with errors ([#5538](https://github.com/getsentry/sentry-react-native/pull/5538)) ### Dependencies From ccfdbbc77b733301bb70c4cda77a31da1dd7379f Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Thu, 15 Jan 2026 12:06:34 +0100 Subject: [PATCH 3/3] Fix lint issue --- packages/core/test/replay/mobilereplay.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/core/test/replay/mobilereplay.test.ts b/packages/core/test/replay/mobilereplay.test.ts index 87cec35e5f..eadbc0ac21 100644 --- a/packages/core/test/replay/mobilereplay.test.ts +++ b/packages/core/test/replay/mobilereplay.test.ts @@ -277,7 +277,6 @@ describe('Mobile Replay Integration', () => { expect(processedEvent.contexts?.replay?.replay_id).toBe(replayId); } }); - }); describe('platform checks', () => {