Unable to connect to expo dev client on physical device.

We are trying to test local changes on a physical device using expo-dev-client, but the dev client is not connecting correctly.

In our expo project, I made sure to add import 'expo-dev-client'; to the first line of our main file. We are using expo-dev-client=1.1.1 and expo=45.0.8.

We created a build profile

    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },

Then we ran eas build --profile development --platform ios and installed the app on my iPhone.

Locally, we ran expo start --dev-client --clear. We are able to connect a simulator build to this and see live changes, but the physical device build above would not show any local changes.

The dev client on a physical device will hang on the splash screen for a few seconds, and then load the application, but they will not contain any local changes. For example, if I remove all components from the screen locally, the dev client will show the old screen with all the old components. The CLI will show Started Metro Bundler but never iOS Bundling complete.

On occasion, the dev client will show the error

Timed out waiting for modules to be invalidated

but not every time.

Anyone know why this may be happening?

Just to update with the solution - the issue was we were using npm workspaces and expo-dev-client was in a shared package.json but not in the app’s package.json. Seemingly EAS does not install pods for any package outside of the apps/package.json (even though the Install Dependencies step correctly handles npm workspaces). Fixed by adding expo-dev-client to the app’s package.json file.

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.