Have you seen this guide ? TL;DR: Run `eas update:configure` Then create new builds Then run `eas update --channel production` to update builds with the channel production. There is a concept of branches, which allows for more flexible (and complex) release flows. We added `--channel` recently, which makes it such that you don't have to think about branches if you're not using them. Also, to amend another commenter: you can preview updates in Expo Go or inside a development build. With the command above, you can also send updates to end-users using app store builds. If you want to learn more about delivering code to your users, this doc can help. Answer from jonsamp on reddit.com
🌐
Expo Documentation
docs.expo.dev › eas-update › getting-started
Get started with EAS Update - Expo Documentation
Start a local development server with the following command: ... Then, make any desired changes to your project's JavaScript, styling, or image assets. ... To publish an update with changes from your project, use the eas update command, and specify a name for the channel and a message to describe the update:
🌐
Expo Documentation
docs.expo.dev › eas-update › introduction
EAS Update - Expo Documentation
Publish an update and preview with a QR code after a commit. ... Learn how to migrate from CodePush to EAS Update.
🌐
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 ...
Starred by 1.2K users
Forked by 162 users
Languages   TypeScript
🌐
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": {}
  }
}
🌐
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 ...
      » npm install eas-cli
    
Published   Nov 20, 2025
Version   16.28.0
🌐
Expo Documentation
docs.expo.dev › eas › workflows › automating-eas-cli
Automating EAS CLI commands - Expo Documentation
Once you have this workflow file, you can kick it off by pushing a commit to the main branch, or by running the following EAS CLI command: ... You can provide parameters to submit other platforms or use other submit profiles. Learn more about submit job parameters with the submit job documentation. You can update your app using EAS CLI with the eas update command.
🌐
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 - Below is a list of commonly used commands for managing updates, channels, and branches. eas update --branch [branch-name] --message "Your update message"
Find elsewhere
🌐
Expo Documentation
docs.expo.dev › eas-update › eas-cli
Manage branches and channels with EAS CLI - Expo Documentation
This command takes the previous update and publishes it again so that it becomes the most current update on the branch. As your users re-open their apps, the apps will see the newly re-published update and will download it.
🌐
Expo Documentation
docs.expo.dev › eas-update › how-it-works
How EAS Update works - Expo Documentation
To publish an update, we can run eas update --auto. This command will create a local update bundle inside the dist directory in our project. Once it's created an update bundle, it will upload that bundle to EAS servers, in a database object ...
🌐
Fig
fig.io › manual › eas › update
eas update | Fig
eas update · eas update:configure · eas update:delete · eas update:list · eas update:view · eas webhook:create · eas webhook:delete · eas webhook:list · eas webhook:update · eas webhook:view · Publish an update group · On this page ·
Top answer
1 of 3
17

After reading the docs, I think you have to have to think differently about branch and channel.

Channels are specified at build time and exist inside a build's native code.

and

Branches are an ordered list of updates, similar to a Git branch, which is an ordered list of commits.

With EAS Update, we can link any channel to any branch, allowing us to make different updates available to different builds.

So first you have to "publish" the update group to a branch and then you gotta link the channel to point to that branch.

I imagine it could look like

eas update --branch staging-1.0.1
eas channel:edit staging --branch staging-1.0.1

Please correct me if I'm wrong about anything here.

https://github.com/expo/eas-cli#eas-channeledit-name

2 of 3
4

This was also hard to understand for me but now I got it. Unfortunately the docs are so far not really clear.

EAS builds retrieve updates from the channel specified in eas.json. So normally for production builds you would have a channel named "production".

If you now want to run an EAS Update to distribute changes to clients you won't publish directly to a channel but instead you go a detour using branches. Because branches are linked to channels you can work with different branches (e.g. for different versions) and then you only need to change the branch-channel link to publish an update.

To change the linking between a branch and a channel you run:

eas channel:edit

In an simplified setup (like mine) you would have a git branch called production and also a channel with the same name. To publish an update you then just run:

eas update --branch production

or

eas update --auto

In the latter case EAS then sets your current git branch as the branch name, so you could check out the production branch and then run this command to publish the update.

🌐
Lexicon
docs.lexicon.is › update your app
Update your App | Lexicon
After making the necessary changes, you can push updates using this command: eas update –-branch <branch> –-message “<message>”
🌐
YouTube
youtube.com › watch
How to debug EAS Update | Expo Debugging Tutorial - YouTube
EAS Update gives the flexibility to isolate updates between tests and pride environments which is great but you also need to know how to debug EAS Update. In...
Published   November 21, 2023
🌐
Ignitecookbook
ignitecookbook.com › eas update
EAS Update | Ignite Cookbook for React Native
This guide will teach you how to set up over-the-air (OTA) updates with Expo and EAS Update within an Ignite project.
🌐
GitHub
github.com › expo › UpdatesAPIDemo
GitHub - expo/UpdatesAPIDemo: Demo app showing the useUpdates() API
Demonstrates new SDK 54 updates ... boilerplate CLI · # You can execute `bun install` instead of `yarn` if you prefer yarn eas init eas update:configure...
Starred by 78 users
Forked by 7 users
Languages   TypeScript 88.2% | JavaScript 5.4% | EJS 3.7% | Shell 2.7%
🌐
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.
🌐
Pagepro
pagepro.co › home › blog › ota updates with expo
OTA Updates With Expo - Pagepro
April 30, 2025 - eas update --branch preview --message "Example update" This command will create a new js bundle with the changes we have made and send it to expo servers so it is available for our users.