feat(core): Add disableAutoUpload option to Expo plugin
#6195
3 issues
Medium
Toggling `disableAutoUpload` back to `false` leaves stale `shouldSentryAutoUploadGeneral` override in build.gradle - `packages/core/plugin/src/withSentryAndroid.ts:45-51`
When disableAutoUpload is changed from true back to false and prebuild is re-run, the existing shouldSentryAutoUploadGeneral = { -> return false } override is never removed, so auto-upload stays silently disabled. Consider adding a removal branch when disableAutoUpload is false but the override is already present.
Also found at:
packages/core/plugin/src/withSentryIOS.ts:72-75packages/core/test/expo-plugin/modifyAppBuildGradle.test.ts:60-63
`disableAutoUpload: false` does not remove the Gradle override added by a prior `true` run - `packages/core/plugin/src/withSentry.ts:21`
In withSentryAndroid.ts, modifyAppBuildGradle only adds project.ext.shouldSentryAutoUploadGeneral = { -> return false } and never removes it. If a developer sets disableAutoUpload: true, runs expo prebuild, then removes the flag (or sets it to false) and reruns prebuild, the override stays in android/app/build.gradle and source map / debug symbol uploads remain silently disabled. The same shape of bug also exists on iOS (SENTRY_DISABLE_AUTO_UPLOAD=true injected into existing build phases is never removed when the flag flips back to false), so the fix should be symmetric.
Also found at:
packages/core/plugin/src/withSentryAndroid.ts:43-52packages/core/test/expo-plugin/modifyAppBuildGradle.test.ts:66-69packages/core/plugin/src/withSentry.ts:71packages/core/plugin/src/withSentry.ts:88packages/core/test/expo-plugin/modifyXcodeProject.test.ts:128-133
Low
Misleading `warnOnce` emitted even after successfully injecting disable flag - `packages/core/test/expo-plugin/modifyXcodeProject.test.ts:118`
When sentry-xcode.sh is already present and disableAutoUpload: true is set (the re-prebuild path tested at line 118), modifyExistingXcodeBuildScript calls addDisableAutoUploadToExistingScript correctly but then unconditionally calls warnOnce('The latest sentry-xcode.sh script already exists…'), which may confuse users into thinking nothing happened; the test at line 118 doesn't assert whether warnOnce was or wasn't called.
4 skills analyzed
| Skill | Findings | Duration | Cost |
|---|---|---|---|
| security-review | 0 | 25.9s | $0.14 |
| code-review | 2 | 4m 13s | $1.42 |
| find-bugs | 1 | 10m 6s | $2.82 |
| gha-security-review | 0 | 1m 43s | $0.06 |
⏱ 16m 28s · 1.1M in / 118.7k out · $4.45