iOS app crashes right immediately in TestFlight after expo 43 upgrade (dev app is fine)

Unfortunately, after upgrading to Expo 43 (updated step by step from Expo 40 > 41 > 42 > 43) our production (TestFlight) iOS app crashes immediately after opening on the device. However, It works fine in dev mode on both Expo Go client and iOS simulator. Expo diagnostic is provided below.

Opening the crash report in Xcode gives this:

Also, while I have this error and warning when running the iOS simulator which started appearing after SDK 43 upgrade as well.

› Opening exp://127.0.0.1:19000 on iPhone 12 Pro Max
› Opening the iOS simulator, this might take a moment.
Error: xcrun exited with non-zero code: 60
An error was encountered processing the command (domain=NSPOSIXErrorDomain, code=60):
The operation couldn’t be completed. Operation timed out
Operation timed out

› Press ? │ show all commands

Warning: https://github.com/expo/react-native/archive/sdk-43.tar.gz is not a valid version. Version must be in the form of sdk-x.y.z. Please update your package.json file

Note that I can also run the app fine in ‘no-dev’ mode: expo r -c -i --no-dev.

Really appreciate any debugging tips and help!

Expo CLI 4.12.10 environment info:
System:
OS: macOS 11.6
Shell: 5.8 - /bin/zsh
Binaries:
Node: 16.4.2 - /usr/local/bin/node
Yarn: 1.22.0 - /usr/local/bin/yarn
npm: 7.18.1 - /usr/local/bin/npm
Watchman: 2021.09.27.00 - /usr/local/bin/watchman
Managers:
CocoaPods: 1.11.2 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 21.0.1, iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0
IDEs:
Xcode: 13.1/13A1030d - /usr/bin/xcodebuild
npmPackages:
expo: ^43.0.0 => 43.0.1
react: 17.0.1 => 17.0.1
react-native: https://github.com/expo/react-native/archive/sdk-43.tar.gz => 0.64.2
react-navigation: ^3.0.9 => 3.13.0
npmGlobalPackages:
expo-cli: 4.12.10
Expo Workflow: managed

Another clue: when I run with ‘minify’ (expo r -c -i --no-dev --minify), I get the


error on the simulator.

Similarly, this error on the device:

Could not connect to development server.
Ensure the following:

ABI43_0_0RCTFatal
__37-[ABI43_0_0RCTCxxBridge handleError:]_block_invoke
_dispatch_call_block_and_release
_dispatch_client_callout
_dispatch_main_queue_callback_4CF
CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE
__CFRunLoopRun
CFRunLoopRunSpecific
GSEventRunModal
-[UIApplication _run]
UIApplicationMain
main
start_sim
0x0

Also, I have added Amplitude recently to the project, so I was wondering if that might be the cause, but I get the same error even when I comment out all Amplitude imports.

I’m having the same problem but with SDK 42; I’m waiting until SDK 43 comes out of beta. I’m using the managed workflow.

I was on SDK 39 and upgraded incrementally to SDK 42 (expo upgrade). My app loads as expected in the Simulator and in Expo Go iOS app. However, after uploading to TestFlight it crashes immediately; the app doesn’t even appear.

My package.json:

