Crash on production iOS but working fine on ExpoGo and standalone

Hello community!

The last update on my app is crashing when hitting the root router (react navigation)

Some background:

  • Using Managed workflow
  • eas-cli version: 3.17.01

My debug log:

Incident Identifier: A45A65B2-31AC-47B8-BB57-EF813A977C9F
Beta Identifier:     A66861AD-7877-459B-AB86-E5BABE9AE0B9
Hardware Model:      iPhone14,4
Process:             Foodhi [17532]
Path:                /private/var/containers/Bundle/Application/6B6E18A9-ED4A-4D55-8D1F-DC676144DAE5/Foodhi.app/Foodhi
Identifier:          com.foodhi.foodhiapp
Version:             1.0.5 (1.0.61)
AppStoreTools:       14E221
AppVariant:          1:iPhone14,4:16
Beta:                YES
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.foodhi.foodhiapp [3681]

Date/Time:           2023-08-02 20:28:54.4107 +0200
Launch Time:         2023-08-02 18:34:28.3462 +0200
OS Version:          iPhone OS 16.3.1 (20D67)
Release Type:        User
Baseband Version:    2.40.01
Report Version:      104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread:  9

Application Specific Information:
abort() called

...
...

Thread 9 name:   Dispatch queue: com.facebook.react.AmplitudeReactNativeQueue
Thread 9 Crashed:
0   libsystem_kernel.dylib        	       0x1d5c13674 __pthread_kill + 8
1   libsystem_pthread.dylib       	       0x1e63771ac pthread_kill + 268
2   libsystem_c.dylib             	       0x19f774c8c abort + 180
3   libc++abi.dylib               	       0x1e62b6b8c abort_message + 132
4   libc++abi.dylib               	       0x1e62a6a80 demangling_terminate_handler() + 336
5   libobjc.A.dylib               	       0x191295d3c _objc_terminate() + 144
6   Foodhi                        	       0x10462af64 0x1043ac000 + 2617188
7   libc++abi.dylib               	       0x1e62b5f28 std::__terminate(void (*)()) + 20
8   libc++abi.dylib               	       0x1e62b5ec4 std::terminate() + 56
9   libdispatch.dylib             	       0x19f710f9c _dispatch_client_callout + 40
10  libdispatch.dylib             	       0x19f718640 _dispatch_lane_serial_drain + 672
11  libdispatch.dylib             	       0x19f71918c _dispatch_lane_invoke + 384
12  libdispatch.dylib             	       0x19f723e10 _dispatch_workloop_worker_thread + 652
13  libsystem_pthread.dylib       	       0x1e6370df8 _pthread_wqthread + 288
14  libsystem_pthread.dylib       	       0x1e6370b98 start_wqthread + 8

package.json

