From e7066130b85eb54acae2aed7c4774197ab122e82 Mon Sep 17 00:00:00 2001 From: Alexander Pantiukhov Date: Mon, 24 Nov 2025 13:54:47 +0100 Subject: [PATCH 1/7] Metrics for React Native SDK --- packages/core/src/js/index.ts | 1 + packages/core/src/js/wrapper.ts | 1 + packages/core/test/wrapper.test.ts | 18 ++++++++++++++++++ samples/expo/app/(tabs)/index.tsx | 18 +++++++++++++++++- samples/expo/app/_layout.tsx | 7 ++++++- samples/react-native-macos/src/App.tsx | 4 ++++ samples/react-native/src/App.tsx | 4 ++++ 7 files changed, 51 insertions(+), 2 deletions(-) diff --git a/packages/core/src/js/index.ts b/packages/core/src/js/index.ts index 4a475a33c1..d43df01c5f 100644 --- a/packages/core/src/js/index.ts +++ b/packages/core/src/js/index.ts @@ -46,6 +46,7 @@ export { setCurrentClient, addEventProcessor, lastEventId, + metrics, } from '@sentry/core'; export { diff --git a/packages/core/src/js/wrapper.ts b/packages/core/src/js/wrapper.ts index d84e61a632..3ac01e6498 100644 --- a/packages/core/src/js/wrapper.ts +++ b/packages/core/src/js/wrapper.ts @@ -281,6 +281,7 @@ export const NATIVE: SentryNativeWrapper = { beforeSend, beforeBreadcrumb, beforeSendTransaction, + beforeSendMetric, integrations, ignoreErrors, logsOrigin, diff --git a/packages/core/test/wrapper.test.ts b/packages/core/test/wrapper.test.ts index a27b13bdc8..8b2ead16c9 100644 --- a/packages/core/test/wrapper.test.ts +++ b/packages/core/test/wrapper.test.ts @@ -194,6 +194,24 @@ describe('Tests Native Wrapper', () => { expect(NATIVE.enableNative).toBe(true); }); + test('filter beforeSendMetric when initializing Native SDK', async () => { + await NATIVE.initNativeSdk({ + dsn: 'test', + enableNative: true, + autoInitializeNativeSdk: true, + beforeSendMetric: jest.fn(), + devServerUrl: undefined, + defaultSidecarUrl: undefined, + mobileReplayOptions: undefined, + }); + + expect(RNSentry.initNativeSdk).toHaveBeenCalled(); + // @ts-expect-error mock value + const initParameter = RNSentry.initNativeSdk.mock.calls[0][0]; + expect(initParameter).not.toHaveProperty('beforeSendMetric'); + expect(NATIVE.enableNative).toBe(true); + }); + test('filter integrations when initializing Native SDK', async () => { await NATIVE.initNativeSdk({ dsn: 'test', diff --git a/samples/expo/app/(tabs)/index.tsx b/samples/expo/app/(tabs)/index.tsx index 68745d776c..15b25a0dd9 100644 --- a/samples/expo/app/(tabs)/index.tsx +++ b/samples/expo/app/(tabs)/index.tsx @@ -39,6 +39,22 @@ export default function TabOneScreen() { }} /> + +