You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Expo plugin: "Upload Debug Symbols to Sentry" resolves its script with node before loading .xcode.env, so Xcode launched from the Dock skips the upload silently (7.x) or fails the build (8.x) #6859
Expo (mobile only), Expo Router, Hermes, RN New Architecture
Are you using sentry.io or on-premise?
sentry.io (SaS)
Are you using any other error monitoring solution alongside Sentry?
No
@sentry/react-native SDK Version
7.11.0 (the issue is still on main, 8.30.0)
How does your development environment look like?
macOS 26.6.2, Xcode 27.0 (first observed on Xcode 26.6)
Expo SDK 57.0.27, react-native 0.86.3
Node 24 installed with nvm, so not on launchd's default PATH
ios/.xcode.env.local sets NODE_BINARY (written by expo prebuild)
Sentry.init()
Not relevant: this is a build-time issue in the @sentry/react-native/expo config plugin.
Sentry.init({dsn: '…'});
Steps to Reproduce
Expo app with the @sentry/react-native/expo plugin, npx expo prebuild.
Node is installed through nvm (or Homebrew under /opt/homebrew/bin), i.e. not in /usr/bin:/bin:/usr/sbin:/sbin.
Open the workspace in Xcode from the Dock or Finder, so Xcode inherits launchd's PATH, and build Release. The same thing can be reproduced from a terminal:
The "Upload Debug Symbols to Sentry" phase finds Node the same way the "Bundle React Native code and images" phase does: it loads ios/.xcode.env and ios/.xcode.env.local through react-native/scripts/xcode/with-environment.sh, then uses $NODE_BINARY. Debug files are uploaded, or the phase fails loudly.
node is only used to locatesentry-xcode-debug-files.sh, and that script is what loads .xcode.env*. At that point NODE_BINARY is not set yet, so it falls back to node, which is not on launchd's PATH:
7.11.0 (unquoted substitution): the build log shows Script-….sh: line 2: node: command not found. /bin/sh then gets no argument, reads empty stdin and exits 0. The Release build succeeds and no debug files are uploaded. That one log line is the only sign, so native crashes from that build reach Sentry unsymbolicated.
$ env -i PATH=/usr/bin:/bin:/usr/sbin:/sbin /bin/sh -c '/bin/sh "`${NODE_BINARY:-node} --print 1`"'
/bin/sh: node: command not found
/bin/sh: : No such file or directory
$ echo$?
127
Confirmation that the environment is the only cause: running the same phase command after sourcing node_modules/react-native/scripts/xcode/with-environment.sh gives the script NODE_BINARY from .xcode.env.local, and sentry-xcode-debug-files.sh runs (SENTRY_DISABLE_AUTO_UPLOAD=true, skipping debug files upload in our setup).
Builds started from a shell whose PATH contains node (CI, npx expo run:ios) are not affected.
Possible fix: source with-environment.sh (or .xcode.env / .xcode.env.local) in the phase before resolving the script path, as React Native's bundle phase does.
Activity
linear-code commentedon Oct 8, 2026
RN-815
alwx commentedon Oct 9, 2026
Thanks for reporting.
There is already a PR fixing this: #6860
We're working on making it merged asap.
fix(ios): Load .xcode.env before the Expo debug files phase runs Node
fix(ios): Load .xcode.env before the Expo debug files phase runs Node
fix(ios): Load .xcode.env before the Expo debug files phase runs Node
github-actions commentedon Oct 15, 2026
A PR closing this issue has just been released 🚀
This issue was referenced by PR #6861, which was included in the 8.31.0 release.