{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "eject": "expo eject",
    "postinstall": "patch-package"
  },
  "dependencies": {
    "@amplitude/analytics-react-native": "^1.3.2",
    "@expo-google-fonts/quicksand": "^0.2.0",
    "@expo-google-fonts/rubik": "^0.2.0",
    "@expo/html-elements": "^0.3.1",
    "@expo/ngrok": "^4.1.0",
    "@react-native-async-storage/async-storage": "~1.17.3",
    "@react-native-community/datetimepicker": "6.5.2",
    "@react-native-picker/picker": "2.4.8",
    "@react-navigation/drawer": "^6.1.4",
    "@react-navigation/native": "^6.0.2",
    "@react-navigation/stack": "^6.0.7",
    "@sentry/react-native": "4.9.0",
    "axios": "^0.21.1",
    "babel-plugin-inline-dotenv": "^1.6.0",
    "base-64": "^1.0.0",
    "dayjs": "^1.11.7",
    "deprecated-react-native-prop-types": "^2.3.0",
    "expo": "^47.0.0",
    "expo-application": "~5.0.1",
    "expo-camera": "~13.1.0",
    "expo-constants": "~14.0.2",
    "expo-dev-client": "~2.0.1",
    "expo-device": "~5.0.0",
    "expo-font": "~11.0.1",
    "expo-image-picker": "~14.0.2",
    "expo-linking": "~3.3.1",
    "expo-location": "~15.0.1",
    "expo-notifications": "~0.17.0",
    "expo-splash-screen": "~0.17.5",
    "expo-status-bar": "~1.4.2",
    "expo-updates": "~0.15.6",
    "formik": "^2.2.9",
    "html-entities": "^2.3.3",
    "jwt-decode": "^3.1.2",
    "moment": "^2.29.4",
    "patch-package": "^6.5.1",
    "postinstall-postinstall": "^2.1.0",
    "react": "18.1.0",
    "react-native": "0.70.8",
    "react-native-bouncy-checkbox": "^3.0.4",
    "react-native-collapsible": "^1.6.0",
    "react-native-dotenv": "^3.2.0",
    "react-native-elements": "^3.4.3",
    "react-native-form-validator": "^0.4.0",
    "react-native-geocoding": "^0.5.0",
    "react-native-gesture-handler": "~2.8.0",
    "react-native-google-places-autocomplete": "^2.4.1",
    "react-native-maps": "1.3.2",
    "react-native-phone-number-input": "^2.1.0",
    "react-native-picker-select": "^8.0.4",
    "react-native-popover-view": "^5.1.7",
    "react-native-reanimated": "~2.12.0",
    "react-native-safe-area-context": "4.4.1",
    "react-native-safe-area-view": "^1.1.1",
    "react-native-screens": "~3.18.0",
    "react-native-snap-carousel": "^3.9.1",
    "react-native-super-grid": "^4.1.3",
    "react-native-vector-icons": "^9.2.0",
    "react-native-woocommerce-api": "^1.8.8",
    "react-redux": "^7.2.4",
    "redux": "^4.1.1",
    "redux-devtools-extension": "^2.13.9",
    "redux-persist": "^6.0.0",
    "redux-thunk": "^2.3.0",
    "sentry-expo": "~6.0.0",
    "yup": "^0.32.11"
  },
  "devDependencies": {
    "@babel/core": "^7.19.3"
  },
  "private": true
}

eas.json

{
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal",
      "channel": "development",
      "ios": {
        "resourceClass": "m-medium"
      }
    },
    "preview": {
      "ios": {
        "simulator": true,
        "image": "latest",
        "resourceClass": "m-medium"
      },
      "distribution": "internal",
      "channel": "preview"
    },
    "production": {
      "channel": "production",
      "ios": {
        "resourceClass": "m-medium"
      }
    }
  },
  "cli": {
    "version": ">= 0.52.0"
  }
}


Where Amplitude is being initialised (once the user profile is loaded):

const RootRouter = () => {

    const initStackNavigator = createStackNavigator();

    const dispatch = useDispatch();
    const userLoggedIn = useSelector((state) => state.auth.loggedIn);
    const restaurantProfileId = useSelector((state) => state.restaurantProfile.id);
    const loaded = useSelector(state => state.restaurantProfile.profileLoaded);

    useEffect(() => {
        if (loaded) {
            // GET PROFILE DETAILS
            dispatch(readProfileDetails())
            // PROCESS PUSH NOTIFICATION TOKEN
            pushNotificationsSetUp(userLoggedIn, restaurantProfileId)

            dispatch(setScreenName(navigationRef.current.getCurrentRoute().name)) 
        }
    }, [loaded])

    // INITIALIZE AMPLITUDE ANALYTICS ONCE THE USER ID IS RETREIVED
    useEffect(() => {
        if (restaurantProfileId) {
            init(process.env.AMPLITUDE_API, restaurantProfileId, {
                serverZone: 'EU',
            });
        }
    }, [loaded])

Any help would be greatly appreciated!