Skip to main content

Publish OTA updates

Runtime version​

EOAS uses official Expo packages to resolve the runtime version of your project. It supports the fingerprint policy.

Publish an update​

To publish an update, run the following command in your Expo project:

npx eoas publish --branch <branch-name> [--nonInteractive] [--outputDir <outputDir>] [--platform <platform>] [--packageRunner <runner>]

This command will retrieve the expo credentials from your .expo/state.json file or an EXPO_TOKEN in your runtime environment to authenticate the request to the Expo API.

warning

🚨EOAS publish will create a new build of your app. Do not forget to pass the necessary environment variables to the runtime environment. Example: EXPO_TOKEN=your_token RELEASE_CHANNEL=staging npx eoas publish --branch <branch-name>. Or with dotenv: dotenv -e .env.local -- npx eoas publish --branch <branch-name>.

Package runner​

By default, EOAS uses npx to spawn Expo CLI commands (expo export, expo config). If your project uses a different package manager, you can override this.

Resolution priority:

  1. --packageRunner CLI flag
  2. EOAS_PACKAGE_RUNNER environment variable
  3. packageManager field in the nearest package.json (e.g. "packageManager": "bun@1.3.6" → bunx)
  4. Falls back to npx
packageManager valueResolved runner
bun@x.x.xbunx
pnpm@x.x.xpnpx
yarn@x.x.xnpx
npm@x.x.xnpx
# Auto-detected from package.json (zero config)
npx eoas publish --branch production

# Explicit flag
npx eoas publish --branch production --packageRunner bunx

# Via environment variable
EOAS_PACKAGE_RUNNER=bunx eoas publish --branch production

CI/CD​

You can automate the process of publishing updates by integrating the npx eoas publish --nonInteractive command in your CI/CD pipeline. However, you need to make sure that the EXPO_TOKEN is set up in your CI/CD environment. (Do not forget the --nonInteractive flag to avoid interactive prompts)