{
  "name": "appname",
  "version": "1.28.0",
  "description": "",
  "author": "Adriaan Balt",
  "private": true,
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo r -c",
    "eject": "expo eject",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "test": "jest"
  },
  "dependencies": {
    "@bugsnag/expo": "6.5.1",
    "@expo/vector-icons": "^12.0.0",
    "@react-native-community/slider": "3.0.3",
    "@react-navigation/bottom-tabs": "^5.11.2",
    "@react-navigation/material-top-tabs": "5.3.17",
    "@react-navigation/native": "^5.8.10",
    "@react-navigation/stack": "^5.12.8",
    "crypto-js": "^4.0.0",
    "expo": "^42.0.0",
    "expo-ads-admob": "~10.1.2",
    "expo-av": "~9.2.3",
    "expo-blur": "~9.0.3",
    "expo-contacts": "~9.2.5",
    "expo-device": "~3.3.0",
    "expo-facebook": "~11.3.1",
    "expo-file-system": "~11.1.3",
    "expo-firebase-analytics": "~4.1.0",
    "expo-firebase-core": "~3.1.0",
    "expo-firebase-recaptcha": "^1.3.0",
    "expo-font": "~9.2.1",
    "expo-image-manipulator": "~9.2.2",
    "expo-image-picker": "~10.2.2",
    "expo-keep-awake": "~9.2.0",
    "expo-linking": "~2.3.1",
    "expo-location": "~12.1.2",
    "expo-network": "~3.2.0",
    "expo-permissions": "~12.1.1",
    "expo-secure-store": "~10.2.0",
    "expo-sms": "~9.2.3",
    "expo-updates": "~0.8.2",
    "firebase": "8.2.3",
    "lru-cache": "5.1.1",
    "lunr": "2.3.8",
    "react": "16.13.1",
    "react-native": "https://github.com/expo/react-native/archive/sdk-42.0.0.tar.gz",
    "react-native-country-picker-modal": "^2.0.0",
    "react-native-crypto-js": "^1.0.0",
    "react-native-gesture-handler": "~1.10.2",
    "react-native-keyboard-aware-scroll-view": "^0.9.3",
    "react-native-pager-view": "5.0.12",
    "react-native-safe-area-context": "3.2.0",
    "react-native-safe-area-view": "1.0.0",
    "react-native-scripts": "2.0.1",
    "react-native-scrollable-tab-view": "^1.0.0",
    "react-native-svg": "12.1.1",
    "react-native-tab-view": "^3.1.1",
    "react-native-vector-icons": "6.0.2",
    "react-native-webview": "11.6.2",
    "react-redux": "7.1.3",
    "redux": "4.0.0",
    "yarn": "^1.22.0"
  },
  "devDependencies": {
    "@babel/core": "~7.9.0",
    "@react-native-community/masked-view": "0.1.10",
    "babel": "6.23.0",
    "babel-plugin-module-alias": "1.6.0",
    "clamp": "1.0.1",
    "react-native-screens": "~3.4.0",
    "schedule": "0.4.0"
  },
  "expo": {
    "version": "6"
  }
}

I’m having a similar crash issue.

My app has been running in production for about a week, but now it’s crashing on app open.

To reproduce, I:

  • download from App Store
  • open and sign in (works fine)
  • force quit the app
  • try to reopen
  • it crashes upon open

The only things that I recall changing in App Store Connect were 1.) I added an In-App Purchase (however this would not affect the production app, since a new version must be submitted in order for the In-App Purchase to be approved) and 2.) I submitted another version which was rejected for a Privacy issue (but this should not affect the production).

Adrian, hope someone has a clue. My app also crashes before even appearing.

Meanwhile, you can have a look at the crash report on appleconnect by sending TestFlight feedback, just to see if it is similar or maybe you could understand it.

Also, you can run the simulator with these options, for me that shows an error (explained above).

expo r -c -i --no-dev --minify

FYI, expo 43 is officially released: https://blog.expo.dev/expo-sdk-43-aa9b3c7d5541

1 Like

Just a thought. When I upgraded from 42 to 43 I ran into a bug where starting the app after killing it (swipe up in iOS app switcher), would cause it to literally execute the JS bundle twice (simultaneously) on launch. For my app I could see duplicate REST calls and duplicate WebSocket connections before all hell broke loose. After looking around, I found 3 other people on Discord and elsewhere with the same issue (duplicate execution in 43). So it may be worth looking for signs of that if possible, and potentially rolling back to 42.

I’ve upgraded to SDK 43, thanks for that call out @bkamrani.

In doing so, this has caused my @bugsnag/expo node module to fail because it still seems to have a dependency on unimodules/core.

I ran grep -rl "@unimodules/core" node_modules

and this is what it printed, note all the bugsnag references…

