EAS Build development client crashing when development menu shown

Since switching to EAS my development client is blowing up whenever I open the dev menu on a physical device (either by shaking the device or three finger touch). There’s no error message in the console when running yarn start ( APP_VARIANT=dev expo start --dev-client ).

Note that debugging remote JS is disabled.

The built dev client’s dev menu works fine when the project is not open, it only crashes when the project is being served locally and dev menu is triggered on a physical device.

I’ve:

  • tried multiple builds
  • have checked that all my expo dependencies are on the latest version
  • spent hours searching for others with this issue

but haven’t managed to make any headway.

This doesn’t happen when running the iOS simulator build. I’m struggling to know how to debug this or make any headway without any error message or logs, has anyone ever heard of this or got any tips on how to debug something like this? I’d love it if there was an error message in the console so I had something to start with.

Any guidance on how best to pin this issue down is much appreciated!


Details

Workflow: managed

EAS version:

$ eas -v
eas-cli/0.44.1 darwin-x64 node-v14.18.1

eas.json:

{
  "cli": {
    "version": ">= 0.42.4"
  },
  "build": {
    "dev": {
      "developmentClient": true,
      "distribution": "internal",
      "env": {
        "APP_VARIANT": "dev"
      },
      "releaseChannel": "dev"
    },
    "dev:simulator": {
      "developmentClient": true,
      "distribution": "internal",
      "env": {
        "APP_VARIANT": "dev"
      },
      "ios": {
        "simulator": true
      },
      "releaseChannel": "dev"
    },
    "staging": {
      "distribution": "internal",
      "env": {
        "APP_VARIANT": "staging"
      },
      "releaseChannel": "staging"
    },
    "prod": {
      "releaseChannel": "prod-v1"
    }
  },
  "submit": {
    "prod": {}
  }
}

package.json:

{
  "private": true,
  "name": "Blocks",
  "version": "0.1.0",
  "scripts": {
    "start": "APP_VARIANT=dev expo start --dev-client",
    "android": "expo run:android",
    "ios": "expo run:ios",
    "web": "expo start --web",
    "eject": "expo eject",
    "build:dev": "eas build --platform ios --profile dev",
    "build:dev:sim": "eas build --platform ios --profile dev:simulator",
    "build:staging": "eas build --platform ios --profile staging",
    "build:prod": "eas build --platform ios --profile prod"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "dependencies": {
    "@expo-google-fonts/work-sans": "^0.2.0",
    "@expo/metro-config": "^0.3.8",
    "@expo/vector-icons": "^12.0.0",
    "@react-native-async-storage/async-storage": "~1.15.0",
    "@react-native-clipboard/clipboard": "^1.8.5",
    "@react-native-community/datetimepicker": "4.0.0",
    "@react-native-community/masked-view": "^0.1.10",
    "@react-native-picker/picker": "2.2.1",
    "@react-navigation/native": "^6.0.6",
    "@react-navigation/stack": "^6.0.11",
    "@sentry/react-native": "^3.2.10",
    "emoji-datasource": "^6.0.0",
    "expo": "^44.0.0",
    "expo-app-loading": "~1.3.0",
    "expo-application": "~4.0.1",
    "expo-blur": "~11.0.0",
    "expo-constants": "~13.0.0",
    "expo-dev-client": "~0.8.0",
    "expo-device": "~4.1.0",
    "expo-haptics": "~11.1.0",
    "expo-linking": "~3.0.0",
    "expo-notifications": "~0.14.0",
    "expo-sensors": "~11.1.0",
    "expo-splash-screen": "~0.14.1",
    "expo-status-bar": "~1.2.0",
    "expo-updates": "~0.11.3",
    "immer": "^8.0.0",
    "lodash": "^4.17.21",
    "moment": "^2.29.1",
    "react": "17.0.1",
    "react-dom": "17.0.1",
    "react-hook-form": "^6.14.2",
    "react-native": "0.64.3",
    "react-native-gesture-handler": "~2.1.0",
    "react-native-get-random-values": "~1.7.0",
    "react-native-keyboard-aware-scroll-view": "^0.9.5",
    "react-native-markdown-renderer": "^3.2.8",
    "react-native-modal-datetime-picker": "^9.2.0",
    "react-native-safe-area-context": "3.3.2",
    "react-native-screens": "~3.10.1",
    "react-native-svg": "12.1.1",
    "react-native-tailwindcss": "^1.1.11",
    "react-native-web": "0.17.1",
    "react-redux": "^7.2.2",
    "redux": "^4.0.5",
    "redux-persist": "^6.0.0",
    "redux-persist-expo-filesystem": "^2.0.0",
    "redux-sentry-middleware": "^0.2.2",
    "redux-thunk": "^2.3.0",
    "reselect": "^4.0.0",
    "sentry-expo": "^4.0.0",
    "styled-components": "^5.2.1",
    "uuid": "^8.3.2"
  },
  "devDependencies": {
    "@babel/core": "^7.12.9",
    "@types/styled-components": "^5.1.19",
    "babel-plugin-module-resolver": "^4.0.0",
    "babel-preset-expo": "9.0.1",
    "eslint": "^6.8.0",
    "eslint-config-prettier": "^6.10.1",
    "eslint-plugin-prettier": "^3.1.2",
    "eslint-plugin-react": "^7.19.0",
    "eslint-plugin-react-native": "^3.8.1",
    "prettier": "^2.0.4",
    "react-native-svg-transformer": "^0.20.0",
    "typescript": "~4.3.5"
  }
}