I have an expo-managed app with native packages that runs fine on my simulator with npx expo run:ios
. I can also run it on my physical device with npx expo run:ios --device
However, when I try to use eas build --profile development --platform ios
, although the build is finished successfully, upon scanning the QR code with my iPhone, I get this error:
No bundle URL present.
Make sure you're running a packager server or have included a .jsbundle file in your application bundle.
My eas.json
:
{
"cli": {
"version": ">= 3.17.0"
},
"build": {
"development": {
"distribution": "internal",
"android": {
"gradleCommand": ":app:assembleDebug"
},
"ios": {
"buildConfiguration": "Debug"
},
"env": {
"BE_BASE_URL": "https://api.sotravel.me"
}
},
"preview": {
"distribution": "internal"
},
"production": {
"env": {
"BE_BASE_URL": "https://api.sotravel.me"
}
}
},
"submit": {
"production": {}
}
}
I eventually fixed this by adding "distribution": "internal",
to my eas.json
after seeing this page on the Expo docs:
{
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal"
},
"production": {}
}
}
With this option set to true, the EAS CLI then prompted me to install expo-dev-client
. Although it's equivalent to the fields:
"android": {
"gradleCommand": ":app:assembleDebug"
},
"ios": {
"buildConfiguration": "Debug"
},
... those didn't prompt me to install expo-dev-client
, which was apparently necessary to run the development build. And those were the auto-generated configs from eas build:configure
. Hm....