node_modules/expo-file-system/CHANGELOG.md
node_modules/expo-modules-autolinking/build/platforms/android.js.map
node_modules/expo-modules-autolinking/build/platforms/android.js
node_modules/expo-modules-autolinking/src/platforms/android.ts
node_modules/expo-crypto/CHANGELOG.md
node_modules/expo-ads-admob/CHANGELOG.md
node_modules/expo-image-manipulator/CHANGELOG.md
node_modules/expo/bundledNativeModules.json
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-constants/package.json
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-constants/build/Constants.js
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-constants/build/ExponentConstants.js.map
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-constants/build/Constants.js.map
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-constants/build/ExponentConstants.js
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-constants/build/ExponentConstants.d.ts
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-constants/build/ExponentConstants.web.js.map
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-constants/build/ExponentConstants.web.js
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-constants/src/ExponentConstants.ts
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-constants/src/ExponentConstants.web.ts
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-constants/src/Constants.ts
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-device/package.json
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-device/build/ExpoDevice.js.map
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-device/build/Device.js
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-device/build/Device.js.map
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-device/build/ExpoDevice.web.js.map
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-device/build/ExpoDevice.d.ts
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-device/build/ExpoDevice.js
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-device/build/ExpoDevice.web.js
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-device/src/ExpoDevice.ts
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-device/src/ExpoDevice.web.ts
node_modules/@bugsnag/plugin-expo-device/node_modules/expo-device/src/Device.ts
node_modules/@bugsnag/expo/node_modules/expo-constants/package.json
node_modules/@bugsnag/expo/node_modules/expo-constants/build/Constants.js
node_modules/@bugsnag/expo/node_modules/expo-constants/build/ExponentConstants.js.map
node_modules/@bugsnag/expo/node_modules/expo-constants/build/Constants.js.map
node_modules/@bugsnag/expo/node_modules/expo-constants/build/ExponentConstants.js
node_modules/@bugsnag/expo/node_modules/expo-constants/build/ExponentConstants.d.ts
node_modules/@bugsnag/expo/node_modules/expo-constants/build/ExponentConstants.web.js.map
node_modules/@bugsnag/expo/node_modules/expo-constants/build/ExponentConstants.web.js
node_modules/@bugsnag/expo/node_modules/expo-constants/src/ExponentConstants.ts
node_modules/@bugsnag/expo/node_modules/expo-constants/src/ExponentConstants.web.ts
node_modules/@bugsnag/expo/node_modules/expo-constants/src/Constants.ts
node_modules/@bugsnag/plugin-expo-app/node_modules/expo-constants/package.json
node_modules/@bugsnag/plugin-expo-app/node_modules/expo-constants/build/Constants.js
node_modules/@bugsnag/plugin-expo-app/node_modules/expo-constants/build/ExponentConstants.js.map
node_modules/@bugsnag/plugin-expo-app/node_modules/expo-constants/build/Constants.js.map
node_modules/@bugsnag/plugin-expo-app/node_modules/expo-constants/build/ExponentConstants.js
node_modules/@bugsnag/plugin-expo-app/node_modules/expo-constants/build/ExponentConstants.d.ts
node_modules/@bugsnag/plugin-expo-app/node_modules/expo-constants/build/ExponentConstants.web.js.map
node_modules/@bugsnag/plugin-expo-app/node_modules/expo-constants/build/ExponentConstants.web.js
node_modules/@bugsnag/plugin-expo-app/node_modules/expo-constants/src/ExponentConstants.ts
node_modules/@bugsnag/plugin-expo-app/node_modules/expo-constants/src/ExponentConstants.web.ts
node_modules/@bugsnag/plugin-expo-app/node_modules/expo-constants/src/Constants.ts
node_modules/@bugsnag/delivery-expo/node_modules/expo-file-system/build/FileSystem.js
node_modules/@bugsnag/delivery-expo/node_modules/expo-file-system/build/ExponentFileSystem.js.map
node_modules/@bugsnag/delivery-expo/node_modules/expo-file-system/build/FileSystem.js.map
node_modules/@bugsnag/delivery-expo/node_modules/expo-file-system/build/ExponentFileSystem.js
node_modules/@bugsnag/delivery-expo/node_modules/expo-file-system/build/FileSystem.d.ts
node_modules/@bugsnag/delivery-expo/node_modules/expo-file-system/src/FileSystem.ts
node_modules/@bugsnag/delivery-expo/node_modules/expo-file-system/src/ExponentFileSystem.ts
node_modules/@bugsnag/delivery-expo/node_modules/expo-crypto/package.json
node_modules/@bugsnag/delivery-expo/node_modules/expo-crypto/build/ExpoCrypto.js
node_modules/@bugsnag/delivery-expo/node_modules/expo-crypto/build/ExpoCrypto.web.js
node_modules/@bugsnag/delivery-expo/node_modules/expo-crypto/build/ExpoCrypto.web.js.map
node_modules/@bugsnag/delivery-expo/node_modules/expo-crypto/build/ExpoCrypto.js.map
node_modules/@bugsnag/delivery-expo/node_modules/expo-crypto/build/ExpoCrypto.d.ts
node_modules/@bugsnag/delivery-expo/node_modules/expo-crypto/build/Crypto.js.map
node_modules/@bugsnag/delivery-expo/node_modules/expo-crypto/build/Crypto.js
node_modules/@bugsnag/delivery-expo/node_modules/expo-crypto/src/Crypto.ts
node_modules/@bugsnag/delivery-expo/node_modules/expo-crypto/src/ExpoCrypto.ts
node_modules/@bugsnag/delivery-expo/node_modules/expo-crypto/src/ExpoCrypto.web.ts
node_modules/expo-network/CHANGELOG.md
node_modules/expo-av/CHANGELOG.md
node_modules/expo-facebook/CHANGELOG.md
node_modules/expo-permissions/CHANGELOG.md
node_modules/expo-device/CHANGELOG.md
node_modules/expo-error-recovery/CHANGELOG.md
node_modules/expo-secure-store/CHANGELOG.md
node_modules/expo-sms/CHANGELOG.md

