Expo

Zero-config fallback

If eas.json is present and no buildtree.config.json exists, the CLI runs eas build --local --platform <platform> automatically.

buildtree publish ios --env dev
buildtree publish android --env dev

The fallback uses your default EAS profile.

Custom configuration

Override the defaults with buildtree.config.json:

{
  "buildtree": {
    "builds": {
      "ios": {
        "command": "eas build --local --platform ios --profile preview",
        "artifact": "build-*.ipa"
      },
      "android": {
        "command": "eas build --local --platform android --profile preview",
        "artifact": "build-*.apk"
      }
    }
  }
}

The CLI selects the most recent file matching the glob.

iOS provisioning

eas build --local uses EAS-managed credentials. For ad-hoc distribution, the provisioning profile must include every tester's UDID. See iOS distribution.

After adding new UDIDs in Apple Developer, run eas credentials to regenerate the profile.

Parallel branch installs

Feature-branch builds that share a bundle id overwrite each other on a test device. For side-by-side installs, use variant bundle ids per profile:

{
  "build": {
    "preview": {
      "ios": {
        "bundleIdentifier": "com.acme.app.preview"
      }
    }
  }
}
Expo · Framework guide | buildtree docs