🌐
Expo Documentation
docs.expo.dev › eas-update › introduction
EAS Update - Expo Documentation
EAS Update is a hosted service that serves updates for projects using the expo-updates library.
🌐
Expo Documentation
docs.expo.dev › eas-update › getting-started
Get started with EAS Update - Expo Documentation
Learn how to get started with the setup required to configure and use EAS Update in your project.
🌐
GitHub
github.com › expo › eas-cli
GitHub - expo/eas-cli: Fastest way to build, submit, and update iOS and Android apps
Fastest way to build, submit, and update iOS and Android apps - expo/eas-cli
Starred by 1.2K users
Forked by 162 users
Languages   TypeScript
🌐
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 ...
🌐
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 - In EAS Update, a channel acts as the "distribution pipeline" that delivers updates to your app, while a branch represents the mode or version stream—such as test or production—from which updates are sourced.
🌐
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.
🌐
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.
🌐
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.
Find elsewhere
🌐
Expo Documentation
docs.expo.dev › eas-update › debug
EAS Update Debugging - Expo Documentation
This can happen when this new update ... the new update. EAS Update is designed to automatically roll back to the previous update if it detects that a new update crashed shortly after launch....
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.

🌐
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.
🌐
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": {}
  }
}
🌐
Medium
medium.com › @nnaemekaonyeji27 › update-your-live-react-native-app-in-minutes-with-eas-update-877d131b245b
Update Your Live React Native App in Minutes with EAS Update | by Samuel Nnaemeka Onyeji | Medium
October 15, 2025 - EAS Updates are over-the-air (OTA) updates that let developers push certain changes directly to live apps. The app downloads these updates in the background while users continue using it, then applies them the next time the app is fully restarted.
🌐
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.
🌐
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 ·
🌐
GitHub
github.com › expo › UpdatesAPIDemo
GitHub - expo/UpdatesAPIDemo: Demo app showing the useUpdates() API
Demonstrates new SDK 54 updates features like download progress, screen options for the reloadAsync() method, and request headers override. Built using the Ignite React Native 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%
🌐
GitHub
github.com › expo › custom-expo-updates-server
GitHub - expo/custom-expo-updates-server: A simplified demonstration of expo-updates protocol use.
Any pull requests that add new ... Application Services), one of which is EAS Update which can host and serve updates for an Expo app using the expo-updates library....
Starred by 471 users
Forked by 123 users
Languages   TypeScript 84.8% | JavaScript 7.8% | CSS 6.4% | Shell 1.0%
🌐
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!