This causes my build to not work even locally. I’ve tried upgrading expo install @bugsnag/expo but it doesn’t seem to have any impact. Notice how this package was updated 20 days ago @bugsnag/expo - npm so it probably is still waiting for the upgrade.

Once I’ve figure out how to resolve this issue I will try your command.

expo r -c -i --no-dev --minify

1 Like

i’d suggest forking the library and removing that dependency, or adding a postinstall script to delete any of the packages installed. sorry for the hassle.

we have a discussion going around how to better handle third party libraries depending on expo packages: Depending on Expo modules in other packages · Discussion #13963 · expo/expo · GitHub

1 Like

Thanks @notbrent. Since we’re on this bugsnag topic I did a bit more digging into the bugsnag node_module and found that it is referencing old versions of the following npms:

delivery-expo:
    "expo-crypto": "~9.2.0",
    "expo-file-system": "~11.1.3"

plugin expo app:
    "expo-constants": "~11.0.1"

expo:
    "expo-constants": "~11.0.1"

plugin expo device:
    "expo-constants": "~11.0.1",
    "expo-device": "~3.3.0"

They should be:

    "expo-file-system": "~13.0.3",
    "expo-constants": "~12.1.3",
    "expo-crypto": "~10.0.3",
    "expo-device": "~4.0.3",

I’m going to take your advice and fork the bugsnag lib and then use npm link.

I’ll let you know how that goes. I’ve a pretty busy day today so stay tuned…

1 Like

Thank you @notbrent! I also noticed that I still have a lot of traces of “@unimodules/core” in my node_modules directory, as well as some traces of “react-native-unimodules”. I had removed “react-native-unimodules” from my package.json before the 43 upgrade per recommendation. How should I handle those? :roll_eyes: :thinking:

My turn to thank you @adriaanbalt!

grep -ril “react-native-unimodules”

