From 42ceea3e1f29898d8b47cdfb79024078cea8f187 Mon Sep 17 00:00:00 2001 From: engineer Date: Thu, 16 Jul 2026 15:51:31 -0700 Subject: [PATCH] fix(sentry): repair Android source-map upload (debug IDs + release/dist match) Releases 0.4.3-0.4.7 uploaded zero source-map files to Sentry, leaving every JS frame unsymbolicated (app:///index.android.bundle:1). Root-caused two independent bugs: 1. No metro.config.js existed, so Metro never ran Sentry's debug-ID injection. Without an embedded debug ID, sentry.gradle's upload task falls back to matching source maps to events by release/dist string alone (see has-sourcemap-debugid.js check in sentry.gradle) - and that fallback was broken (see #2). Added metro.config.js wrapping Expo's default config with getSentryExpoConfig from @sentry/react-native/metro, the officially documented path for Expo + debug-ID symbolication. The installed @sentry/react-native@6.14.0 could not actually bundle with this enabled: its metro integration does a hard `require("metro/src/lib/ countLines")`, a deep path metro 0.83.x (bundled by Expo SDK 54) no longer exposes via its package.json `exports` map, crashing every build. Bumped to ~6.22.0 (package.json:18), which vendors countLines and adds metro/private/* fallbacks for other deep metro imports. Verified via a real `npx expo export:embed` run: bundle and source map now share a matching `debugId`. 2. sentry.gradle's default release/dist for the upload is `${applicationId}@${versionName}+${versionCode}` (computed from android/app/build.gradle), which never matched what Sentry.init() reports at runtime (`opencode-mobile@${app.json version}`, src/lib/sentry.ts:33-34). Every source map was therefore filed under a release Sentry never queries. Added a "Set Sentry release identifiers" step to build.yml, publish-play-store.yml, and publish-fdroid.yml that exports SENTRY_RELEASE/SENTRY_DIST from app.json's version before the Gradle build step, forcing an exact match. Also filled in organization/project on the `@sentry/react-native/expo` plugin in app.json (previously a bare string, which only warned "Missing config for organization, project" and relied on env-var fallback) so android/sentry.properties is generated deterministically instead of by accident/history. Verified locally (no push - GitHub is down, consolidating to local main): - npx expo export:embed (real Metro bundle) succeeds and embeds a matching debugId in both index.android.bundle and its .map - npm run typecheck: clean - npm test: 81/81 passing - Full ./gradlew Android build not verified: this machine has no ANDROID_HOME/SDK and a JDK/Gradle-wrapper version mismatch unrelated to this change; CI's Java 17 + Android SDK toolchain is unaffected. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01NJKAQ6HAikWGQK7PGZ5Y4E --- .github/workflows/build.yml | 14 ++ .github/workflows/publish-fdroid.yml | 14 ++ .github/workflows/publish-play-store.yml | 15 ++ app.json | 8 +- metro.config.js | 22 +++ package-lock.json | 198 ++++++++++++----------- package.json | 2 +- 7 files changed, 174 insertions(+), 99 deletions(-) create mode 100644 metro.config.js diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bc18846..ce1b180 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -66,6 +66,20 @@ jobs: - name: Install dependencies run: npm install --legacy-peer-deps + - name: Set Sentry release identifiers + # sentry.gradle (applied from android/app/build.gradle) defaults the + # upload's --release/--dist to `${applicationId}@${versionName}+${versionCode}`, + # which does NOT match the release/dist Sentry.init() reports at runtime + # (`opencode-mobile@${app.json version}`, see src/lib/sentry.ts). That + # mismatch made every uploaded source map land under a release Sentry + # never looks up, so symbolication silently failed. Pin the Gradle-side + # values to exactly what the app reports. + run: | + VERSION=$(node -p "require('./app.json').expo.version") + echo "SENTRY_RELEASE=opencode-mobile@${VERSION}" >> "$GITHUB_ENV" + echo "SENTRY_DIST=${VERSION}" >> "$GITHUB_ENV" + echo "Sentry release=opencode-mobile@${VERSION} dist=${VERSION}" + - name: Expo prebuild run: npx expo prebuild --platform android --no-install diff --git a/.github/workflows/publish-fdroid.yml b/.github/workflows/publish-fdroid.yml index 5f0ef42..763961b 100644 --- a/.github/workflows/publish-fdroid.yml +++ b/.github/workflows/publish-fdroid.yml @@ -45,6 +45,20 @@ jobs: - name: Install dependencies run: npm install --legacy-peer-deps + - name: Set Sentry release identifiers + # sentry.gradle (applied from android/app/build.gradle) defaults the + # upload's --release/--dist to `${applicationId}@${versionName}+${versionCode}`, + # which does NOT match the release/dist Sentry.init() reports at runtime + # (`opencode-mobile@${app.json version}`, see src/lib/sentry.ts). That + # mismatch made every uploaded source map land under a release Sentry + # never looks up, so symbolication silently failed. Pin the Gradle-side + # values to exactly what the app reports. + run: | + VERSION=$(node -p "require('./app.json').expo.version") + echo "SENTRY_RELEASE=opencode-mobile@${VERSION}" >> "$GITHUB_ENV" + echo "SENTRY_DIST=${VERSION}" >> "$GITHUB_ENV" + echo "Sentry release=opencode-mobile@${VERSION} dist=${VERSION}" + - name: Expo prebuild run: npx expo prebuild --platform android --no-install diff --git a/.github/workflows/publish-play-store.yml b/.github/workflows/publish-play-store.yml index 8b03528..90f7ce5 100644 --- a/.github/workflows/publish-play-store.yml +++ b/.github/workflows/publish-play-store.yml @@ -84,6 +84,21 @@ jobs: node -e "const f='app.json';const j=require('./'+f);j.expo.android=j.expo.android||{};j.expo.android.versionCode=${{ github.run_number }}+100;require('fs').writeFileSync(f,JSON.stringify(j,null,2)+'\n')" echo "versionCode now: $(node -p "require('./app.json').expo.android.versionCode")" + - name: Set Sentry release identifiers + # sentry.gradle (applied from android/app/build.gradle) defaults the + # upload's --release/--dist to `${applicationId}@${versionName}+${versionCode}`, + # which does NOT match the release/dist Sentry.init() reports at runtime + # (`opencode-mobile@${app.json version}`, see src/lib/sentry.ts). That + # mismatch made every uploaded source map land under a release Sentry + # never looks up, so symbolication silently failed. Pin the Gradle-side + # values to exactly what the app reports. (Only expo.version matters + # here, not the android.versionCode bumped above.) + run: | + VERSION=$(node -p "require('./app.json').expo.version") + echo "SENTRY_RELEASE=opencode-mobile@${VERSION}" >> "$GITHUB_ENV" + echo "SENTRY_DIST=${VERSION}" >> "$GITHUB_ENV" + echo "Sentry release=opencode-mobile@${VERSION} dist=${VERSION}" + - name: Purge stale generated sources # The Android build cache (restore-keys prefix fallback) can restore a # generated autolinking tree from a previous package id. Gradle then diff --git a/app.json b/app.json index f66fb07..b1c7c0b 100644 --- a/app.json +++ b/app.json @@ -50,7 +50,13 @@ "expo-router", "expo-secure-store", "expo-local-authentication", - "@sentry/react-native/expo", + [ + "@sentry/react-native/expo", + { + "organization": "vibetechnologies", + "project": "opencode-mobile" + } + ], [ "expo-notifications", { diff --git a/metro.config.js b/metro.config.js new file mode 100644 index 0000000..ba13333 --- /dev/null +++ b/metro.config.js @@ -0,0 +1,22 @@ +// Metro bundler config. +// +// Wraps Expo's default Metro config with Sentry's config so the JS bundle +// gets a Debug ID embedded at build time (see +// https://docs.sentry.io/platforms/react-native/manual-setup/metro/). +// +// Why this matters: without this, Metro/Hermes produce bundles + source maps +// with NO debug ID. `android/sentry.gradle` (applied from +// android/app/build.gradle) then falls back to associating the uploaded +// source map with Sentry purely by `--release`/`--dist` string matching +// (see its `has-sourcemap-debugid.js` check). That legacy path is fragile — +// it silently breaks if the release/dist Gradle computes for the upload +// ever drifts from the release/dist the app reports at runtime via +// `Sentry.init()` (src/lib/sentry.ts). Debug ID matching sidesteps that +// entire class of bug: the bundle and its source map are linked by an +// embedded ID, independent of any release/dist string. +const { getSentryExpoConfig } = require("@sentry/react-native/metro") + +/** @type {import('expo/metro-config').MetroConfig} */ +const config = getSentryExpoConfig(__dirname) + +module.exports = config diff --git a/package-lock.json b/package-lock.json index 5d580ab..064dea1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,17 @@ { "name": "@opencode-ai/mobile", - "version": "0.4.3", + "version": "0.4.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@opencode-ai/mobile", - "version": "0.4.3", + "version": "0.4.7", "dependencies": { "@expo/vector-icons": "^15.0.3", "@gorhom/bottom-sheet": "5.2.8", "@react-navigation/native": "^7.0.14", - "@sentry/react-native": "~6.14.0", + "@sentry/react-native": "~6.22.0", "@tanstack/react-query": "^5.62.0", "expo": "^54.0.0", "expo-clipboard": "8.0.8", @@ -2786,84 +2786,84 @@ } }, "node_modules/@sentry-internal/browser-utils": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.54.0.tgz", - "integrity": "sha512-DKWCqb4YQosKn6aD45fhKyzhkdG7N6goGFDeyTaJFREJDFVDXiNDsYZu30nJ6BxMM7uQIaARhPAC5BXfoED3pQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.55.0.tgz", + "integrity": "sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==", "license": "MIT", "dependencies": { - "@sentry/core": "8.54.0" + "@sentry/core": "8.55.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/feedback": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.54.0.tgz", - "integrity": "sha512-nQqRacOXoElpE0L0ADxUUII0I3A94niqG9Z4Fmsw6057QvyrV/LvTiMQBop6r5qLjwMqK+T33iR4/NQI5RhsXQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.55.0.tgz", + "integrity": "sha512-cP3BD/Q6pquVQ+YL+rwCnorKuTXiS9KXW8HNKu4nmmBAyf7urjs+F6Hr1k9MXP5yQ8W3yK7jRWd09Yu6DHWOiw==", "license": "MIT", "dependencies": { - "@sentry/core": "8.54.0" + "@sentry/core": "8.55.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.54.0.tgz", - "integrity": "sha512-8xuBe06IaYIGJec53wUC12tY2q4z2Z0RPS2s1sLtbA00EvK1YDGuXp96IDD+HB9mnDMrQ/jW5f97g9TvPsPQUg==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.55.0.tgz", + "integrity": "sha512-roCDEGkORwolxBn8xAKedybY+Jlefq3xYmgN2fr3BTnsXjSYOPC7D1/mYqINBat99nDtvgFvNfRcZPiwwZ1hSw==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.54.0", - "@sentry/core": "8.54.0" + "@sentry-internal/browser-utils": "8.55.0", + "@sentry/core": "8.55.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.54.0.tgz", - "integrity": "sha512-K/On3OAUBeq/TV2n+1EvObKC+WMV9npVXpVyJqCCyn8HYMm8FUGzuxeajzm0mlW4wDTPCQor6mK9/IgOquUzCw==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.55.0.tgz", + "integrity": "sha512-nIkfgRWk1091zHdu4NbocQsxZF1rv1f7bbp3tTIlZYbrH62XVZosx5iHAuZG0Zc48AETLE7K4AX9VGjvQj8i9w==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "8.54.0", - "@sentry/core": "8.54.0" + "@sentry-internal/replay": "8.55.0", + "@sentry/core": "8.55.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-3.4.0.tgz", - "integrity": "sha512-tSzfc3aE7m0PM0Aj7HBDet5llH9AB9oc+tBQ8AvOqUSnWodLrNCuWeQszJ7mIBovD3figgCU3h0cvI6U5cDtsg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.2.0.tgz", + "integrity": "sha512-GFpS3REqaHuyX4LCNqlneAQZIKyHb5ePiI1802n0fhtYjk68I1DTQ3PnbzYi50od/vAsTQVCknaS5F6tidNqTQ==", "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/@sentry/browser": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.54.0.tgz", - "integrity": "sha512-BgUtvxFHin0fS0CmJVKTLXXZcke0Av729IVfi+2fJ4COX8HO7/HAP02RKaSQGmL2HmvWYTfNZ7529AnUtrM4Rg==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.55.0.tgz", + "integrity": "sha512-1A31mCEWCjaMxJt6qGUK+aDnLDcK6AwLAZnqpSchNysGni1pSn1RWSmk9TBF8qyTds5FH8B31H480uxMPUJ7Cw==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.54.0", - "@sentry-internal/feedback": "8.54.0", - "@sentry-internal/replay": "8.54.0", - "@sentry-internal/replay-canvas": "8.54.0", - "@sentry/core": "8.54.0" + "@sentry-internal/browser-utils": "8.55.0", + "@sentry-internal/feedback": "8.55.0", + "@sentry-internal/replay": "8.55.0", + "@sentry-internal/replay-canvas": "8.55.0", + "@sentry/core": "8.55.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/cli": { - "version": "2.45.0", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.45.0.tgz", - "integrity": "sha512-4sWu7zgzgHAjIxIjXUA/66qgeEf5ZOlloO+/JaGD5qXNSW0G7KMTR6iYjReNKMgdBCTH6bUUt9qiuA+Ex9Masw==", + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.53.0.tgz", + "integrity": "sha512-n2ZNb+5Z6AZKQSI0SusQ7ZzFL637mfw3Xh4C3PEyVSn9LiF683fX0TTq8OeGmNZQS4maYfS95IFD+XpydU0dEA==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { @@ -2880,20 +2880,20 @@ "node": ">= 10" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.45.0", - "@sentry/cli-linux-arm": "2.45.0", - "@sentry/cli-linux-arm64": "2.45.0", - "@sentry/cli-linux-i686": "2.45.0", - "@sentry/cli-linux-x64": "2.45.0", - "@sentry/cli-win32-arm64": "2.45.0", - "@sentry/cli-win32-i686": "2.45.0", - "@sentry/cli-win32-x64": "2.45.0" + "@sentry/cli-darwin": "2.53.0", + "@sentry/cli-linux-arm": "2.53.0", + "@sentry/cli-linux-arm64": "2.53.0", + "@sentry/cli-linux-i686": "2.53.0", + "@sentry/cli-linux-x64": "2.53.0", + "@sentry/cli-win32-arm64": "2.53.0", + "@sentry/cli-win32-i686": "2.53.0", + "@sentry/cli-win32-x64": "2.53.0" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.45.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.45.0.tgz", - "integrity": "sha512-p4Uxfv/L2fQdP3/wYnKVVz9gzZJf/1Xp9D+6raax/3Bu5y87yHYUqcdt98y/VAXQD4ofp2QgmhGUVPofvQNZmg==", + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.53.0.tgz", + "integrity": "sha512-NNPfpILMwKgpHiyJubHHuauMKltkrgLQ5tvMdxNpxY60jBNdo5VJtpESp4XmXlnidzV4j1z61V4ozU6ttDgt5Q==", "license": "BSD-3-Clause", "optional": true, "os": [ @@ -2904,9 +2904,9 @@ } }, "node_modules/@sentry/cli-linux-arm": { - "version": "2.45.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.45.0.tgz", - "integrity": "sha512-6sEskFLlFKJ+e0MOYgIclBTUX5jYMyYhHIxXahEkI/4vx6JO0uvpyRAkUJRpJkRh/lPog0FM+tbP3so+VxB2qQ==", + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.53.0.tgz", + "integrity": "sha512-NdRzQ15Ht83qG0/Lyu11ciy/Hu/oXbbtJUgwzACc7bWvHQA8xEwTsehWexqn1529Kfc5EjuZ0Wmj3MHmp+jOWw==", "cpu": [ "arm" ], @@ -2914,16 +2914,17 @@ "optional": true, "os": [ "linux", - "freebsd" + "freebsd", + "android" ], "engines": { "node": ">=10" } }, "node_modules/@sentry/cli-linux-arm64": { - "version": "2.45.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.45.0.tgz", - "integrity": "sha512-gUcLoEjzg7AIc4QQGEZwRHri+EHf3Gcms9zAR1VHiNF3/C/jL4WeDPJF2YiWAQt6EtH84tHiyhw1Ab/R8XFClg==", + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.53.0.tgz", + "integrity": "sha512-xY/CZ1dVazsSCvTXzKpAgXaRqfljVfdrFaYZRUaRPf1ZJRGa3dcrivoOhSIeG/p5NdYtMvslMPY9Gm2MT0M83A==", "cpu": [ "arm64" ], @@ -2931,16 +2932,17 @@ "optional": true, "os": [ "linux", - "freebsd" + "freebsd", + "android" ], "engines": { "node": ">=10" } }, "node_modules/@sentry/cli-linux-i686": { - "version": "2.45.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.45.0.tgz", - "integrity": "sha512-VmmOaEAzSW23YdGNdy/+oQjCNAMY+HmOGA77A25/ep/9AV7PQB6FI7xO5Y1PVvlkxZFJ23e373njSsEeg4uDZw==", + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.53.0.tgz", + "integrity": "sha512-0REmBibGAB4jtqt9S6JEsFF4QybzcXHPcHtJjgMi5T0ueh952uG9wLzjSxQErCsxTKF+fL8oG0Oz5yKBuCwCCQ==", "cpu": [ "x86", "ia32" @@ -2949,16 +2951,17 @@ "optional": true, "os": [ "linux", - "freebsd" + "freebsd", + "android" ], "engines": { "node": ">=10" } }, "node_modules/@sentry/cli-linux-x64": { - "version": "2.45.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.45.0.tgz", - "integrity": "sha512-a0Oj68mrb25a0WjX/ShZ6AAd4PPiuLcgyzQr7bl2+DvYxIOajwkGbR+CZFEhOVZcfhTnixKy/qIXEzApEPHPQg==", + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.53.0.tgz", + "integrity": "sha512-9UGJL+Vy5N/YL1EWPZ/dyXLkShlNaDNrzxx4G7mTS9ywjg+BIuemo6rnN7w43K1NOjObTVO6zY0FwumJ1pCyLg==", "cpu": [ "x64" ], @@ -2966,16 +2969,17 @@ "optional": true, "os": [ "linux", - "freebsd" + "freebsd", + "android" ], "engines": { "node": ">=10" } }, "node_modules/@sentry/cli-win32-arm64": { - "version": "2.45.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.45.0.tgz", - "integrity": "sha512-vn+CwS4p+52pQSLNPoi20ZOrQmv01ZgAmuMnjkh1oUZfTyBAwWLrAh6Cy4cztcN8DfL5dOWKQBo8DBKURE4ttg==", + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.53.0.tgz", + "integrity": "sha512-G1kjOjrjMBY20rQcJV2GA8KQE74ufmROCDb2GXYRfjvb1fKAsm4Oh8N5+Tqi7xEHdjQoLPkE4CNW0aH68JSUDQ==", "cpu": [ "arm64" ], @@ -2989,9 +2993,9 @@ } }, "node_modules/@sentry/cli-win32-i686": { - "version": "2.45.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.45.0.tgz", - "integrity": "sha512-8mMoDdlwxtcdNIMtteMK7dbi7054jak8wKSHJ5yzMw8UmWxC5thc/gXBc1uPduiaI56VjoJV+phWHBKCD+6I4w==", + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.53.0.tgz", + "integrity": "sha512-qbGTZUzesuUaPtY9rPXdNfwLqOZKXrJRC1zUFn52hdo6B+Dmv0m/AHwRVFHZP53Tg1NCa8bDei2K/uzRN0dUZw==", "cpu": [ "x86", "ia32" @@ -3006,9 +3010,9 @@ } }, "node_modules/@sentry/cli-win32-x64": { - "version": "2.45.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.45.0.tgz", - "integrity": "sha512-ZvK9cIqFaq7vZ0jkHJ/xh5au6902Dr+AUxSk6L6vCL7JCe2p93KGL/4d8VFB5PD/P7Y9b+105G/e0QIFKzpeOw==", + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.53.0.tgz", + "integrity": "sha512-1TXYxYHtwgUq5KAJt3erRzzUtPqg7BlH9T7MdSPHjJatkrr/kwZqnVe2H6Arr/5NH891vOlIeSPHBdgJUAD69g==", "cpu": [ "x64" ], @@ -3047,22 +3051,22 @@ } }, "node_modules/@sentry/core": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.54.0.tgz", - "integrity": "sha512-03bWf+D1j28unOocY/5FDB6bUHtYlm6m6ollVejhg45ZmK9iPjdtxNWbrLsjT1WRym0Tjzowu+A3p+eebYEv0Q==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.55.0.tgz", + "integrity": "sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==", "license": "MIT", "engines": { "node": ">=14.18" } }, "node_modules/@sentry/react": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.54.0.tgz", - "integrity": "sha512-42T/fp8snYN19Fy/2P0Mwotu4gcdy+1Lx+uYCNcYP1o7wNGigJ7qb27sW7W34GyCCHjoCCfQgeOqDQsyY8LC9w==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.55.0.tgz", + "integrity": "sha512-/qNBvFLpvSa/Rmia0jpKfJdy16d4YZaAnH/TuKLAtm0BWlsPQzbXCU4h8C5Hsst0Do0zG613MEtEmWpWrVOqWA==", "license": "MIT", "dependencies": { - "@sentry/browser": "8.54.0", - "@sentry/core": "8.54.0", + "@sentry/browser": "8.55.0", + "@sentry/core": "8.55.0", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -3073,18 +3077,18 @@ } }, "node_modules/@sentry/react-native": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-6.14.0.tgz", - "integrity": "sha512-BBqixN6oV6tCNp1ABXfzvD531zxj1fUAH0HDPvOR/jX0h9f9pYfxCyI64B+DoQbVZKFsg8nte0QIHkZDhRAW9A==", + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-6.22.0.tgz", + "integrity": "sha512-Xt8ZuYa7YsMTG7hFU8awfNpVWijH6kWdyqykML6qVohBmP2OS57oSAd4fAdCmbtaIbHs8Drux+uPtb/SdOy2Vg==", "license": "MIT", "dependencies": { - "@sentry/babel-plugin-component-annotate": "3.4.0", - "@sentry/browser": "8.54.0", - "@sentry/cli": "2.45.0", - "@sentry/core": "8.54.0", - "@sentry/react": "8.54.0", - "@sentry/types": "8.54.0", - "@sentry/utils": "8.54.0" + "@sentry/babel-plugin-component-annotate": "4.2.0", + "@sentry/browser": "8.55.0", + "@sentry/cli": "2.53.0", + "@sentry/core": "8.55.0", + "@sentry/react": "8.55.0", + "@sentry/types": "8.55.0", + "@sentry/utils": "8.55.0" }, "bin": { "sentry-expo-upload-sourcemaps": "scripts/expo-upload-sourcemaps.js" @@ -3101,24 +3105,24 @@ } }, "node_modules/@sentry/types": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.54.0.tgz", - "integrity": "sha512-wztdtr7dOXQKi0iRvKc8XJhJ7HaAfOv8lGu0yqFOFwBZucO/SHnu87GOPi8mvrTiy1bentQO5l+zXWAaMvG4uw==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.55.0.tgz", + "integrity": "sha512-6LRT0+r6NWQ+RtllrUW2yQfodST0cJnkOmdpHA75vONgBUhpKwiJ4H7AmgfoTET8w29pU6AnntaGOe0LJbOmog==", "license": "MIT", "dependencies": { - "@sentry/core": "8.54.0" + "@sentry/core": "8.55.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/utils": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.54.0.tgz", - "integrity": "sha512-JL8UDjrsKxKclTdLXfuHfE7B3KbrAPEYP7tMyN/xiO2vsF6D84fjwYyalO0ZMtuFZE6vpSze8ZOLEh6hLnPYsw==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.55.0.tgz", + "integrity": "sha512-cYcl39+xcOivBpN9d8ZKbALl+DxZKo/8H0nueJZ0PO4JA+MJGhSm6oHakXxLPaiMoNLTX7yor8ndnQIuFg+vmQ==", "license": "MIT", "dependencies": { - "@sentry/core": "8.54.0" + "@sentry/core": "8.55.0" }, "engines": { "node": ">=14.18" diff --git a/package.json b/package.json index e6cd92b..48f1435 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@expo/vector-icons": "^15.0.3", "@gorhom/bottom-sheet": "5.2.8", "@react-navigation/native": "^7.0.14", - "@sentry/react-native": "~6.14.0", + "@sentry/react-native": "~6.22.0", "@tanstack/react-query": "^5.62.0", "expo": "^54.0.0", "expo-clipboard": "8.0.8",