By default, expo-updates will target builds by Expo SDK version. It's kinda odd to be honest.

To answer your question, you would want to configure runtimeVersion.policy to nativeVersion. It is documented here.

You could set a specific version if you want but changing it to nativeVersion will let expo generate it for you. From the docs:

The runtime version associated with this manifest. Set this to {"policy": "nativeVersion"} to generate it automatically.

After setting it, your updates should now target that specific version+build automatically e.g. 1.0.1+69.

Example app.json

{
  "expo": {
    "runtimeVersion": {
      "policy": "nativeVersion"
    }
  }
}
Answer from lodev09 on Stack Overflow
🌐
Expo Documentation
docs.expo.dev › eas-update › introduction
EAS Update - Expo Documentation
EAS Update makes fixing small bugs and pushing quick fixes a snap in between app store submissions. It accomplishes this by enabling an app to update its own non-native pieces (such as JS, styling, and images) over-the-air.
🌐
Expo Documentation
docs.expo.dev › eas-update › getting-started
Get started with EAS Update - Expo Documentation
This will ensure that Expo is able to configure React Native to load assets, such as images, that are included in updates. If you do not use registerRootComponent, you may find that your assets will not be available in release builds. In a simple app created with React Native Community CLI, the diff would look like this: ... After making that change, update your MainActivity and AppDelegate to use the module name "main" instead of your app name. ... EAS CLI is the command line app you will use to interact with EAS services from your terminal.
🌐
Expo Documentation
docs.expo.dev › eas-update › how-it-works
How EAS Update works - Expo Documentation
EAS Update is a service that allows you to deliver small bug fixes and updates to your users immediately as you work on your next app store release. Making an update available to builds involves creating a link between a build and an update.
🌐
Expo Documentation
docs.expo.dev › build › updates
Using EAS Update - Expo Documentation
In particular, you can configure the channel property in eas.json and EAS Build will take care of updating it in your native project at build time. This document covers concerns specific to using expo-updates library with EAS Build.
🌐
GitHub
github.com › expo › eas-cli
GitHub - expo/eas-cli: Fastest way to build, submit, and update iOS and Android apps
USAGE $ eas update [--branch <value>] [--channel <value>] [-m <value>] [--input-dir <value>] [--skip-bundler] [--clear-cache] [--emit-metadata] [--rollout-percentage <value>] [-p android|ios|all] [--auto] [--private-key-path <value>] [--environment <value>] [--json --non-interactive] FLAGS -m, --message=<value> A short message describing the update -p, --platform=(android|ios|all) [default: all] --auto Use the current git branch and commit message for the EAS branch and update message --branch=<value> Branch to publish the update group on --channel=<value> Channel that the published update sho
Starred by 1.2K users
Forked by 162 users
Languages   TypeScript
🌐
DEV Community
dev.to › nour_abdou › react-native-ota-updates-with-expo-eas-step-by-step-guide-best-practices-1idk
React Native OTA Updates with Expo EAS: Step-by-Step Guide & Best Practices - DEV Community
May 12, 2025 - This command will inject the proper configuration into both AndroidManifest.xml and Expo.plist. Note: Typically, you might use two channels: test and production. Below is a list of commonly used commands for managing updates, channels, and branches. eas update --branch [branch-name] --message "Your update message"
🌐
Reddit
reddit.com › r/expo › how to do eas update?
r/expo on Reddit: How to do EAS update?
May 31, 2023 -

I'm seriously confused with all this talk about channels, branches and whatnot.

How would I do to be able to push changes directly to my production build?

When I do my builds, i just do:

eas build --platform ios --auto-submit

I guess that uses the production setting below?

eas.json

{
  "cli": {
    "version": ">= 3.10.2"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal",
      "android": {
        "buildType": "apk"
      }
    },
    "development-simulator": {
      "developmentClient": true,
      "distribution": "internal",
      "ios": {
        "simulator": true
      }
    },
    "preview": {
      "distribution": "internal"
    },
    "production": {}
  },
  "submit": {
    "production": {}
  }
}
Find elsewhere
🌐
Reddit
reddit.com › r/expo › known limitations of eas update?
r/expo on Reddit: Known limitations of EAS Update?
August 1, 2024 -

Hello,