./node_modules/expo-application/README.md
./node_modules/expo-image-picker/README.md
./node_modules/expo-file-system/README.md
./node_modules/expo-modules-autolinking/README.md
./node_modules/expo-crypto/README.md
./node_modules/expo-keep-awake/README.md
./node_modules/expo-asset/README.md
./node_modules/expo-localization/README.md
./node_modules/expo-google-sign-in/README.md
./node_modules/expo/node_modules/expo-file-system/README.md
./node_modules/expo/node_modules/expo-font/README.md
./node_modules/expo/node_modules/expo-modules-core/README.md
./node_modules/expo/bundledNativeModules.json
./node_modules/expo-print/README.md
./node_modules/expo-location/CHANGELOG.md
./node_modules/expo-location/README.md
./node_modules/expo-splash-screen/README.md
./node_modules/expo-font/README.md
./node_modules/expo-constants/README.md
./node_modules/expo-apple-authentication/README.md
./node_modules/expo-modules-core/README.md
./node_modules/expo-facebook/README.md
./node_modules/expo-cli/build/commands/utils/ProjectUtils.js
./node_modules/expo-cli/build/commands/utils/ProjectUtils.js.map
./node_modules/expo-cli/build/commands/eject/Eject.js.map
./node_modules/expo-cli/build/commands/eject/LegacyEject.js.map
./node_modules/expo-cli/build/commands/eject/Eject.js
./node_modules/expo-cli/build/commands/eject/LegacyEject.js
./node_modules/expo-permissions/README.md
./node_modules/expo-app-auth/README.md
./node_modules/expo-app-loading/README.md
./node_modules/expo-error-recovery/node_modules/expo-modules-core/README.md
./node_modules/expo-error-recovery/README.md

grep -ril “@unimodules/core”

