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.
🚨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:
--packageRunnerCLI flagEOAS_PACKAGE_RUNNERenvironment variablepackageManagerfield in the nearestpackage.json(e.g."packageManager": "bun@1.3.6"→bunx)- Falls back to
npx
packageManager value | Resolved runner |
|---|---|
bun@x.x.x | bunx |
pnpm@x.x.x | pnpx |
yarn@x.x.x | npx |
npm@x.x.x | npx |
# 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)