I'm new to React Native and Expo, and I've been exploring the EAS Service. I find the EAS Update feature particularly interesting. From what I understand, it allows you to bypass the traditional process of building, submitting, and waiting for verification from the iOS App Store or Google Play Store.

However, it seems that EAS Update is intended mainly for small bug fixes and minor changes. Is this correct? What prevents us from releasing the app only once on the stores and then using EAS Update to deliver major changes and new versions of the app?

Could someone explain the possible limitations of using EAS Update in this way?

Thanks!

🌐
Expo Documentation
docs.expo.dev › eas-update
EAS Update
Build one JavaScript/TypeScript project that runs natively on all your users' devices.
🌐
Expo Documentation
docs.expo.dev › eas-update › faq
EAS Update FAQ - Expo Documentation
It was available before December 2021, and expo publish cannot be run anymore. However, existing apps will continue to receive Classic Updates that have already been published and are actively used. We recommend transitioning to EAS Update or using a self-hosted update service.
🌐
Expo Documentation
docs.expo.dev › eas-update › download-updates
Downloading updates - Expo Documentation
To control which update is loaded, you make changes on the server through the eas update command or the EAS dashboard. For example, you publish a new update to a channel that your build is pointing to, then the build fetches that update on the next launch.
🌐
Expo Documentation
docs.expo.dev › eas-update › migrate-from-classic-updates
Migrate from Classic Updates - Expo Documentation
A guide to help migrate from Classic Updates to EAS Update. ... SDK 49 was the last version to support Classic Updates. To continue using the deprecated expo publish command, set updates.useClassicUpdates in your app config.
🌐
Expo Documentation
docs.expo.dev › eas-update › deployment
Deploy updates - Expo Documentation
EAS Update provides "channels", "branches", and "runtime versions" to help you determine which app version to target, to help you with bookkeeping to understand the state of your deployments, and to support a variety of deployment patterns.
🌐
GitHub
github.com › expo › expo › blob › main › docs › pages › eas-update › getting-started.mdx
expo/docs/pages/eas-update/getting-started.mdx at main · expo/expo
If you are already signed in to an Expo account using Expo CLI, you can skip the steps described in this section. If you are not, run the following command to log in: ... You can check whether you are logged in by running eas whoami. ## Configure your project Navigate to your project directory in your terminal and run the following command: <Terminal cmd={['# Initialize your project with EAS Update', '$ eas update:configure']} cmdCopy="eas update:configure" />
Author   expo
🌐
npm
npmjs.com › package › eas-cli
eas-cli - npm
USAGE $ eas update [--branch <value>] [--channel <value>] [-m <value>] [--input-dir <value>] [--skip-bundler] [--clear-cache] [--emit-metadata] [--rollout-percentage <value>] [-p android|ios|all] [--auto] [--private-key-path <value>] [--environment <value>] [--json --non-interactive] FLAGS -m, --message=<value> A short message describing the update -p, --platform=(android|ios|all) [default: all] --auto Use the current git branch and commit message for the EAS branch and update message --branch=<value> Branch to publish the update group on --channel=<value> Channel that the published update sho
      » npm install eas-cli
    
Published   Nov 20, 2025
Version   16.28.0
🌐
Expo
expo.dev › services
Expo Application Services (EAS)
eas workflow:create · Update · Build developer momentum by shipping work continuously · Designed for Expo apps & works with pure React Native apps · Give your users the best experience possible · Expedite QA with instant OTA pull request previews · Don't wait to ship your next app updateDocumentation ·
🌐
Expo Documentation
docs.expo.dev › eas-update › integration-in-existing-native-apps
Using EAS Update in an existing native app - Expo Documentation
Learn how to integrate EAS Update into your existing native Android and iOS app to enable over-the-air updates.
🌐
Expo Documentation
docs.expo.dev › eas-update › expo-dev-client
Preview updates in development builds - Expo Documentation
This step is required for the ... under your Expo account. ... After logging in, an EAS Update section will appear inside the Extensions tab with one or more of the latest published updates....
🌐
Expo Documentation
docs.expo.dev › eas-update › eas-cli
Manage branches and channels with EAS CLI - Expo Documentation
EAS Update works by linking branches to channels. Channels are specified at build time and exist inside a build's native code. Branches are an ordered list of updates, similar to a Git branch, which is an ordered list of commits.