./node_modules/expo-image-picker/package.json
./node_modules/expo-image-picker/build/ExponentImagePicker.js
./node_modules/expo-image-picker/build/ExponentImagePicker.web.js.map
./node_modules/expo-image-picker/build/ExponentImagePicker.d.ts
./node_modules/expo-image-picker/build/ExponentImagePicker.web.js
./node_modules/expo-image-picker/build/ExponentImagePicker.js.map
./node_modules/expo-image-picker/build/ImagePicker.js.map
./node_modules/expo-image-picker/build/ImagePicker.js
./node_modules/expo-image-picker/src/ImagePicker.ts
./node_modules/expo-image-picker/src/ExponentImagePicker.ts
./node_modules/expo-image-picker/src/ExponentImagePicker.web.ts
./node_modules/react-native-modals/modals-example/yarn.lock
./node_modules/expo-file-system/build/FileSystem.js
./node_modules/expo-file-system/build/ExponentFileSystem.js.map
./node_modules/expo-file-system/build/FileSystem.js.map
./node_modules/expo-file-system/build/ExponentFileSystem.js
./node_modules/expo-file-system/build/FileSystem.d.ts
./node_modules/expo-file-system/src/FileSystem.ts
./node_modules/expo-file-system/src/ExponentFileSystem.ts
./node_modules/expo-modules-autolinking/build/platforms/android.js.map
./node_modules/expo-modules-autolinking/build/platforms/android.js
./node_modules/expo-modules-autolinking/src/platforms/android.ts
./node_modules/expo-crypto/package.json
./node_modules/expo-crypto/build/ExpoCrypto.js
./node_modules/expo-crypto/build/ExpoCrypto.web.js
./node_modules/expo-crypto/build/ExpoCrypto.web.js.map
./node_modules/expo-crypto/build/ExpoCrypto.js.map
./node_modules/expo-crypto/build/ExpoCrypto.d.ts
./node_modules/expo-crypto/build/Crypto.js.map
./node_modules/expo-crypto/build/Crypto.js
./node_modules/expo-crypto/src/Crypto.ts
./node_modules/expo-crypto/src/ExpoCrypto.ts
./node_modules/expo-crypto/src/ExpoCrypto.web.ts
./node_modules/expo-localization/build/ExpoLocalization.native.js
./node_modules/expo-localization/build/ExpoLocalization.js.map
./node_modules/expo-localization/build/ExpoLocalization.js
./node_modules/expo-localization/build/ExpoLocalization.native.d.ts
./node_modules/expo-localization/build/ExpoLocalization.native.js.map
./node_modules/expo-localization/src/ExpoLocalization.ts
./node_modules/expo-localization/src/ExpoLocalization.native.ts
./node_modules/expo-google-sign-in/build/GoogleUser.js.map
./node_modules/expo-google-sign-in/build/ExpoGoogleSignIn.js
./node_modules/expo-google-sign-in/build/GoogleSignIn.js
./node_modules/expo-google-sign-in/build/GoogleSignIn.js.map
./node_modules/expo-google-sign-in/build/GoogleUser.js
./node_modules/expo-google-sign-in/build/ExpoGoogleSignIn.d.ts
./node_modules/expo-google-sign-in/build/ExpoGoogleSignIn.js.map
./node_modules/expo-google-sign-in/src/GoogleUser.ts
./node_modules/expo-google-sign-in/src/ExpoGoogleSignIn.ts
./node_modules/expo-google-sign-in/src/GoogleSignIn.ts
./node_modules/expo/node_modules/expo-file-system/CHANGELOG.md
./node_modules/expo/bundledNativeModules.json
./node_modules/expo-print/build/ExponentPrint.js
./node_modules/expo-print/build/ExponentPrint.d.ts
./node_modules/expo-print/build/Print.js.map
./node_modules/expo-print/build/ExponentPrint.js.map
./node_modules/expo-print/build/Print.js
./node_modules/expo-print/src/Print.ts
./node_modules/expo-print/src/ExponentPrint.ts
./node_modules/expo-location/build/GeolocationPolyfill.js
./node_modules/expo-location/build/ExpoLocation.d.ts
./node_modules/expo-location/build/LocationEventEmitter.web.js.map
./node_modules/expo-location/build/GeolocationPolyfill.js.map
./node_modules/expo-location/build/ExpoLocation.js
./node_modules/expo-location/build/LocationEventEmitter.js
./node_modules/expo-location/build/LocationEventEmitter.web.js
./node_modules/expo-location/build/LocationEventEmitter.js.map
./node_modules/expo-location/build/LocationGoogleGeocoding.js
./node_modules/expo-location/build/LocationSubscribers.js.map
./node_modules/expo-location/build/LocationGoogleGeocoding.js.map
./node_modules/expo-location/build/Location.js
./node_modules/expo-location/build/LocationEventEmitter.web.d.ts
./node_modules/expo-location/build/Location.js.map
./node_modules/expo-location/build/ExpoLocation.js.map
./node_modules/expo-location/build/LocationEventEmitter.d.ts
./node_modules/expo-location/src/LocationGoogleGeocoding.ts
./node_modules/expo-location/src/LocationSubscribers.ts
./node_modules/expo-location/src/Location.ts
./node_modules/expo-location/src/GeolocationPolyfill.ts
./node_modules/expo-location/src/ExpoLocation.ts
./node_modules/expo-location/src/LocationEventEmitter.ts
./node_modules/expo-location/src/LocationEventEmitter.web.ts
./node_modules/expo-splash-screen/package.json
./node_modules/expo-splash-screen/build/ExpoSplashScreen.d.ts
./node_modules/expo-splash-screen/build/SplashScreen.js
./node_modules/expo-splash-screen/build/ExpoSplashScreen.js
./node_modules/expo-splash-screen/build/ExpoSplashScreen.js.map
./node_modules/expo-splash-screen/build/SplashScreen.js.map
./node_modules/expo-splash-screen/src/SplashScreen.ts
./node_modules/expo-splash-screen/src/ExpoSplashScreen.ts
./node_modules/expo-font/build/FontLoader.js
./node_modules/expo-font/build/ExpoFontLoader.d.ts
./node_modules/expo-font/build/Font.js
./node_modules/expo-font/build/ExpoFontLoader.js.map
./node_modules/expo-font/build/ExpoFontLoader.js
./node_modules/expo-font/build/Font.js.map
./node_modules/expo-font/build/FontLoader.js.map
./node_modules/expo-font/build/FontLoader.web.js.map
./node_modules/expo-font/build/ExpoFontLoader.web.js
./node_modules/expo-font/build/FontLoader.web.js
./node_modules/expo-font/build/ExpoFontLoader.web.js.map
./node_modules/expo-font/src/FontLoader.web.ts
./node_modules/expo-font/src/ExpoFontLoader.web.ts
./node_modules/expo-font/src/Font.ts
./node_modules/expo-font/src/FontLoader.ts
./node_modules/expo-font/src/ExpoFontLoader.ts
./node_modules/expo-constants/package.json
./node_modules/expo-constants/build/Constants.js
./node_modules/expo-constants/build/ExponentConstants.js.map
./node_modules/expo-constants/build/Constants.js.map
./node_modules/expo-constants/build/ExponentConstants.js
./node_modules/expo-constants/build/ExponentConstants.d.ts
./node_modules/expo-constants/build/ExponentConstants.web.js.map
./node_modules/expo-constants/build/ExponentConstants.web.js
./node_modules/expo-constants/src/ExponentConstants.ts
./node_modules/expo-constants/src/ExponentConstants.web.ts
./node_modules/expo-constants/src/Constants.ts
./node_modules/expo-apple-authentication/build/ExpoAppleAuthentication.js.map
./node_modules/expo-apple-authentication/build/AppleAuthentication.d.ts
./node_modules/expo-apple-authentication/build/AppleAuthentication.js.map
./node_modules/expo-apple-authentication/build/ExpoAppleAuthentication.d.ts
./node_modules/expo-apple-authentication/build/ExpoAppleAuthentication.js
./node_modules/expo-apple-authentication/build/ExpoAppleAuthenticationButton.js
./node_modules/expo-apple-authentication/build/AppleAuthentication.js
./node_modules/expo-apple-authentication/build/ExpoAppleAuthenticationButton.js.map
./node_modules/expo-apple-authentication/src/ExpoAppleAuthentication.ts
./node_modules/expo-apple-authentication/src/ExpoAppleAuthenticationButton.ts
./node_modules/expo-apple-authentication/src/AppleAuthentication.ts
./node_modules/expo-facebook/package.json
./node_modules/expo-facebook/build/ExponentFacebook.js.map
./node_modules/expo-facebook/build/ExponentFacebook.js
./node_modules/expo-facebook/build/ExponentFacebook.d.ts
./node_modules/expo-facebook/build/Facebook.js
./node_modules/expo-facebook/build/Facebook.js.map
./node_modules/expo-facebook/src/ExponentFacebook.ts
./node_modules/expo-facebook/src/Facebook.ts
./node_modules/expo-google-app-auth/build/Google.js
./node_modules/expo-google-app-auth/build/Google.js.map
./node_modules/expo-google-app-auth/src/Google.ts
./node_modules/expo-permissions/build/ExpoPermissions.js
./node_modules/expo-permissions/build/ExpoPermissions.js.map
./node_modules/expo-permissions/build/ExpoPermissions.d.ts
./node_modules/expo-permissions/src/ExpoPermissions.ts
./node_modules/expo-app-auth/build/AppAuth.js.map
./node_modules/expo-app-auth/build/ExpoAppAuth.web.js
./node_modules/expo-app-auth/build/ExpoAppAuth.web.js.map
./node_modules/expo-app-auth/build/ExpoAppAuth.js.map
./node_modules/expo-app-auth/build/ExpoAppAuth.d.ts
./node_modules/expo-app-auth/build/AppAuth.js
./node_modules/expo-app-auth/build/ExpoAppAuth.js
./node_modules/expo-app-auth/src/ExpoAppAuth.ts
./node_modules/expo-app-auth/src/AppAuth.ts
./node_modules/expo-app-auth/src/ExpoAppAuth.web.ts
./node_modules/expo-app-loading/package.json
./node_modules/expo-error-recovery/CHANGELOG.md

