From c796cd2251cf0cc2cdfde8d133f9e29652a0ae69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Carekm213=E2=80=9D?= Date: Thu, 29 Oct 2026 16:41:57 +0100 Subject: [PATCH 1/2] Upgrade Sentry React Native SDK to 8.32.0 and revert the TurboModuleContext workaround --- ios/Podfile.lock | 4 +- package-lock.json | 324 ++++++++++-------- package.json | 6 +- ...utils+10.76.2+001+data-sentry-label.patch} | 0 patches/sentry-browser-utils/details.md | 2 +- ....0.patch => @sentry+browser+10.76.2.patch} | 0 patches/sentry-browser/details.md | 2 +- ...=> @sentry+core+10.76.2+001+initial.patch} | 0 patches/sentry-core/details.md | 2 +- ...atch => @sentry+react-native+8.32.0.patch} | 0 patches/sentry-react-native/details.md | 2 +- src/setup/telemetry/setupSentry.ts | 23 +- tests/unit/setupSentryIntegrationOrderTest.ts | 18 +- 13 files changed, 205 insertions(+), 178 deletions(-) rename patches/sentry-browser-utils/{@sentry+browser-utils+10.75.0+001+data-sentry-label.patch => @sentry+browser-utils+10.76.2+001+data-sentry-label.patch} (100%) rename patches/sentry-browser/{@sentry+browser+10.75.0.patch => @sentry+browser+10.76.2.patch} (100%) rename patches/sentry-core/{@sentry+core+10.75.0+001+initial.patch => @sentry+core+10.76.2+001+initial.patch} (100%) rename patches/sentry-react-native/{@sentry+react-native+8.27.0.patch => @sentry+react-native+8.32.0.patch} (100%) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 8545c89aa5c2..da268e6e4118 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -3285,7 +3285,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - RNSentry (8.27.0): + - RNSentry (8.32.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -4182,7 +4182,7 @@ SPEC CHECKSUMS: RNReactNativeHapticFeedback: 6c8677db48f62a635e6a2065f5d2bd02498d7a73 RNReanimated: e75c988a6527ec651ea2957b93891ddb64d530d4 RNScreens: 433b8c24dd1dfeaa3b61f72d55052cb64fd19c5f - RNSentry: 3dcc26572ed12d8ee7edbe80d198dda70ac10d4c + RNSentry: b182c4e68ff5e50275011476ea2702f05412ae05 RNShare: eb378c57de30a83b0253eed74762ee99249f47d7 RNSVG: 394cfd0518613b144c65ffe69045f827b78a7a7c RNWorklets: 3da8f468c848547646f4e6b12fb46ad93a2cdee2 diff --git a/package-lock.json b/package-lock.json index 17540997fc47..38686fc01a77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,8 +52,8 @@ "@react-ng/bounds-observer": "^0.2.1", "@rnmapbox/maps": "10.3.2", "@sbaiahmed1/react-native-biometrics": "0.15.0", - "@sentry/core": "10.75.0", - "@sentry/react-native": "8.27.0", + "@sentry/core": "10.76.2", + "@sentry/react-native": "8.32.0", "@shopify/flash-list": "2.3.2", "@shopify/react-native-skia": "^2.11.2", "@ua/react-native-airship": "26.7.0", @@ -201,7 +201,7 @@ "@rsdoctor/rspack-plugin": "^1.5.17", "@rspack/core": "^2.1.2", "@rspack/plugin-react-refresh": "^2.0.2", - "@sentry/browser-utils": "10.75.0", + "@sentry/browser-utils": "10.76.2", "@sentry/cli": "3.3.0", "@sentry/webpack-plugin": "5.2.0", "@storybook/addon-a11y": "10.6.2", @@ -16933,30 +16933,30 @@ } }, "node_modules/@sentry/browser": { - "version": "10.75.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.75.0.tgz", - "integrity": "sha512-CKGSJLWISQ6LgMaGnMpY+XvwWQ2iiHTayUs6SGLIvYeaGo2GTjS/Z4pnbCVHb2t1VxLZksyehgcC6ZYGJeQpzQ==", + "version": "10.76.2", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.76.2.tgz", + "integrity": "sha512-dFyuWYjDs0/LetQZqK5IHj0/wIC8sBYADyMjU5Fo0nt2vzT11CPPG2AKeITIQcoRRs9IZ8ahtDMqWMvBPfDs1w==", "license": "MIT", "dependencies": { - "@sentry/browser-utils": "10.75.0", + "@sentry/browser-utils": "10.76.2", "@sentry/conventions": "^0.16.0", - "@sentry/core": "10.75.0", - "@sentry/feedback": "10.75.0", - "@sentry/replay": "10.75.0", - "@sentry/replay-canvas": "10.75.0" + "@sentry/core": "10.76.2", + "@sentry/feedback": "10.76.2", + "@sentry/replay": "10.76.2", + "@sentry/replay-canvas": "10.76.2" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/browser-utils": { - "version": "10.75.0", - "resolved": "https://registry.npmjs.org/@sentry/browser-utils/-/browser-utils-10.75.0.tgz", - "integrity": "sha512-yZfdQ87RLat/7retF8zA6Z9zCAT12IyaPvIiu+bbi1E1V1OqDpS8MKNa/6LF69Ap7DVTORi9ITEgjlAqTXF0xQ==", + "version": "10.76.2", + "resolved": "https://registry.npmjs.org/@sentry/browser-utils/-/browser-utils-10.76.2.tgz", + "integrity": "sha512-onALxAdvLWyK+0erbrv7LVzh1zX9sErOM21eCz1dpNUIQadrR9tmd5J1kL9a2Wagq1RyIWRmy/YtpwOK4myZaQ==", "license": "MIT", "dependencies": { "@sentry/conventions": "^0.16.0", - "@sentry/core": "10.75.0" + "@sentry/core": "10.76.2" }, "engines": { "node": ">=18" @@ -17422,9 +17422,9 @@ } }, "node_modules/@sentry/core": { - "version": "10.75.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.75.0.tgz", - "integrity": "sha512-5wDQpQqjJ6RHdPR+z6Q+47XlwoxRKBv0yyB0LKHqL/1azPOQbR+nllyLmmQDcoJpaksuLSmLA1q6hFX7gjDT2w==", + "version": "10.76.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.76.2.tgz", + "integrity": "sha512-vndrQalRiwYatTkjlLWvyf69KocXIb9TKJ4A9oiyWguL8PJYtqIRTlRe4OpkpjLrxS18fvRdV0jEm29c/9p3hQ==", "license": "MIT", "dependencies": { "@sentry/conventions": "^0.16.0" @@ -17434,12 +17434,12 @@ } }, "node_modules/@sentry/expo-upload-sourcemaps": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@sentry/expo-upload-sourcemaps/-/expo-upload-sourcemaps-8.27.0.tgz", - "integrity": "sha512-o90k7e0AQVJlvbWIPoFcAVXIxM38rsJfp3thHq6oqQCY06Mp0Yhw4SHRPl+fgpg18O09jiTyVWnepCkmJzsVjg==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry/expo-upload-sourcemaps/-/expo-upload-sourcemaps-8.32.0.tgz", + "integrity": "sha512-Pl6j2ZalUZ/CWdwuTeY4b6LqiInrXUBOKGgkE7gwkIZPLkp9/5H8XN9vNJWItPMxsdF72UcJEA1whYEatTCmGg==", "license": "MIT", "dependencies": { - "@sentry/cli": "3.8.0" + "@sentry/cli": "3.8.1" }, "bin": { "expo-upload-sourcemaps": "cli.js" @@ -17461,9 +17461,9 @@ } }, "node_modules/@sentry/expo-upload-sourcemaps/node_modules/@sentry/cli": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-3.8.0.tgz", - "integrity": "sha512-P/Zq0QEXnBbNX8oxd1maHKD06oAH5fxHsxt8QjEzi2J14w4hvwUi6FcMDf7eyuUkdQs8+OvOKeq/9pLuZxVVxQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-3.8.1.tgz", + "integrity": "sha512-9bcaIaUzT/GLIKRyO1VUiX+DKaLza9/QBjdFdSuzOoP721Oy/HNGjn67ieA6yIpEyw7uEcUGuRqy8aUozKGaEg==", "hasInstallScript": true, "license": "FSL-1.1-MIT", "dependencies": { @@ -17479,20 +17479,20 @@ "node": ">= 18" }, "optionalDependencies": { - "@sentry/cli-darwin": "3.8.0", - "@sentry/cli-linux-arm": "3.8.0", - "@sentry/cli-linux-arm64": "3.8.0", - "@sentry/cli-linux-i686": "3.8.0", - "@sentry/cli-linux-x64": "3.8.0", - "@sentry/cli-win32-arm64": "3.8.0", - "@sentry/cli-win32-i686": "3.8.0", - "@sentry/cli-win32-x64": "3.8.0" + "@sentry/cli-darwin": "3.8.1", + "@sentry/cli-linux-arm": "3.8.1", + "@sentry/cli-linux-arm64": "3.8.1", + "@sentry/cli-linux-i686": "3.8.1", + "@sentry/cli-linux-x64": "3.8.1", + "@sentry/cli-win32-arm64": "3.8.1", + "@sentry/cli-win32-i686": "3.8.1", + "@sentry/cli-win32-x64": "3.8.1" } }, "node_modules/@sentry/expo-upload-sourcemaps/node_modules/@sentry/cli-darwin": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-3.8.0.tgz", - "integrity": "sha512-i+qTGaHqL6LaIfMYuEohExJyzZwvRRsiQm+vrol/WfFGvqogeijXAU2wXn3xBglszUK/ia1xWH4KxcnqNLOpdQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-3.8.1.tgz", + "integrity": "sha512-fARVvybd2wg9ajwCYETI8gvBhkD1xN39z15jgC8HvfssVEUfC2yKfl9W4/NZ3YbXIlVT4aNhbrmfHd36IRhffg==", "license": "FSL-1.1-MIT", "optional": true, "os": [ @@ -17503,9 +17503,9 @@ } }, "node_modules/@sentry/expo-upload-sourcemaps/node_modules/@sentry/cli-linux-arm": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-3.8.0.tgz", - "integrity": "sha512-wcpKNI22usaf7ZIHLaWofHVN5wOlmTdVjnQO5pYqDZNHRvhbO7HwZfLghR/p7aLuhETtePIFhcgjWlyU4uvWZQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-3.8.1.tgz", + "integrity": "sha512-mRyEuD7LDPdwMw8jsTuW0egBkSk2kddCZS0TON7+mRhWEgW21acrTJTvkHxcc2bL8wRIAqyG8z5dnedt3r8ang==", "cpu": [ "arm" ], @@ -17521,9 +17521,9 @@ } }, "node_modules/@sentry/expo-upload-sourcemaps/node_modules/@sentry/cli-linux-arm64": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-3.8.0.tgz", - "integrity": "sha512-CS43j4vbLJBoB4c5MRZS7/nCf62yCnPIMQj7N+ZC50ze6EM8efEy4jq1ZZjz4G9u6AKuo6sntuaOlOGdZL5l6g==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-3.8.1.tgz", + "integrity": "sha512-0juQjMZ0Oc2o1XEYKw0jVZpGLq3beA1kJ9mK+NUqh8ulbyRzfv7ALK6i2VKDRmiepN5TRLB11nvwD50DySGirQ==", "cpu": [ "arm64" ], @@ -17539,9 +17539,9 @@ } }, "node_modules/@sentry/expo-upload-sourcemaps/node_modules/@sentry/cli-linux-i686": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-3.8.0.tgz", - "integrity": "sha512-ckQ5XeY+D5ISyFKrGnmYt5xarqQ1VHPMBJQnwnG0Hb1V116efAIusK5NqoHMP0o5Bu17BRlaxYA1l81HmvKqFQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-3.8.1.tgz", + "integrity": "sha512-RNP8WJTYcZ546+otTpAB9P99s1zD3sv1iimDXjufwTsCWyqdo0D1mpN2F30u6+0ur6l91+H88m5pfep3gc+7BA==", "cpu": [ "x86", "ia32" @@ -17558,9 +17558,9 @@ } }, "node_modules/@sentry/expo-upload-sourcemaps/node_modules/@sentry/cli-linux-x64": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-3.8.0.tgz", - "integrity": "sha512-jMXbyLIuGFW1uuFSByy54edkHPIaiCVyymKW0ia+lgA6nfFEH4Y1Z+bxXyK6BBr8TD6/P5ROqiPivg0oFEDciQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-3.8.1.tgz", + "integrity": "sha512-rmie06o7WOmbdqIqGCHrqiBj7WDn4DOnZIi+uGKwPepDuhdupMz728resdJN23dPYTWojKlTwXBU6ahzmV5kLA==", "cpu": [ "x64" ], @@ -17576,9 +17576,9 @@ } }, "node_modules/@sentry/expo-upload-sourcemaps/node_modules/@sentry/cli-win32-arm64": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-3.8.0.tgz", - "integrity": "sha512-AtfvaIZ9hK/l2Q2It6PLTtLlQTRe7179kZVi++qd98iE7Ix4ysdgshhozW5uUu4gI9kauJC/fhe21p9lr0uwlA==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-3.8.1.tgz", + "integrity": "sha512-qizCjnnJs19kUnTvbW2IQoLdqWOXY6nZlCZuNPnl3y9VGzvk5hSFVtKsAj83U2+xQgkBm+/bboNsJ6Dvv1cGfA==", "cpu": [ "arm64" ], @@ -17592,9 +17592,9 @@ } }, "node_modules/@sentry/expo-upload-sourcemaps/node_modules/@sentry/cli-win32-i686": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-3.8.0.tgz", - "integrity": "sha512-lIbGRYAM4DZPzwLiqOsT/vwhOr0o1qqx46buxdMnH05KZAYzMtGDbK0X9iGdhWQLOOp1/2vuUNVgMgCzSDyHXA==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-3.8.1.tgz", + "integrity": "sha512-PuJKeSPum2nKwRwKF1UCA79J3NQ5I6Ds+nwN1GA2Bth5I3F/SJ421TEXxs05Q5ghr+mRHWXCz2e4jecikVVgPA==", "cpu": [ "x86", "ia32" @@ -17609,9 +17609,9 @@ } }, "node_modules/@sentry/expo-upload-sourcemaps/node_modules/@sentry/cli-win32-x64": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-3.8.0.tgz", - "integrity": "sha512-PJk9uYZsVnUcf7BfeJZcmgRIymRWojIVYCx3704VlOr65JFP5KmeKBVgHzfwPqLfjZaeerL81NO0fG3recDjqA==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-3.8.1.tgz", + "integrity": "sha512-F/62XBSZmjRzh/PylnMM4uBjW15I97ZSK+Bp8NfAS+bxqeCpWc7sh9NOqnaNqYoVAMfEkecu6SzKXr0H58Zc7A==", "cpu": [ "x64" ], @@ -17625,26 +17625,26 @@ } }, "node_modules/@sentry/feedback": { - "version": "10.75.0", - "resolved": "https://registry.npmjs.org/@sentry/feedback/-/feedback-10.75.0.tgz", - "integrity": "sha512-YLVAFQXELJAOg7ke4oLkd8t5l0fJUockLlTQJg/2Trh7SB5Q4mkSwlnAkEAqDQ618vnpFsG/tnYMwtfZeffHjA==", + "version": "10.76.2", + "resolved": "https://registry.npmjs.org/@sentry/feedback/-/feedback-10.76.2.tgz", + "integrity": "sha512-w8T7+LfAXjPPg/CpIcXHzPfeMHXR+61WhfYCwKNFK4mUQknYK4m0Kbt28dte9fSsijo4hKvHZ+tJc591SaD4ig==", "license": "MIT", "dependencies": { - "@sentry/core": "10.75.0" + "@sentry/core": "10.76.2" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/react": { - "version": "10.75.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.75.0.tgz", - "integrity": "sha512-ghWv99h7k4WgMucqBhf4jZn+G0Owm5gCBCVKOKu88UDCWUd9aVJ8FGosAkATp/x/ogcZTnqG2dcXBD+1U+BJeA==", + "version": "10.76.2", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.76.2.tgz", + "integrity": "sha512-ylW0pGg6LA8iPEPjoLXi/6IxzPSTo92pqwVMPAGRhS04he904jsIV4oMt97irDfyGEUUdZFdm/tpWO40Xuu4RQ==", "license": "MIT", "dependencies": { - "@sentry/browser": "10.75.0", + "@sentry/browser": "10.76.2", "@sentry/conventions": "^0.16.0", - "@sentry/core": "10.75.0" + "@sentry/core": "10.76.2" }, "engines": { "node": ">=18" @@ -17654,17 +17654,17 @@ } }, "node_modules/@sentry/react-native": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-8.27.0.tgz", - "integrity": "sha512-tlxjhqWe43B9bMRqn/lPrayXgsFBhxVjQn6kyXZ09DY0j0Y76tTiy5hkdG48RwCcBcv9SMZAtaiS2M9eTLyH3w==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-8.32.0.tgz", + "integrity": "sha512-Z7W2t0oDrm46JU+FgdB0AL+Ru5urBVmFhYl/RjuPi2AnAjddmbNyDZGzpOLSYtl6oWqqz2u4zGuj3ZFjrCMJOg==", "license": "MIT", "dependencies": { - "@sentry/browser": "10.75.0", - "@sentry/bundler-plugins": "10.75.0", - "@sentry/cli": "3.8.0", - "@sentry/core": "10.75.0", - "@sentry/expo-upload-sourcemaps": "8.27.0", - "@sentry/react": "10.75.0" + "@sentry/browser": "10.76.2", + "@sentry/bundler-plugins": "10.76.2", + "@sentry/cli": "3.8.1", + "@sentry/core": "10.76.2", + "@sentry/expo-upload-sourcemaps": "8.32.0", + "@sentry/react": "10.76.2" }, "bin": { "sentry-eas-build-on-complete": "scripts/eas-build-hook.js", @@ -17673,25 +17673,77 @@ "sentry-expo-upload-sourcemaps": "scripts/expo-upload-sourcemaps.js" }, "peerDependencies": { + "@babel/core": ">=7.0.0", + "@expo/config": "*", + "@expo/config-types": "*", + "@expo/env": "*", + "@react-navigation/native": "*", + "dotenv": "*", "expo": ">=49.0.0", + "expo-router": "*", + "expo-updates": "*", + "metro": "*", + "metro-config": "*", + "metro-resolver": "*", + "open": "*", + "promise": "*", "react": ">=17.0.0", "react-native": ">=0.65.0" }, "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@expo/config": { + "optional": true + }, + "@expo/config-types": { + "optional": true + }, + "@expo/env": { + "optional": true + }, + "@react-navigation/native": { + "optional": true + }, + "dotenv": { + "optional": true + }, "expo": { "optional": true + }, + "expo-router": { + "optional": true + }, + "expo-updates": { + "optional": true + }, + "metro": { + "optional": true + }, + "metro-config": { + "optional": true + }, + "metro-resolver": { + "optional": true + }, + "open": { + "optional": true + }, + "promise": { + "optional": true } } }, "node_modules/@sentry/react-native/node_modules/@sentry/bundler-plugins": { - "version": "10.75.0", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugins/-/bundler-plugins-10.75.0.tgz", - "integrity": "sha512-kpMO7NhvfqsobpShyW/YnNJmJpw7mPEAQorJnEzf0ZRqNvEGFjKKN19SZWbbBNdcQDvHPlRIVOC00zdXuw3y/w==", + "version": "10.76.2", + "resolved": "https://registry.npmjs.org/@sentry/bundler-plugins/-/bundler-plugins-10.76.2.tgz", + "integrity": "sha512-5ovSYkHaTTDwe6p9vq0AzE+W9likkINBpzCv7VychGqYUfBGNzr+0YVkAt9//saJI9BKs+lWud5qX5iASf6wkw==", "license": "MIT", "dependencies": { "@babel/core": "^7.18.5", "@sentry/cli": "^2.58.6", - "@sentry/core": "10.75.0", + "@sentry/core": "10.76.2", "dotenv": "^17.4.2", "find-up": "^5.0.0", "glob": "^13.0.6", @@ -17878,10 +17930,22 @@ "node": ">=10" } }, + "node_modules/@sentry/react-native/node_modules/@sentry/bundler-plugins/node_modules/dotenv": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/@sentry/react-native/node_modules/@sentry/cli": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-3.8.0.tgz", - "integrity": "sha512-P/Zq0QEXnBbNX8oxd1maHKD06oAH5fxHsxt8QjEzi2J14w4hvwUi6FcMDf7eyuUkdQs8+OvOKeq/9pLuZxVVxQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-3.8.1.tgz", + "integrity": "sha512-9bcaIaUzT/GLIKRyO1VUiX+DKaLza9/QBjdFdSuzOoP721Oy/HNGjn67ieA6yIpEyw7uEcUGuRqy8aUozKGaEg==", "hasInstallScript": true, "license": "FSL-1.1-MIT", "dependencies": { @@ -17897,20 +17961,20 @@ "node": ">= 18" }, "optionalDependencies": { - "@sentry/cli-darwin": "3.8.0", - "@sentry/cli-linux-arm": "3.8.0", - "@sentry/cli-linux-arm64": "3.8.0", - "@sentry/cli-linux-i686": "3.8.0", - "@sentry/cli-linux-x64": "3.8.0", - "@sentry/cli-win32-arm64": "3.8.0", - "@sentry/cli-win32-i686": "3.8.0", - "@sentry/cli-win32-x64": "3.8.0" + "@sentry/cli-darwin": "3.8.1", + "@sentry/cli-linux-arm": "3.8.1", + "@sentry/cli-linux-arm64": "3.8.1", + "@sentry/cli-linux-i686": "3.8.1", + "@sentry/cli-linux-x64": "3.8.1", + "@sentry/cli-win32-arm64": "3.8.1", + "@sentry/cli-win32-i686": "3.8.1", + "@sentry/cli-win32-x64": "3.8.1" } }, "node_modules/@sentry/react-native/node_modules/@sentry/cli-darwin": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-3.8.0.tgz", - "integrity": "sha512-i+qTGaHqL6LaIfMYuEohExJyzZwvRRsiQm+vrol/WfFGvqogeijXAU2wXn3xBglszUK/ia1xWH4KxcnqNLOpdQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-3.8.1.tgz", + "integrity": "sha512-fARVvybd2wg9ajwCYETI8gvBhkD1xN39z15jgC8HvfssVEUfC2yKfl9W4/NZ3YbXIlVT4aNhbrmfHd36IRhffg==", "license": "FSL-1.1-MIT", "optional": true, "os": [ @@ -17921,9 +17985,9 @@ } }, "node_modules/@sentry/react-native/node_modules/@sentry/cli-linux-arm": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-3.8.0.tgz", - "integrity": "sha512-wcpKNI22usaf7ZIHLaWofHVN5wOlmTdVjnQO5pYqDZNHRvhbO7HwZfLghR/p7aLuhETtePIFhcgjWlyU4uvWZQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-3.8.1.tgz", + "integrity": "sha512-mRyEuD7LDPdwMw8jsTuW0egBkSk2kddCZS0TON7+mRhWEgW21acrTJTvkHxcc2bL8wRIAqyG8z5dnedt3r8ang==", "cpu": [ "arm" ], @@ -17939,9 +18003,9 @@ } }, "node_modules/@sentry/react-native/node_modules/@sentry/cli-linux-arm64": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-3.8.0.tgz", - "integrity": "sha512-CS43j4vbLJBoB4c5MRZS7/nCf62yCnPIMQj7N+ZC50ze6EM8efEy4jq1ZZjz4G9u6AKuo6sntuaOlOGdZL5l6g==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-3.8.1.tgz", + "integrity": "sha512-0juQjMZ0Oc2o1XEYKw0jVZpGLq3beA1kJ9mK+NUqh8ulbyRzfv7ALK6i2VKDRmiepN5TRLB11nvwD50DySGirQ==", "cpu": [ "arm64" ], @@ -17957,9 +18021,9 @@ } }, "node_modules/@sentry/react-native/node_modules/@sentry/cli-linux-i686": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-3.8.0.tgz", - "integrity": "sha512-ckQ5XeY+D5ISyFKrGnmYt5xarqQ1VHPMBJQnwnG0Hb1V116efAIusK5NqoHMP0o5Bu17BRlaxYA1l81HmvKqFQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-3.8.1.tgz", + "integrity": "sha512-RNP8WJTYcZ546+otTpAB9P99s1zD3sv1iimDXjufwTsCWyqdo0D1mpN2F30u6+0ur6l91+H88m5pfep3gc+7BA==", "cpu": [ "x86", "ia32" @@ -17976,9 +18040,9 @@ } }, "node_modules/@sentry/react-native/node_modules/@sentry/cli-linux-x64": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-3.8.0.tgz", - "integrity": "sha512-jMXbyLIuGFW1uuFSByy54edkHPIaiCVyymKW0ia+lgA6nfFEH4Y1Z+bxXyK6BBr8TD6/P5ROqiPivg0oFEDciQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-3.8.1.tgz", + "integrity": "sha512-rmie06o7WOmbdqIqGCHrqiBj7WDn4DOnZIi+uGKwPepDuhdupMz728resdJN23dPYTWojKlTwXBU6ahzmV5kLA==", "cpu": [ "x64" ], @@ -17994,9 +18058,9 @@ } }, "node_modules/@sentry/react-native/node_modules/@sentry/cli-win32-arm64": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-3.8.0.tgz", - "integrity": "sha512-AtfvaIZ9hK/l2Q2It6PLTtLlQTRe7179kZVi++qd98iE7Ix4ysdgshhozW5uUu4gI9kauJC/fhe21p9lr0uwlA==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-3.8.1.tgz", + "integrity": "sha512-qizCjnnJs19kUnTvbW2IQoLdqWOXY6nZlCZuNPnl3y9VGzvk5hSFVtKsAj83U2+xQgkBm+/bboNsJ6Dvv1cGfA==", "cpu": [ "arm64" ], @@ -18010,9 +18074,9 @@ } }, "node_modules/@sentry/react-native/node_modules/@sentry/cli-win32-i686": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-3.8.0.tgz", - "integrity": "sha512-lIbGRYAM4DZPzwLiqOsT/vwhOr0o1qqx46buxdMnH05KZAYzMtGDbK0X9iGdhWQLOOp1/2vuUNVgMgCzSDyHXA==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-3.8.1.tgz", + "integrity": "sha512-PuJKeSPum2nKwRwKF1UCA79J3NQ5I6Ds+nwN1GA2Bth5I3F/SJ421TEXxs05Q5ghr+mRHWXCz2e4jecikVVgPA==", "cpu": [ "x86", "ia32" @@ -18027,9 +18091,9 @@ } }, "node_modules/@sentry/react-native/node_modules/@sentry/cli-win32-x64": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-3.8.0.tgz", - "integrity": "sha512-PJk9uYZsVnUcf7BfeJZcmgRIymRWojIVYCx3704VlOr65JFP5KmeKBVgHzfwPqLfjZaeerL81NO0fG3recDjqA==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-3.8.1.tgz", + "integrity": "sha512-F/62XBSZmjRzh/PylnMM4uBjW15I97ZSK+Bp8NfAS+bxqeCpWc7sh9NOqnaNqYoVAMfEkecu6SzKXr0H58Zc7A==", "cpu": [ "x64" ], @@ -18063,18 +18127,6 @@ "node": "20 || >=22" } }, - "node_modules/@sentry/react-native/node_modules/dotenv": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", - "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/@sentry/react-native/node_modules/glob": { "version": "13.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", @@ -18133,26 +18185,26 @@ } }, "node_modules/@sentry/replay": { - "version": "10.75.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-10.75.0.tgz", - "integrity": "sha512-p4xxEo/ayiMZG9tygr09YjqYAd52uq8Qi0EVoRRgUe70nQda0HVPVW519JLq0G+Th/5O5sKME9y1layLU3xlPg==", + "version": "10.76.2", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-10.76.2.tgz", + "integrity": "sha512-xMNFEZ7KuEvfj9j1cKmcH+p6u5t3NZs1vcrj+sBW5+S9C327ASOAvcR23ZoM0UhTXr9j7j+Dozs/NYHW2EYjpw==", "license": "MIT", "dependencies": { - "@sentry/browser-utils": "10.75.0", - "@sentry/core": "10.75.0" + "@sentry/browser-utils": "10.76.2", + "@sentry/core": "10.76.2" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/replay-canvas": { - "version": "10.75.0", - "resolved": "https://registry.npmjs.org/@sentry/replay-canvas/-/replay-canvas-10.75.0.tgz", - "integrity": "sha512-LNokI5Ud22nZ/o2il/2SfbNIARupWrbS6Mh9jZroZTjD38FN0Oi9vIexj6h1HN81C6+lP2Tmpaj+fl3/wOizzA==", + "version": "10.76.2", + "resolved": "https://registry.npmjs.org/@sentry/replay-canvas/-/replay-canvas-10.76.2.tgz", + "integrity": "sha512-mx7/pXIS7CpuduN5TFI36pBoe62CeTQ4IMQJ+MEJXAhxMmYFZQunc24dNltcs6hjzrhtZqGBYSAV1J+iCKFwdg==", "license": "MIT", "dependencies": { - "@sentry/core": "10.75.0", - "@sentry/replay": "10.75.0" + "@sentry/core": "10.76.2", + "@sentry/replay": "10.76.2" }, "engines": { "node": ">=18" diff --git a/package.json b/package.json index a5ce56ce3059..de975c1eeb41 100644 --- a/package.json +++ b/package.json @@ -128,8 +128,8 @@ "@react-ng/bounds-observer": "^0.2.1", "@rnmapbox/maps": "10.3.2", "@sbaiahmed1/react-native-biometrics": "0.15.0", - "@sentry/core": "10.75.0", - "@sentry/react-native": "8.27.0", + "@sentry/core": "10.76.2", + "@sentry/react-native": "8.32.0", "@shopify/flash-list": "2.3.2", "@shopify/react-native-skia": "^2.11.2", "@ua/react-native-airship": "26.7.0", @@ -277,7 +277,7 @@ "@rsdoctor/rspack-plugin": "^1.5.17", "@rspack/core": "^2.1.2", "@rspack/plugin-react-refresh": "^2.0.2", - "@sentry/browser-utils": "10.75.0", + "@sentry/browser-utils": "10.76.2", "@sentry/cli": "3.3.0", "@sentry/webpack-plugin": "5.2.0", "@storybook/addon-a11y": "10.6.2", diff --git a/patches/sentry-browser-utils/@sentry+browser-utils+10.75.0+001+data-sentry-label.patch b/patches/sentry-browser-utils/@sentry+browser-utils+10.76.2+001+data-sentry-label.patch similarity index 100% rename from patches/sentry-browser-utils/@sentry+browser-utils+10.75.0+001+data-sentry-label.patch rename to patches/sentry-browser-utils/@sentry+browser-utils+10.76.2+001+data-sentry-label.patch diff --git a/patches/sentry-browser-utils/details.md b/patches/sentry-browser-utils/details.md index 531bcb9621d6..86a123bda19b 100644 --- a/patches/sentry-browser-utils/details.md +++ b/patches/sentry-browser-utils/details.md @@ -1,6 +1,6 @@ # `@sentry/browser-utils` patches -### [@sentry+browser-utils+10.75.0+001+data-sentry-label.patch](@sentry+browser-utils+10.75.0+001+data-sentry-label.patch) +### [@sentry+browser-utils+10.76.2+001+data-sentry-label.patch](@sentry+browser-utils+10.76.2+001+data-sentry-label.patch) - Reason: Enhances the `htmlTreeAsString` function to support `data-sentry-label` attributes for better element identification in Sentry spans. The patch: - Always includes `data-sentry-label` in the list of checked attributes for each DOM element diff --git a/patches/sentry-browser/@sentry+browser+10.75.0.patch b/patches/sentry-browser/@sentry+browser+10.76.2.patch similarity index 100% rename from patches/sentry-browser/@sentry+browser+10.75.0.patch rename to patches/sentry-browser/@sentry+browser+10.76.2.patch diff --git a/patches/sentry-browser/details.md b/patches/sentry-browser/details.md index d77e09c97dc8..a0f9fddc0694 100644 --- a/patches/sentry-browser/details.md +++ b/patches/sentry-browser/details.md @@ -1,6 +1,6 @@ # `@sentry/browser` patches -### [@sentry+browser+10.75.0.patch](@sentry+browser+10.75.0.patch) +### [@sentry+browser+10.76.2.patch](@sentry+browser+10.76.2.patch) Reason: improve developer experience by adding `request-id` to spans related to API calls. This takes request-id from response headers and write it to the span related to that response. With that information it is easier to connect backend request / logs with data retrieved from Sentry. - Upstream PR/issue: N/A diff --git a/patches/sentry-core/@sentry+core+10.75.0+001+initial.patch b/patches/sentry-core/@sentry+core+10.76.2+001+initial.patch similarity index 100% rename from patches/sentry-core/@sentry+core+10.75.0+001+initial.patch rename to patches/sentry-core/@sentry+core+10.76.2+001+initial.patch diff --git a/patches/sentry-core/details.md b/patches/sentry-core/details.md index 73cc3cc78a33..dc606e90c64f 100644 --- a/patches/sentry-core/details.md +++ b/patches/sentry-core/details.md @@ -1,6 +1,6 @@ # `@sentry/core` patches -### [@sentry+core+10.75.0+001+initial.patch](@sentry+core+10.75.0+001+initial.patch) +### [@sentry+core+10.76.2+001+initial.patch](@sentry+core+10.76.2+001+initial.patch) - Reason: Adds `request-id` from fetch response headers to spans, making it easier to correlate Sentry data with backend logs. - Upstream PR/issue: N/A diff --git a/patches/sentry-react-native/@sentry+react-native+8.27.0.patch b/patches/sentry-react-native/@sentry+react-native+8.32.0.patch similarity index 100% rename from patches/sentry-react-native/@sentry+react-native+8.27.0.patch rename to patches/sentry-react-native/@sentry+react-native+8.32.0.patch diff --git a/patches/sentry-react-native/details.md b/patches/sentry-react-native/details.md index dc65c65735e5..f4b2dbd1add3 100644 --- a/patches/sentry-react-native/details.md +++ b/patches/sentry-react-native/details.md @@ -1,6 +1,6 @@ # `@sentry/react-native` patches -### [@sentry+react-native+8.27.0.patch](@sentry+react-native+8.27.0.patch) +### [@sentry+react-native+8.32.0.patch](@sentry+react-native+8.32.0.patch) - Reason: Fixes React Native path resolution in the Sentry Ruby script during iOS builds. The original implementation failed to locate `react-native/package.json` in our hybrid app setup. The patch changes the resolution strategy to first try resolving from the installation root (similar to react-native-svg and react-native-reanimated), and falls back to ENV variables with support for both node_modules conventions. - Upstream PR/issue: N/A (specific to our hybrid app environment) diff --git a/src/setup/telemetry/setupSentry.ts b/src/setup/telemetry/setupSentry.ts index 8e4ab9420f6d..1e1abf3e8e98 100644 --- a/src/setup/telemetry/setupSentry.ts +++ b/src/setup/telemetry/setupSentry.ts @@ -57,13 +57,7 @@ function setupSentry(): void { tracesSampleRate: 1.0, enableAutoPerformanceTracing: true, enableUserInteractionTracing: true, - // TurboModuleContext adds CPU cost to every RNSentry call on iOS, see https://github.com/Expensify/App/pull/103900 - integrations: (defaultIntegrations) => { - // Read from the SDK, so the filter keeps working if Sentry renames the integration. Looked up here rather - // than at module load so importing this file does not call into the SDK. - const turboModuleContextIntegrationName = Sentry.turboModuleContextIntegration().name; - return [...defaultIntegrations.filter((integration) => integration.name !== turboModuleContextIntegrationName), ...integrations]; - }, + integrations, environment: CONFIG.ENVIRONMENT, release: `${pkg.name}@${semanticVersion}`, dist: buildNumber, @@ -94,17 +88,10 @@ function setupSentry(): void { // Native SDK is initialized early in Application.onCreate (Android) and AppDelegate (iOS) // via SentryNativeSDKManager so native code can report to Sentry before JS loads. autoInitializeNativeSdk: false, - // We set experimental lifecycle value to enable profiling for whole spans. Without this option profile often is dropped early and we haven't the whole picture - // See https://github.com/Expensify/App/issues/87489 - // eslint-disable-next-line @typescript-eslint/naming-convention - _experiments: { - profilingOptions: { - // When updating the profile sample rate, make sure it will not blow up our current limit in Sentry. - // This option replaces `profilesSampleRate` - profileSessionSampleRate: 0.5, - lifecycle: 'trace', - }, - }, + // Do not set `_experiments.profilingOptions` here on its own. The native SDK is started by SentryNativeSDKManager + // without profiling options, so session sampling is never configured, and the UI profiling integration the SDK + // adds for these options would start the iOS continuous profiler on every root span. Enabling UI profiling needs + // the same options in the native init as well. }); Sentry.setTag(CONST.TELEMETRY.TAGS.BUILD_TYPE, CONFIG.IS_HYBRID_APP ? CONST.TELEMETRY.BUILD_TYPE_HYBRID_APP : CONST.TELEMETRY.BUILD_TYPE_STANDALONE); diff --git a/tests/unit/setupSentryIntegrationOrderTest.ts b/tests/unit/setupSentryIntegrationOrderTest.ts index 12f9f1e1f751..5b194c48154b 100644 --- a/tests/unit/setupSentryIntegrationOrderTest.ts +++ b/tests/unit/setupSentryIntegrationOrderTest.ts @@ -22,15 +22,13 @@ jest.mock('@libs/telemetry/integrations', () => ({ jest.mock('@sentry/react-native', () => ({ init: jest.fn(), setTag: jest.fn(), - turboModuleContextIntegration: () => ({name: 'TurboModuleContext'}), })); -const sentryMock = jest.requireMock<{init: jest.Mock Integration[]}]>; setTag: jest.Mock}>('@sentry/react-native'); +const sentryMock = jest.requireMock<{init: jest.Mock; setTag: jest.Mock}>('@sentry/react-native'); -function initIntegrationNames(defaultIntegrations: Integration[] = []): string[] { +function initIntegrationNames(): string[] { setupSentry(); - const integrations = sentryMock.init.mock.calls.at(0)?.at(0)?.integrations; - return (integrations?.(defaultIntegrations) ?? []).map((integration) => integration.name); + return (sentryMock.init.mock.calls.at(0)?.at(0)?.integrations ?? []).map((integration) => integration.name); } describe('setupSentry integration order', () => { @@ -52,14 +50,4 @@ describe('setupSentry integration order', () => { it('drops the integrations that are stubbed out on the current platform', () => { expect(initIntegrationNames()).not.toContain(undefined); }); - - it('drops the default TurboModuleContext integration and keeps the other defaults', () => { - // Given the SDK defaults include TurboModuleContext - // When setupSentry builds its integration list - const names = initIntegrationNames([{name: 'TurboModuleContext'}, {name: 'NativeFrames'}]); - - // Then TurboModuleContext is gone and the other defaults stay - expect(names).not.toContain('TurboModuleContext'); - expect(names).toContain('NativeFrames'); - }); }); From d112bebb921ca9ca3bcb839924497b0c15b75114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Carekm213=E2=80=9D?= Date: Thu, 29 Oct 2026 17:10:16 +0100 Subject: [PATCH 2/2] Clarify when the UI profiling integration would start the iOS profiler --- src/setup/telemetry/setupSentry.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/setup/telemetry/setupSentry.ts b/src/setup/telemetry/setupSentry.ts index 1e1abf3e8e98..4cc3b3383c8a 100644 --- a/src/setup/telemetry/setupSentry.ts +++ b/src/setup/telemetry/setupSentry.ts @@ -90,8 +90,8 @@ function setupSentry(): void { autoInitializeNativeSdk: false, // Do not set `_experiments.profilingOptions` here on its own. The native SDK is started by SentryNativeSDKManager // without profiling options, so session sampling is never configured, and the UI profiling integration the SDK - // adds for these options would start the iOS continuous profiler on every root span. Enabling UI profiling needs - // the same options in the native init as well. + // adds for these options would start the iOS continuous profiler whenever a root span starts. Enabling UI + // profiling needs the same options in the native init as well. }); Sentry.setTag(CONST.TELEMETRY.TAGS.BUILD_TYPE, CONFIG.IS_HYBRID_APP ? CONST.TELEMETRY.BUILD_TYPE_HYBRID_APP : CONST.TELEMETRY.BUILD_TYPE_STANDALONE);