diff --git a/.github/workflows/buildAdHoc.yml b/.github/workflows/buildAdHoc.yml
index 14e1fc066ea7a..6f3d64cbbea6c 100644
--- a/.github/workflows/buildAdHoc.yml
+++ b/.github/workflows/buildAdHoc.yml
@@ -209,6 +209,8 @@ jobs:
const androidLink = '${{ needs.buildAndroid.outputs.ROCK_ARTIFACT_URL }}' || '';
const iosLink = '${{ needs.buildIOS.outputs.ROCK_ARTIFACT_URL }}' || '';
const mobileExpensifySHA = '${{ steps.getMobileExpensifySHA.outputs.SHA }}' || '';
+ const androidSentryLink = '${{ needs.buildAndroid.outputs.SENTRY_URL }}' || '';
+ const iosSentryLink = '${{ needs.buildIOS.outputs.SENTRY_URL }}' || '';
const webFailed = '${{ needs.buildWeb.result }}' === 'failure' || '${{ needs.deployWebAdHoc.result }}' === 'failure';
const webStatus = webLink ? '✅ Success' : webFailed ? '❌ Failed' : '⏭️ Skipped';
@@ -235,6 +237,15 @@ jobs:
],
]);
+ if (androidSentryLink || iosSentryLink) {
+ summary.addHeading('Bundle Size Analysis', 3);
+ summary.addTable([
+ [{data: 'Platform', header: true}, {data: 'Sentry Size Analysis', header: true}],
+ ['Android', androidSentryLink ? `${androidSentryLink}` : '-'],
+ ['iOS', iosSentryLink ? `${iosSentryLink}` : '-'],
+ ]);
+ }
+
if (mobileExpensifySHA) {
const mobileExpensifyUrl = `https://github.com/Expensify/Mobile-Expensify/commit/${mobileExpensifySHA}`;
const label = '${{ inputs.MOBILE_EXPENSIFY_REF }}' ? 'Mobile-Expensify SHA (Custom)' : 'Mobile-Expensify Submodule SHA';
diff --git a/.github/workflows/buildAndroid.yml b/.github/workflows/buildAndroid.yml
index 1e1c9ef457e5f..f2e8ab0018162 100644
--- a/.github/workflows/buildAndroid.yml
+++ b/.github/workflows/buildAndroid.yml
@@ -35,6 +35,9 @@ on:
ROCK_ARTIFACT_URL:
description: URL to download the ad-hoc build artifact (adhoc only)
value: ${{ jobs.build.outputs.ROCK_ARTIFACT_URL }}
+ SENTRY_URL:
+ description: URL to Sentry size analysis
+ value: ${{ jobs.build.outputs.SENTRY_URL }}
AAB_FILENAME:
description: Filename of the AAB artifact (empty if no AAB was produced)
value: ${{ jobs.build.outputs.AAB_FILENAME }}
@@ -57,6 +60,7 @@ jobs:
outputs:
VERSION_CODE: ${{ steps.getAndroidVersion.outputs.VERSION_CODE }}
ROCK_ARTIFACT_URL: ${{ steps.set-artifact-url.outputs.ARTIFACT_URL }}
+ SENTRY_URL: ${{ steps.sentry-upload.outputs.SENTRY_URL }}
AAB_FILENAME: ${{ steps.collectArtifacts.outputs.AAB_FILENAME }}
APK_FILENAME: ${{ steps.collectArtifacts.outputs.APK_FILENAME }}
SOURCEMAP_FILENAME: index.android.bundle.map
@@ -170,7 +174,7 @@ jobs:
FORCE_NATIVE_BUILD: ${{ inputs.force-native-build == 'true' && github.run_id || '' }}
with:
variant: ${{ inputs.variant }}
- aab: ${{ inputs.variant == 'Release' }}
+ aab: true
sign: true
re-sign: true
ad-hoc: ${{ inputs.variant == 'Adhoc' }}
@@ -185,6 +189,27 @@ jobs:
custom-identifier: ${{ steps.computeIdentifier.outputs.IDENTIFIER }}
validate-elf-alignment: false
+ - name: Set artifact URL output
+ id: set-artifact-url
+ if: ${{ inputs.variant == 'Adhoc' }}
+ run: echo "ARTIFACT_URL=$ARTIFACT_URL" >> "$GITHUB_OUTPUT"
+
+ - name: Upload Android build to Sentry for size analysis
+ id: sentry-upload
+ if: ${{ env.ARTIFACT_PATH != '' }}
+ continue-on-error: true
+ timeout-minutes: 5
+ run: |
+ OUTPUT=$(npx sentry-cli build upload "$ARTIFACT_PATH" --org expensify --project app --build-configuration ${{ inputs.variant == 'Adhoc' && 'AdHoc' || 'Release' }} --log-level debug 2>&1)
+ echo "$OUTPUT"
+ SENTRY_URL=$(echo "$OUTPUT" | grep -oE 'https://expensify\.sentry\.io/[^ ]+' | head -1)
+ if [ -n "$SENTRY_URL" ]; then
+ echo "::notice::Android Sentry size analysis: $SENTRY_URL"
+ echo "SENTRY_URL=$SENTRY_URL" >> "$GITHUB_OUTPUT"
+ fi
+ env:
+ SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
+
- name: Upload Gradle profile report
if: always()
# v6
@@ -194,11 +219,6 @@ jobs:
path: Mobile-Expensify/Android/build/reports/profile/
if-no-files-found: ignore
- - name: Set artifact URL output
- id: set-artifact-url
- if: ${{ inputs.variant == 'Adhoc' }}
- run: echo "ARTIFACT_URL=$ARTIFACT_URL" >> "$GITHUB_OUTPUT"
-
- name: Collect build artifacts
id: collectArtifacts
run: |
@@ -214,7 +234,7 @@ jobs:
echo "APK_FILENAME=Expensify.apk"
} >> "$GITHUB_OUTPUT"
else
- echo "::warning::No AAB file found (expected for remote-cache hits on Adhoc builds)"
+ echo "::warning::No AAB file found (expected for remote-cache hits)"
echo "HAS_AAB=false" >> "$GITHUB_OUTPUT"
fi
@@ -290,3 +310,4 @@ jobs:
with:
name: ${{ inputs.artifact-prefix }}android-apk-artifact
path: Expensify.apk
+
diff --git a/.github/workflows/buildIOS.yml b/.github/workflows/buildIOS.yml
index ae43bcd2d8e7f..a5b6339992abb 100644
--- a/.github/workflows/buildIOS.yml
+++ b/.github/workflows/buildIOS.yml
@@ -35,6 +35,9 @@ on:
ROCK_ARTIFACT_URL:
description: URL to download the ad-hoc build artifact (adhoc only)
value: ${{ jobs.build.outputs.ROCK_ARTIFACT_URL }}
+ SENTRY_URL:
+ description: URL to Sentry size analysis
+ value: ${{ jobs.build.outputs.SENTRY_URL }}
IPA_FILENAME:
description: Filename of the IPA artifact produced by the build
value: ${{ jobs.build.outputs.IPA_FILENAME }}
@@ -55,6 +58,7 @@ jobs:
outputs:
IOS_VERSION: ${{ steps.getIOSVersion.outputs.IOS_VERSION }}
ROCK_ARTIFACT_URL: ${{ steps.set-artifact-url.outputs.ARTIFACT_URL }}
+ SENTRY_URL: ${{ steps.sentry-upload.outputs.SENTRY_URL }}
IPA_FILENAME: ${{ steps.set-ipa-filename.outputs.IPA_FILENAME }}
DSYM_FILENAME: ${{ steps.set-ipa-filename.outputs.DSYM_FILENAME }}
SOURCEMAP_FILENAME: main.jsbundle.map
@@ -235,6 +239,22 @@ jobs:
comment-bot: false
custom-identifier: ${{ steps.computeIdentifier.outputs.IDENTIFIER }}
+ - name: Upload iOS build to Sentry for size analysis
+ id: sentry-upload
+ if: ${{ env.ARTIFACT_PATH != '' }}
+ continue-on-error: true
+ timeout-minutes: 5
+ run: |
+ OUTPUT=$(npx sentry-cli build upload "$ARTIFACT_PATH" --org expensify --project app --build-configuration ${{ inputs.variant == 'Adhoc' && 'AdHoc' || 'Release' }} --log-level debug 2>&1)
+ echo "$OUTPUT"
+ SENTRY_URL=$(echo "$OUTPUT" | grep -oE 'https://expensify\.sentry\.io/[^ ]+' | head -1)
+ if [ -n "$SENTRY_URL" ]; then
+ echo "::notice::iOS Sentry size analysis: $SENTRY_URL"
+ echo "SENTRY_URL=$SENTRY_URL" >> "$GITHUB_OUTPUT"
+ fi
+ env:
+ SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
+
- name: Set artifact URL output
id: set-artifact-url
if: ${{ inputs.variant == 'Adhoc' }}
@@ -303,3 +323,4 @@ jobs:
with:
name: ${{ inputs.artifact-prefix }}ios-sourcemap-artifact
path: Mobile-Expensify/main.jsbundle.map
+
diff --git a/package-lock.json b/package-lock.json
index 3c7332195f435..afe02288ef82f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -182,6 +182,7 @@
"@rock-js/platform-ios": "0.12.10",
"@rock-js/plugin-metro": "0.12.10",
"@rock-js/provider-s3": "0.12.10",
+ "@sentry/cli": "3.2.2",
"@sentry/webpack-plugin": "4.6.0",
"@storybook/addon-a11y": "10.1.10",
"@storybook/addon-docs": "10.1.10",
@@ -13726,6 +13727,180 @@
"node": ">= 14"
}
},
+ "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli": {
+ "version": "2.58.4",
+ "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.58.4.tgz",
+ "integrity": "sha512-ArDrpuS8JtDYEvwGleVE+FgR+qHaOp77IgdGSacz6SZy6Lv90uX0Nu4UrHCQJz8/xwIcNxSqnN22lq0dH4IqTg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "FSL-1.1-MIT",
+ "dependencies": {
+ "https-proxy-agent": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "progress": "^2.0.3",
+ "proxy-from-env": "^1.1.0",
+ "which": "^2.0.2"
+ },
+ "bin": {
+ "sentry-cli": "bin/sentry-cli"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@sentry/cli-darwin": "2.58.4",
+ "@sentry/cli-linux-arm": "2.58.4",
+ "@sentry/cli-linux-arm64": "2.58.4",
+ "@sentry/cli-linux-i686": "2.58.4",
+ "@sentry/cli-linux-x64": "2.58.4",
+ "@sentry/cli-win32-arm64": "2.58.4",
+ "@sentry/cli-win32-i686": "2.58.4",
+ "@sentry/cli-win32-x64": "2.58.4"
+ }
+ },
+ "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-darwin": {
+ "version": "2.58.4",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.58.4.tgz",
+ "integrity": "sha512-kbTD+P4X8O+nsNwPxCywtj3q22ecyRHWff98rdcmtRrvwz8CKi/T4Jxn/fnn2i4VEchy08OWBuZAqaA5Kh2hRQ==",
+ "dev": true,
+ "license": "FSL-1.1-MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-linux-arm": {
+ "version": "2.58.4",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.4.tgz",
+ "integrity": "sha512-rdQ8beTwnN48hv7iV7e7ZKucPec5NJkRdrrycMJMZlzGBPi56LqnclgsHySJ6Kfq506A2MNuQnKGaf/sBC9REA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "FSL-1.1-MIT",
+ "optional": true,
+ "os": [
+ "linux",
+ "freebsd",
+ "android"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-linux-arm64": {
+ "version": "2.58.4",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.4.tgz",
+ "integrity": "sha512-0g0KwsOozkLtzN8/0+oMZoOuQ0o7W6O+hx+ydVU1bktaMGKEJLMAWxOQNjsh1TcBbNIXVOKM/I8l0ROhaAb8Ig==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "FSL-1.1-MIT",
+ "optional": true,
+ "os": [
+ "linux",
+ "freebsd",
+ "android"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-linux-i686": {
+ "version": "2.58.4",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.4.tgz",
+ "integrity": "sha512-NseoIQAFtkziHyjZNPTu1Gm1opeQHt7Wm1LbLrGWVIRvUOzlslO9/8i6wETUZ6TjlQxBVRgd3Q0lRBG2A8rFYA==",
+ "cpu": [
+ "x86",
+ "ia32"
+ ],
+ "dev": true,
+ "license": "FSL-1.1-MIT",
+ "optional": true,
+ "os": [
+ "linux",
+ "freebsd",
+ "android"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-linux-x64": {
+ "version": "2.58.4",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.4.tgz",
+ "integrity": "sha512-d3Arz+OO/wJYTqCYlSN3Ktm+W8rynQ/IMtSZLK8nu0ryh5mJOh+9XlXY6oDXw4YlsM8qCRrNquR8iEI1Y/IH+Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "FSL-1.1-MIT",
+ "optional": true,
+ "os": [
+ "linux",
+ "freebsd",
+ "android"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-win32-arm64": {
+ "version": "2.58.4",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.4.tgz",
+ "integrity": "sha512-bqYrF43+jXdDBh0f8HIJU3tbvlOFtGyRjHB8AoRuMQv9TEDUfENZyCelhdjA+KwDKYl48R1Yasb4EHNzsoO83w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "FSL-1.1-MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-win32-i686": {
+ "version": "2.58.4",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.4.tgz",
+ "integrity": "sha512-3triFD6jyvhVcXOmGyttf+deKZcC1tURdhnmDUIBkiDPJKGT/N5xa4qAtHJlAB/h8L9jgYih9bvJnvvFVM7yug==",
+ "cpu": [
+ "x86",
+ "ia32"
+ ],
+ "dev": true,
+ "license": "FSL-1.1-MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-win32-x64": {
+ "version": "2.58.4",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.4.tgz",
+ "integrity": "sha512-cSzN4PjM1RsCZ4pxMjI0VI7yNCkxiJ5jmWncyiwHXGiXrV1eXYdQ3n1LhUYLZ91CafyprR0OhDcE+RVZ26Qb5w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "FSL-1.1-MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@sentry/bundler-plugin-core/node_modules/brace-expansion": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
@@ -13815,56 +13990,58 @@
"license": "MIT"
},
"node_modules/@sentry/cli": {
- "version": "2.58.0",
- "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.58.0.tgz",
- "integrity": "sha512-ywfV2uYkNaW5BGFBgIEX+urkxWtY03GYKN08OLYJpfJeOWl5tzxAKKg+AkMZqnqsDqjCf8gLjZh7sF4jY+ZE1Q==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-3.2.2.tgz",
+ "integrity": "sha512-qmjsm9+Bq/3QGTnIfOsJdhq+8LI3imxAPbGNBpRj4R0YFk+b1ry9huRHCLgkMcRFWtPkJmGZwEq2Z7e+02QPLA==",
+ "dev": true,
"hasInstallScript": true,
- "license": "BSD-3-Clause",
+ "license": "FSL-1.1-MIT",
"dependencies": {
- "https-proxy-agent": "^5.0.0",
- "node-fetch": "^2.6.7",
"progress": "^2.0.3",
"proxy-from-env": "^1.1.0",
+ "undici": "^6.22.0",
"which": "^2.0.2"
},
"bin": {
"sentry-cli": "bin/sentry-cli"
},
"engines": {
- "node": ">= 10"
+ "node": ">= 18"
},
"optionalDependencies": {
- "@sentry/cli-darwin": "2.58.0",
- "@sentry/cli-linux-arm": "2.58.0",
- "@sentry/cli-linux-arm64": "2.58.0",
- "@sentry/cli-linux-i686": "2.58.0",
- "@sentry/cli-linux-x64": "2.58.0",
- "@sentry/cli-win32-arm64": "2.58.0",
- "@sentry/cli-win32-i686": "2.58.0",
- "@sentry/cli-win32-x64": "2.58.0"
+ "@sentry/cli-darwin": "3.2.2",
+ "@sentry/cli-linux-arm": "3.2.2",
+ "@sentry/cli-linux-arm64": "3.2.2",
+ "@sentry/cli-linux-i686": "3.2.2",
+ "@sentry/cli-linux-x64": "3.2.2",
+ "@sentry/cli-win32-arm64": "3.2.2",
+ "@sentry/cli-win32-i686": "3.2.2",
+ "@sentry/cli-win32-x64": "3.2.2"
}
},
"node_modules/@sentry/cli-darwin": {
- "version": "2.58.0",
- "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.58.0.tgz",
- "integrity": "sha512-dI8+85N2xNsQeJZBbfGkjFScYH0xP/8+TDgoA5YiWWxsD/qSlWv1pf2VCR83smMyfcjIkDiPYIxBDticD67skQ==",
- "license": "BSD-3-Clause",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-3.2.2.tgz",
+ "integrity": "sha512-y1uglMBbo9dYqC92hTQBkuGk7SegLPo1cVwJzX0dhplJoBMuanLMhOMYd1J20qhkDdBhguflCHGf0tOzNTGWhg==",
+ "dev": true,
+ "license": "FSL-1.1-MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"node_modules/@sentry/cli-linux-arm": {
- "version": "2.58.0",
- "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.0.tgz",
- "integrity": "sha512-QxBWSQkm2OL8d0XXTUOcX5RYZzZGkMw48ubU4g/c4rlT06PuJV56Z03jsMQdJWUDzKmVYoJdvFV/whxYIkwmWw==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-3.2.2.tgz",
+ "integrity": "sha512-CC7N3hjOgs3cwrW0T9hqirFVUpKO6ASjdd0JT4DQHaAn34pruv8J+OoSnj1jkrT2DHxDkNNZPOFSK05AnHr8wA==",
"cpu": [
"arm"
],
- "license": "BSD-3-Clause",
+ "dev": true,
+ "license": "FSL-1.1-MIT",
"optional": true,
"os": [
"linux",
@@ -13872,17 +14049,18 @@
"android"
],
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"node_modules/@sentry/cli-linux-arm64": {
- "version": "2.58.0",
- "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.0.tgz",
- "integrity": "sha512-Fso5GImxQOigZqLHAHhz85w71zxS1bvL52PI/tcjadmKrIaJdD3ANukC0UcKyKuj9xhr/k1ufNR7V+2BD16kmg==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-3.2.2.tgz",
+ "integrity": "sha512-SIGJknEQNDw9S/8QPTl8QLVe2IEiTKH3NeeHQ/Q2XWXig1ZebJfm4iTrdu47ypszIfxHeLvQkkVrr8mRKq16xA==",
"cpu": [
"arm64"
],
- "license": "BSD-3-Clause",
+ "dev": true,
+ "license": "FSL-1.1-MIT",
"optional": true,
"os": [
"linux",
@@ -13890,18 +14068,19 @@
"android"
],
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"node_modules/@sentry/cli-linux-i686": {
- "version": "2.58.0",
- "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.0.tgz",
- "integrity": "sha512-Av+T5YwuTtbOpe/Fyr/lsbl5XIZTFspHCiAt4Kgtllme6T1ASIDhQDXDh/OVJ8So4pHkToTn3iH8mm8vLqBqOA==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-3.2.2.tgz",
+ "integrity": "sha512-W2hQ2DvIlZI05j2JN/87lfeo51F24zmQOJU6Uz+fZz/mkSvpnjeWxjAvfDNVGlLxp7XSoDbhHfrLBxdIh6jMeg==",
"cpu": [
"x86",
"ia32"
],
- "license": "BSD-3-Clause",
+ "dev": true,
+ "license": "FSL-1.1-MIT",
"optional": true,
"os": [
"linux",
@@ -13909,17 +14088,18 @@
"android"
],
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"node_modules/@sentry/cli-linux-x64": {
- "version": "2.58.0",
- "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.0.tgz",
- "integrity": "sha512-AxK0eqZbHn0NGWsAE8bzt/iRMMUlqsx77kru/TIBQy9cMMJaq+rLb63W7HWXln4ER32nPZYx+JuhHD9UNiAFHA==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-3.2.2.tgz",
+ "integrity": "sha512-4mh3yvOUxO63lq3teexRvalD1mWaRVjpgL2cCMKA2wkB69lcL5nK2gkdzDUKx2y/elluVdvGPPZaqOr1bfNI0w==",
"cpu": [
"x64"
],
- "license": "BSD-3-Clause",
+ "dev": true,
+ "license": "FSL-1.1-MIT",
"optional": true,
"os": [
"linux",
@@ -13927,56 +14107,59 @@
"android"
],
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"node_modules/@sentry/cli-win32-arm64": {
- "version": "2.58.0",
- "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.0.tgz",
- "integrity": "sha512-lIRTfGjD1TQIOuFh4rJGWt3zXyeXAlfoYYQbzG/rP6gXstiGENQtfEXZyKT+wlIGSqtbBGVfL8xp65ryjbXSgQ==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-3.2.2.tgz",
+ "integrity": "sha512-TQgfkdJgd8Y/lPzDibqc5Hamg8Hl5rN1sZwX80n4r9Ly46Yzu8Bv6KUhoNL/ktAvw9Aeko6Bx54rwZnzxFZHwg==",
"cpu": [
"arm64"
],
- "license": "BSD-3-Clause",
+ "dev": true,
+ "license": "FSL-1.1-MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"node_modules/@sentry/cli-win32-i686": {
- "version": "2.58.0",
- "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.0.tgz",
- "integrity": "sha512-7VdB3QZ/3t2FABgIwRP2SoJcDmZaPPPZofVmJem+FgeONeLOUvHQw9WSLG4y5Dfc9yi5wO31H1ClW4uxv8EtuA==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-3.2.2.tgz",
+ "integrity": "sha512-vAcnq0SdYuvwIdREgF5APocjW3d9Z17xLwugpaAz8wpOjCeC1iMEFWqbz5k49i4iDkDVNFRMENiVvWVSu1kEnA==",
"cpu": [
"x86",
"ia32"
],
- "license": "BSD-3-Clause",
+ "dev": true,
+ "license": "FSL-1.1-MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"node_modules/@sentry/cli-win32-x64": {
- "version": "2.58.0",
- "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.0.tgz",
- "integrity": "sha512-uItx4P4v9cKbgVbOpuShvIV8g42qLmZorPHwg3pYUu78c85xAWrmiXL+0JKNUf5JVBEHeHB+rIu08AZfDMhxig==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-3.2.2.tgz",
+ "integrity": "sha512-xWPTXjSSdmoyG/0ee7A9KSfsScGHCdaXMP6ASt4bMx3yYJO7ziEoZzfJE2M6oglz+woAm0LV9+O/n7g80tixlQ==",
"cpu": [
"x64"
],
- "license": "BSD-3-Clause",
+ "dev": true,
+ "license": "FSL-1.1-MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"node_modules/@sentry/core": {
@@ -14032,6 +14215,171 @@
}
}
},
+ "node_modules/@sentry/react-native/node_modules/@sentry/cli": {
+ "version": "2.58.0",
+ "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.58.0.tgz",
+ "integrity": "sha512-ywfV2uYkNaW5BGFBgIEX+urkxWtY03GYKN08OLYJpfJeOWl5tzxAKKg+AkMZqnqsDqjCf8gLjZh7sF4jY+ZE1Q==",
+ "hasInstallScript": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "https-proxy-agent": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "progress": "^2.0.3",
+ "proxy-from-env": "^1.1.0",
+ "which": "^2.0.2"
+ },
+ "bin": {
+ "sentry-cli": "bin/sentry-cli"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@sentry/cli-darwin": "2.58.0",
+ "@sentry/cli-linux-arm": "2.58.0",
+ "@sentry/cli-linux-arm64": "2.58.0",
+ "@sentry/cli-linux-i686": "2.58.0",
+ "@sentry/cli-linux-x64": "2.58.0",
+ "@sentry/cli-win32-arm64": "2.58.0",
+ "@sentry/cli-win32-i686": "2.58.0",
+ "@sentry/cli-win32-x64": "2.58.0"
+ }
+ },
+ "node_modules/@sentry/react-native/node_modules/@sentry/cli-darwin": {
+ "version": "2.58.0",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.58.0.tgz",
+ "integrity": "sha512-dI8+85N2xNsQeJZBbfGkjFScYH0xP/8+TDgoA5YiWWxsD/qSlWv1pf2VCR83smMyfcjIkDiPYIxBDticD67skQ==",
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/react-native/node_modules/@sentry/cli-linux-arm": {
+ "version": "2.58.0",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.0.tgz",
+ "integrity": "sha512-QxBWSQkm2OL8d0XXTUOcX5RYZzZGkMw48ubU4g/c4rlT06PuJV56Z03jsMQdJWUDzKmVYoJdvFV/whxYIkwmWw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "os": [
+ "linux",
+ "freebsd",
+ "android"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/react-native/node_modules/@sentry/cli-linux-arm64": {
+ "version": "2.58.0",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.0.tgz",
+ "integrity": "sha512-Fso5GImxQOigZqLHAHhz85w71zxS1bvL52PI/tcjadmKrIaJdD3ANukC0UcKyKuj9xhr/k1ufNR7V+2BD16kmg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "os": [
+ "linux",
+ "freebsd",
+ "android"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/react-native/node_modules/@sentry/cli-linux-i686": {
+ "version": "2.58.0",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.0.tgz",
+ "integrity": "sha512-Av+T5YwuTtbOpe/Fyr/lsbl5XIZTFspHCiAt4Kgtllme6T1ASIDhQDXDh/OVJ8So4pHkToTn3iH8mm8vLqBqOA==",
+ "cpu": [
+ "x86",
+ "ia32"
+ ],
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "os": [
+ "linux",
+ "freebsd",
+ "android"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/react-native/node_modules/@sentry/cli-linux-x64": {
+ "version": "2.58.0",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.0.tgz",
+ "integrity": "sha512-AxK0eqZbHn0NGWsAE8bzt/iRMMUlqsx77kru/TIBQy9cMMJaq+rLb63W7HWXln4ER32nPZYx+JuhHD9UNiAFHA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "os": [
+ "linux",
+ "freebsd",
+ "android"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/react-native/node_modules/@sentry/cli-win32-arm64": {
+ "version": "2.58.0",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.0.tgz",
+ "integrity": "sha512-lIRTfGjD1TQIOuFh4rJGWt3zXyeXAlfoYYQbzG/rP6gXstiGENQtfEXZyKT+wlIGSqtbBGVfL8xp65ryjbXSgQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/react-native/node_modules/@sentry/cli-win32-i686": {
+ "version": "2.58.0",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.0.tgz",
+ "integrity": "sha512-7VdB3QZ/3t2FABgIwRP2SoJcDmZaPPPZofVmJem+FgeONeLOUvHQw9WSLG4y5Dfc9yi5wO31H1ClW4uxv8EtuA==",
+ "cpu": [
+ "x86",
+ "ia32"
+ ],
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@sentry/react-native/node_modules/@sentry/cli-win32-x64": {
+ "version": "2.58.0",
+ "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.0.tgz",
+ "integrity": "sha512-uItx4P4v9cKbgVbOpuShvIV8g42qLmZorPHwg3pYUu78c85xAWrmiXL+0JKNUf5JVBEHeHB+rIu08AZfDMhxig==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@sentry/types": {
"version": "10.24.0",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-10.24.0.tgz",
@@ -38112,9 +38460,9 @@
"license": "MIT"
},
"node_modules/undici": {
- "version": "6.21.3",
- "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz",
- "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==",
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz",
+ "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==",
"license": "MIT",
"engines": {
"node": ">=18.17"
diff --git a/package.json b/package.json
index 3dd61e7d92bf1..4f220fffdc8ef 100644
--- a/package.json
+++ b/package.json
@@ -246,6 +246,7 @@
"@rock-js/platform-ios": "0.12.10",
"@rock-js/plugin-metro": "0.12.10",
"@rock-js/provider-s3": "0.12.10",
+ "@sentry/cli": "3.2.2",
"@sentry/webpack-plugin": "4.6.0",
"@storybook/addon-a11y": "10.1.10",
"@storybook/addon-docs": "10.1.10",