the readmes are to be expected (for react-native-unimodules results).

for @unimodules/core, it looks like you are using old versions of many packages. you should run expo doctor in your project

1 Like

Thank you very much, Brent!! @notbrent.
I was able to eventually resolve the issue… by incrementally rolling back the app to 43>42>41>40 and then eventually to the state of the last working appstore-uploaded version. In doing so I noticed that the crash is actually not related to SDK upgrade and has been (silently!) introduced early on. In my case, it was a block that I had added to GoogleService-Info.plist file. I think since OTA did not include this file, it passed through silently. Once I started submitting a new binary, the crash showed itself. However, I wished there was a better error message for the crash (there was none), as I ended up building and uploading so many binaries to get this one.

I hope you Adrian @adriaanbalt and Jake @jake17007 you find the cause too, if not already. Also thank you @jpooton!

<plist version="1.0">
   <dict>
      <key>CLIENT_ID</key>
      <string>...
  </dict>
  <dict> [this block I added for analytics googleservice. this caused the crash]
  </dict>
</plist>
1 Like

@bugsnag/expo has updated their package to 7.14.0 which appears to have removed
@unimodules/core references. I’m rebuilding to determine if this has fixed my issues.

this did not solve my problem. i will need to continue to investigate. at this point in time none of my node_modules includes @unimodules/core

