iosreact-nativeexpoeasexpo-build

Expo development build: No bundle url present


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.

enter image description here

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": {}
  }
}

Solution

  • 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....