diff --git a/.github/workflows/buildandtest.yml b/.github/workflows/buildandtest.yml
index 0264ba07da..bd47d0c1d4 100644
--- a/.github/workflows/buildandtest.yml
+++ b/.github/workflows/buildandtest.yml
@@ -168,6 +168,87 @@ jobs:
${{ github.workspace }}/packages/core/*.tgz
${{ github.workspace }}/packages/expo-upload-sourcemaps/*.tgz
+ job_validate_tarball:
+ name: Validate tarball
+ runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
+ needs: [job_build, diff_check]
+ if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
+ timeout-minutes: 5
+ steps:
+ - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
+ with:
+ node-version: 18
+ - name: Download tarball artifacts
+ uses: actions/download-artifact@v8
+ with:
+ name: ${{ github.sha }}
+ path: artifacts
+ - name: Verify executable bits in tarball
+ run: |
+ set -e
+ TARBALL=$(find artifacts -name 'sentry-react-native-*.tgz' -print -quit)
+ [ -n "$TARBALL" ] || { echo "::error::tarball not found in artifacts/"; exit 1; }
+ echo "Tarball: $TARBALL"
+ FAILED=0
+ for entry in package/scripts/sentry-xcode.sh \
+ package/scripts/sentry-xcode-debug-files.sh \
+ package/scripts/collect-modules.sh \
+ package/scripts/eas-build-hook.js \
+ package/scripts/expo-upload-sourcemaps.js; do
+ mode=$(tar -tvf "$TARBALL" "$entry" 2>/dev/null | awk 'NR==1{print $1}')
+ if [ -z "$mode" ]; then
+ echo "::error::$entry missing from tarball"
+ FAILED=1
+ elif [ "$mode" != "-rwxr-xr-x" ]; then
+ echo "::error::$entry has mode $mode, expected -rwxr-xr-x"
+ FAILED=1
+ else
+ echo "OK: $entry ($mode)"
+ fi
+ done
+ exit $FAILED
+ - name: Install tarball into fresh project
+ run: |
+ set -e
+ CORE_TARBALL=$(find "$PWD/artifacts" -name 'sentry-react-native-*.tgz' -print -quit)
+ EXPO_TARBALL=$(find "$PWD/artifacts" -name 'sentry-expo-upload-sourcemaps-*.tgz' -print -quit)
+ [ -n "$CORE_TARBALL" ] || { echo "::error::core tarball not found"; exit 1; }
+ [ -n "$EXPO_TARBALL" ] || { echo "::error::expo-upload-sourcemaps tarball not found"; exit 1; }
+ mkdir -p /tmp/install-test
+ cd /tmp/install-test
+ npm init -y >/dev/null
+ # Install both local tarballs together so the @sentry/expo-upload-sourcemaps
+ # cross-dep is satisfied locally. On a release branch the bumped version
+ # is not on the npm registry yet (workspace:* resolves to the version
+ # we are about to publish), and a registry fetch would fail with ETARGET.
+ npm install --no-save "$EXPO_TARBALL" "$CORE_TARBALL"
+ # workspace:* spec must have been resolved by yarn pack (#6037 regression)
+ if grep -q 'workspace:' node_modules/@sentry/react-native/package.json; then
+ echo "::error::published package.json still contains unresolved workspace: spec"
+ grep workspace: node_modules/@sentry/react-native/package.json
+ exit 1
+ fi
+ # bin entries must be linked into node_modules/.bin and executable
+ for bin in sentry-eas-build-on-complete \
+ sentry-eas-build-on-error \
+ sentry-eas-build-on-success \
+ sentry-expo-upload-sourcemaps; do
+ if [ ! -x "node_modules/.bin/$bin" ]; then
+ echo "::error::node_modules/.bin/$bin missing or not executable"
+ ls -la node_modules/.bin/ | grep -i sentry || true
+ exit 1
+ fi
+ echo "OK: node_modules/.bin/$bin"
+ done
+ # sentry-xcode.sh is invoked directly by the iOS build phase, so it
+ # must remain executable after install (#6047)
+ if [ ! -x node_modules/@sentry/react-native/scripts/sentry-xcode.sh ]; then
+ echo "::error::scripts/sentry-xcode.sh is not executable after install"
+ ls -la node_modules/@sentry/react-native/scripts/sentry-xcode.sh
+ exit 1
+ fi
+ echo "OK: scripts/sentry-xcode.sh executable"
+
job_type_check:
name: Type Check Typescript 3.8
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 282b510ba4..b3513bc460 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,13 @@
- [changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md#10500)
- [diff](https://github.com/getsentry/sentry-javascript/compare/10.49.0...10.50.0)
+## 8.9.2
+
+### Fixes
+
+- Restore executable bit on shell scripts in the published tarball, fixing `Permission denied` on iOS build ([#6049](https://github.com/getsentry/sentry-react-native/pull/6049))
+- Restore EAS build hook bin scripts (`sentry-eas-build-on-{success,error,complete}`) missing from the published tarball ([#6049](https://github.com/getsentry/sentry-react-native/pull/6049))
+
## 8.9.1
### Features
diff --git a/SDK-VERSIONS.md b/SDK-VERSIONS.md
index 5af4216820..848704bd42 100644
--- a/SDK-VERSIONS.md
+++ b/SDK-VERSIONS.md
@@ -12,6 +12,7 @@ To manually update the table with the current version, run `./scripts/update-sdk
| React Native SDK | Android SDK | Cocoa SDK | JavaScript SDK |
| ---------------- | ----------- | --------- | -------------- |
+| [8.9.2](https://github.com/getsentry/sentry-react-native/releases/tag/8.9.2) | [8.40.0](https://github.com/getsentry/sentry-java/releases/tag/8.40.0) | [9.11.0](https://github.com/getsentry/sentry-cocoa/releases/tag/9.11.0) | [10.49.0](https://github.com/getsentry/sentry-javascript/releases/tag/10.49.0) |
| [8.9.1](https://github.com/getsentry/sentry-react-native/releases/tag/8.9.1) | [8.40.0](https://github.com/getsentry/sentry-java/releases/tag/8.40.0) | [9.11.0](https://github.com/getsentry/sentry-cocoa/releases/tag/9.11.0) | [10.49.0](https://github.com/getsentry/sentry-javascript/releases/tag/10.49.0) |
| [8.8.0](https://github.com/getsentry/sentry-react-native/releases/tag/8.8.0) | [8.38.0](https://github.com/getsentry/sentry-java/releases/tag/8.38.0) | [9.10.0](https://github.com/getsentry/sentry-cocoa/releases/tag/9.10.0) | [10.48.0](https://github.com/getsentry/sentry-javascript/releases/tag/10.48.0) |
| [8.7.0](https://github.com/getsentry/sentry-react-native/releases/tag/8.7.0) | [8.37.1](https://github.com/getsentry/sentry-java/releases/tag/8.37.1) | [9.8.0](https://github.com/getsentry/sentry-cocoa/releases/tag/9.8.0) | [10.47.0](https://github.com/getsentry/sentry-javascript/releases/tag/10.47.0) |
diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json
index c01d7dabd9..adc042a3af 100644
--- a/dev-packages/e2e-tests/package.json
+++ b/dev-packages/e2e-tests/package.json
@@ -1,6 +1,6 @@
{
"name": "sentry-react-native-e2e-tests",
- "version": "8.9.1",
+ "version": "8.9.2",
"private": true,
"description": "Sentry React Native End to End Tests Library",
"main": "dist/index.js",
@@ -14,7 +14,7 @@
"@babel/preset-env": "^7.25.3",
"@babel/preset-typescript": "^7.18.6",
"@sentry/core": "10.50.0",
- "@sentry/react-native": "8.9.1",
+ "@sentry/react-native": "8.9.2",
"@types/node": "^20.9.3",
"@types/react": "^18.2.64",
"appium": "3.2.2",
diff --git a/dev-packages/type-check/package.json b/dev-packages/type-check/package.json
index d2d028e601..2652f5197f 100644
--- a/dev-packages/type-check/package.json
+++ b/dev-packages/type-check/package.json
@@ -1,7 +1,7 @@
{
"name": "sentry-react-native-type-check",
"private": true,
- "version": "8.9.1",
+ "version": "8.9.2",
"scripts": {
"type-check": "./run-type-check.sh"
}
diff --git a/dev-packages/utils/package.json b/dev-packages/utils/package.json
index d56696c423..5b1585eb02 100644
--- a/dev-packages/utils/package.json
+++ b/dev-packages/utils/package.json
@@ -1,6 +1,6 @@
{
"name": "sentry-react-native-samples-utils",
- "version": "8.9.1",
+ "version": "8.9.2",
"description": "Internal Samples Utils",
"main": "index.js",
"license": "MIT",
diff --git a/lerna.json b/lerna.json
index a4dbc87ca2..03959ed877 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,6 +1,6 @@
{
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
- "version": "8.9.1",
+ "version": "8.9.2",
"packages": [
"packages/*",
"dev-packages/*",
diff --git a/packages/core/.npmignore b/packages/core/.npmignore
index 49af5a37e2..a8241b93f9 100644
--- a/packages/core/.npmignore
+++ b/packages/core/.npmignore
@@ -27,6 +27,7 @@
!scripts/sentry-xcode-debug-files.sh
!scripts/sentry_utils.rb
!scripts/expo-upload-sourcemaps.js
+!scripts/eas-build-hook.js
# Metro
!/metro.js
diff --git a/packages/core/android/src/main/java/io/sentry/react/RNSentryVersion.java b/packages/core/android/src/main/java/io/sentry/react/RNSentryVersion.java
index f97c096ed8..45d80a1f21 100644
--- a/packages/core/android/src/main/java/io/sentry/react/RNSentryVersion.java
+++ b/packages/core/android/src/main/java/io/sentry/react/RNSentryVersion.java
@@ -2,7 +2,7 @@
class RNSentryVersion {
static final String REACT_NATIVE_SDK_PACKAGE_NAME = "npm:@sentry/react-native";
- static final String REACT_NATIVE_SDK_PACKAGE_VERSION = "8.9.1";
+ static final String REACT_NATIVE_SDK_PACKAGE_VERSION = "8.9.2";
static final String NATIVE_SDK_NAME = "sentry.native.android.react-native";
static final String ANDROID_SDK_NAME = "sentry.java.android.react-native";
static final String REACT_NATIVE_SDK_NAME = "sentry.javascript.react-native";
diff --git a/packages/core/ios/RNSentryVersion.m b/packages/core/ios/RNSentryVersion.m
index 10982b744a..297aad9631 100644
--- a/packages/core/ios/RNSentryVersion.m
+++ b/packages/core/ios/RNSentryVersion.m
@@ -3,4 +3,4 @@
NSString *const NATIVE_SDK_NAME = @"sentry.cocoa.react-native";
NSString *const REACT_NATIVE_SDK_NAME = @"sentry.javascript.react-native";
NSString *const REACT_NATIVE_SDK_PACKAGE_NAME = @"npm:@sentry/react-native";
-NSString *const REACT_NATIVE_SDK_PACKAGE_VERSION = @"8.9.1";
+NSString *const REACT_NATIVE_SDK_PACKAGE_VERSION = @"8.9.2";
diff --git a/packages/core/package.json b/packages/core/package.json
index d4126e4e68..5b57c5f50f 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -2,7 +2,7 @@
"name": "@sentry/react-native",
"homepage": "https://github.com/getsentry/sentry-react-native",
"repository": "https://github.com/getsentry/sentry-react-native",
- "version": "8.9.1",
+ "version": "8.9.2",
"description": "Official Sentry SDK for react-native",
"typings": "dist/js/index.d.ts",
"types": "dist/js/index.d.ts",
diff --git a/packages/core/scripts/build-tarball.sh b/packages/core/scripts/build-tarball.sh
index 9be5f160ad..4af6809b41 100755
--- a/packages/core/scripts/build-tarball.sh
+++ b/packages/core/scripts/build-tarball.sh
@@ -14,4 +14,16 @@ cp ../../README.md README.md
# rewritten to concrete versions in the published tarball. npm pack leaves
# the spec as `workspace:*`, which consumers cannot resolve.
VERSION=$(node -p "require('./package.json').version")
-yarn pack --out "sentry-react-native-${VERSION}.tgz"
+TARBALL="sentry-react-native-${VERSION}.tgz"
+yarn pack --out "$TARBALL"
+
+# yarn pack stores non-bin files with mode 0644, which breaks the Xcode build
+# phase that invokes scripts/sentry-xcode.sh directly (Permission denied).
+# Re-pack with +x on shell scripts and bin entrypoints.
+TMP_DIR=$(mktemp -d)
+trap 'rm -rf "$TMP_DIR"' EXIT
+tar -xzf "$TARBALL" -C "$TMP_DIR"
+chmod 0755 "$TMP_DIR"/package/scripts/*.sh \
+ "$TMP_DIR"/package/scripts/eas-build-hook.js \
+ "$TMP_DIR"/package/scripts/expo-upload-sourcemaps.js
+tar -czf "$TARBALL" -C "$TMP_DIR" package
diff --git a/packages/core/src/js/version.ts b/packages/core/src/js/version.ts
index f08b05ed7d..db90904db1 100644
--- a/packages/core/src/js/version.ts
+++ b/packages/core/src/js/version.ts
@@ -1,3 +1,3 @@
export const SDK_PACKAGE_NAME = 'npm:@sentry/react-native';
export const SDK_NAME = 'sentry.javascript.react-native';
-export const SDK_VERSION = '8.9.1';
+export const SDK_VERSION = '8.9.2';
diff --git a/packages/expo-upload-sourcemaps/package.json b/packages/expo-upload-sourcemaps/package.json
index bbc3d74c25..faf53acad4 100644
--- a/packages/expo-upload-sourcemaps/package.json
+++ b/packages/expo-upload-sourcemaps/package.json
@@ -1,6 +1,6 @@
{
"name": "@sentry/expo-upload-sourcemaps",
- "version": "8.9.1",
+ "version": "8.9.2",
"description": "CLI to upload bundles and source maps from Expo builds to Sentry.",
"homepage": "https://github.com/getsentry/sentry-react-native/tree/main/packages/expo-upload-sourcemaps",
"repository": {
diff --git a/performance-tests/TestAppPlain/package.json b/performance-tests/TestAppPlain/package.json
index c6cf2bca0d..b2416501ee 100644
--- a/performance-tests/TestAppPlain/package.json
+++ b/performance-tests/TestAppPlain/package.json
@@ -1,6 +1,6 @@
{
"name": "TestAppPlain",
- "version": "8.9.1",
+ "version": "8.9.2",
"private": true,
"scripts": {
"android": "react-native run-android",
diff --git a/performance-tests/TestAppSentry/package.json b/performance-tests/TestAppSentry/package.json
index 4e1184d59a..4b6d9749f8 100644
--- a/performance-tests/TestAppSentry/package.json
+++ b/performance-tests/TestAppSentry/package.json
@@ -1,6 +1,6 @@
{
"name": "TestAppSentry",
- "version": "8.9.1",
+ "version": "8.9.2",
"private": true,
"scripts": {
"android": "react-native run-android",
@@ -9,7 +9,7 @@
},
"dependencies": {
"@react-native/new-app-screen": "0.80.2",
- "@sentry/react-native": "8.9.1",
+ "@sentry/react-native": "8.9.2",
"react": "19.1.0",
"react-native": "0.80.2"
},
diff --git a/samples/expo/app.json b/samples/expo/app.json
index cb757b4eb7..4d7f4d8f19 100644
--- a/samples/expo/app.json
+++ b/samples/expo/app.json
@@ -4,7 +4,7 @@
"slug": "sentry-react-native-expo-sample",
"jsEngine": "hermes",
"scheme": "sentry-expo-sample",
- "version": "8.9.1",
+ "version": "8.9.2",
"orientation": "portrait",
"icon": "./assets/icon.png",
"userInterfaceStyle": "light",
@@ -19,7 +19,7 @@
"ios": {
"supportsTablet": true,
"bundleIdentifier": "io.sentry.expo.sample",
- "buildNumber": "82"
+ "buildNumber": "83"
},
"android": {
"adaptiveIcon": {
@@ -27,7 +27,7 @@
"backgroundColor": "#ffffff"
},
"package": "io.sentry.expo.sample",
- "versionCode": 82
+ "versionCode": 83
},
"web": {
"bundler": "metro",
diff --git a/samples/expo/package.json b/samples/expo/package.json
index 05cb1f24b7..b14fec0b3f 100644
--- a/samples/expo/package.json
+++ b/samples/expo/package.json
@@ -1,6 +1,6 @@
{
"name": "sentry-react-native-expo-sample",
- "version": "8.9.1",
+ "version": "8.9.2",
"main": "expo-router/entry",
"scripts": {
"start": "expo start",
@@ -24,7 +24,7 @@
},
"dependencies": {
"@sentry/core": "10.50.0",
- "@sentry/react-native": "8.9.1",
+ "@sentry/react-native": "8.9.2",
"@types/react": "~19.2.10",
"expo": "^55.0.0",
"expo-constants": "~55.0.7",
diff --git a/samples/react-native-macos/package.json b/samples/react-native-macos/package.json
index 85d9506750..4c3f04386e 100644
--- a/samples/react-native-macos/package.json
+++ b/samples/react-native-macos/package.json
@@ -1,6 +1,6 @@
{
"name": "sentry-react-native-macos-sample",
- "version": "8.9.1",
+ "version": "8.9.2",
"private": true,
"scripts": {
"start": "react-native start --experimental-debugger",
@@ -18,7 +18,7 @@
"@react-navigation/stack": "^6.3.20",
"@sentry/core": "10.50.0",
"@sentry/react": "10.50.0",
- "@sentry/react-native": "8.9.1",
+ "@sentry/react-native": "8.9.2",
"delay": "^6.0.0",
"react": "18.2.0",
"react-native": "0.73.9",
diff --git a/samples/react-native/android/app/build.gradle b/samples/react-native/android/app/build.gradle
index d5e1afbcf8..009aea325a 100644
--- a/samples/react-native/android/app/build.gradle
+++ b/samples/react-native/android/app/build.gradle
@@ -130,8 +130,8 @@ android {
applicationId "io.sentry.reactnative.sample"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 84
- versionName "8.9.1"
+ versionCode 85
+ versionName "8.9.2"
buildConfigField "boolean", "SENTRY_DISABLE_NATIVE_START", System.getenv('SENTRY_DISABLE_NATIVE_START') ?: String.valueOf(sentryDisableNativeStart)
testBuildType System.getProperty('testBuildType', 'debug')
diff --git a/samples/react-native/ios/sentryreactnativesample/Info.plist b/samples/react-native/ios/sentryreactnativesample/Info.plist
index 29d1e656d9..726e26a8f1 100644
--- a/samples/react-native/ios/sentryreactnativesample/Info.plist
+++ b/samples/react-native/ios/sentryreactnativesample/Info.plist
@@ -19,11 +19,11 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 8.9.1
+ 8.9.2
CFBundleSignature
????
CFBundleVersion
- 89
+ 90
LSRequiresIPhoneOS
NSAppTransportSecurity
diff --git a/samples/react-native/ios/sentryreactnativesampleTests/Info.plist b/samples/react-native/ios/sentryreactnativesampleTests/Info.plist
index 0ef8d8c69f..777ed54b82 100644
--- a/samples/react-native/ios/sentryreactnativesampleTests/Info.plist
+++ b/samples/react-native/ios/sentryreactnativesampleTests/Info.plist
@@ -15,10 +15,10 @@
CFBundlePackageType
BNDL
CFBundleShortVersionString
- 8.9.1
+ 8.9.2
CFBundleSignature
????
CFBundleVersion
- 89
+ 90
diff --git a/samples/react-native/package.json b/samples/react-native/package.json
index 56b7bba43f..186f621c89 100644
--- a/samples/react-native/package.json
+++ b/samples/react-native/package.json
@@ -1,6 +1,6 @@
{
"name": "sentry-react-native-sample",
- "version": "8.9.1",
+ "version": "8.9.2",
"private": true,
"scripts": {
"android": "react-native run-android",
@@ -49,7 +49,7 @@
"@reduxjs/toolkit": "^2.8.2",
"@sentry/core": "10.50.0",
"@sentry/react": "10.50.0",
- "@sentry/react-native": "8.9.1",
+ "@sentry/react-native": "8.9.2",
"@shopify/flash-list": "^2.0.2",
"delay": "^6.0.0",
"react": "19.2.3",
diff --git a/yarn.lock b/yarn.lock
index f45e68542f..6bfa218198 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -11232,7 +11232,7 @@ __metadata:
languageName: node
linkType: hard
-"@sentry/react-native@8.9.1, @sentry/react-native@workspace:packages/core":
+"@sentry/react-native@8.9.2, @sentry/react-native@workspace:packages/core":
version: 0.0.0-use.local
resolution: "@sentry/react-native@workspace:packages/core"
dependencies:
@@ -12526,7 +12526,7 @@ __metadata:
"@react-native/metro-config": 0.80.2
"@react-native/new-app-screen": 0.80.2
"@react-native/typescript-config": 0.80.2
- "@sentry/react-native": 8.9.1
+ "@sentry/react-native": 8.9.2
"@types/jest": ^29.5.13
"@types/react": ^19.1.0
"@types/react-test-renderer": ^19.1.0
@@ -18325,8 +18325,8 @@ __metadata:
linkType: hard
"fast-xml-parser@npm:^5.7.0":
- version: 5.7.1
- resolution: "fast-xml-parser@npm:5.7.1"
+ version: 5.7.2
+ resolution: "fast-xml-parser@npm:5.7.2"
dependencies:
"@nodable/entities": ^2.1.0
fast-xml-builder: ^1.1.5
@@ -18334,7 +18334,7 @@ __metadata:
strnum: ^2.2.3
bin:
fxparser: src/cli/cli.js
- checksum: 863ed69cf556a895231a80ed0091e12671f0d45af336169db55b7cc81c15cd767324469f392df68c5242e80bc416a69394fe69e6287bcb4ef1507875c7b0df84
+ checksum: 6ef5c57be6234de514e55d834b0711358aa205e7d40e2ef975843f493efe39c4d00f869e94eb8b48fecb4f67694fa442b798a991b53a28f173dcbc929f55dea4
languageName: node
linkType: hard
@@ -30146,7 +30146,7 @@ __metadata:
"@babel/preset-env": ^7.25.3
"@babel/preset-typescript": ^7.18.6
"@sentry/core": 10.50.0
- "@sentry/react-native": 8.9.1
+ "@sentry/react-native": 8.9.2
"@types/node": ^20.9.3
"@types/react": ^18.2.64
appium: 3.2.2
@@ -30176,7 +30176,7 @@ __metadata:
"@babel/preset-env": ^7.26.0
"@sentry/babel-plugin-component-annotate": 5.2.0
"@sentry/core": 10.50.0
- "@sentry/react-native": 8.9.1
+ "@sentry/react-native": 8.9.2
"@types/node": 20.10.4
"@types/react": ~19.2.10
expo: ^55.0.0
@@ -30215,7 +30215,7 @@ __metadata:
"@react-navigation/stack": ^6.3.20
"@sentry/core": 10.50.0
"@sentry/react": 10.50.0
- "@sentry/react-native": 8.9.1
+ "@sentry/react-native": 8.9.2
"@types/react": ^18.2.65
"@types/react-native-vector-icons": ^6.4.18
babel-plugin-module-resolver: ^5.0.0
@@ -30261,7 +30261,7 @@ __metadata:
"@sentry/babel-plugin-component-annotate": 5.2.0
"@sentry/core": 10.50.0
"@sentry/react": 10.50.0
- "@sentry/react-native": 8.9.1
+ "@sentry/react-native": 8.9.2
"@shopify/flash-list": ^2.0.2
"@testing-library/react-native": ^13.2.2
"@types/jest": ^29.5.14