I looked closely at this file and it hasn’t changed since I started the project back in SDK 35. I re-generated this file but it is identical.

What ended up working for me was building a completely new expo project by running
expo init.

Then I copied all of my src code into this newly created directory, replaced the package.json wholesale with the old one, and then one-by-one adding pieces back into the app.json. I did NOT add the reference to GoogleService-Info.plist. In other words, my ios object in my app.json looks like this:

    "ios": {
      "supportsTablet": true,
      "bundleIdentifier": "YOUR BUNDLE ID"
    },

I uploaded the new binary into the AppStore, ran it through TestFlight, and voila the app will open without crashing immediately.

Side note: I haven’t yet been able to fully verify if Firebase is working. I did add my Firebase config properties into the app.json as suggested in Firebase SDK documentation (I copied this over from my old app.json). However, I have noticed a new error with Phone Verification, specifically expo-firebase-recaptcha.

Typeerror: verifier._reset is not a function. (In 'verifier._reset()', 'verifier._reset' is undefined)

This may be due to the recent Firebase 9.5.0 update. I’ve not yet been able to find a solution for this. I will create a new Forum post about that issue.

In summary!

It appears that this issue is coming from the GoogleService-Info.plist and removing it entirely from the app.json has fixed the issue of the project crashing. Unlike @bkamrani I did not have any new changes that would make me think it would break. It is possible that the requirements around this file’s structure has changed and no one has explicitly said what they should be; downloading a new version from Firebase renders the exact same structure as before. If you have a similar issue it may be worth removing this file from app.json and checking if a new TestFlight build will not crash.

After uploading lots and lots of versions to further break down what may be wrong I discovered that the GoogleService-Info.plist was in fact not the issue for me. However, what was the issue is:

  "config": {
    "googleMobileAdsAppId": "ca-app-pub-111/111" 
  }

section within the ios object of app.json:

"ios": {
  "supportsTablet": true,
  "bundleIdentifier": "com.balt.greatflix.test",
  "googleServicesFile": "./GoogleService-Info.plist",
  "config": {
    "googleMobileAdsAppId": "ca-app-pub-111/111" <--- this and the containing config object
  }
}

Once I removed the config the app doesn’t crash. I’ll look into what is the correct syntax for this and report back if I find out.

In summary, it wasn’t the GoogleService-Info.plist but rather the config object’s googleMobileAdsAppId.

Any update on this syntax. My build is failing similarly