This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

Manage branches and channels with EAS CLI

Edit page

Learn how to link a branch to a channel and publish updates with EAS CLI.


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. With EAS Update, we can link any channel to any branch, allowing us to make different updates available to different builds.

The diagram above visualizes this link. Here, we have the builds with the "production" channel linked to the branch named "version-1.0". When we're ready, we can adjust the channel–branch pointer. Imagine we have more fixes tested and ready on a branch named "version-2.0". We could update this link to make the "version-2.0" branch available to all builds with the "production" channel.

Inspecting the state of your project's updates

Inspect channels

View all channels:

Terminal
- eas channel:list

View a specific channel:

Terminal
- eas channel:view [channel-name]

# Example
- eas channel:view production

Create a channel:

Terminal
- eas channel:create [channel-name]

# Example
- eas channel:create production

Inspect branches

See all branches:

Terminal
- eas branch:list

See a specific branch and a list of its updates:

Terminal
- eas branch:view [branch-name]


# Example
- eas branch:view version-1.0

Inspect updates

View a specific update:

Terminal
- eas update:view [update-group-id]

# Example
- eas update:view dbfd479f-d981-44ce-8774-f2fbcc386aa

Changing the state of your project's updates

Create a new update and publish it

Terminal
- eas update --branch [branch-name] --message "..."

# Example
- eas update --branch version-1.0 --message "Fixes typo"

If you're using Git, we can use the --auto flag to auto-fill the branch name and the message. This flag will use the current Git branch as the branch name and the latest Git commit message as the message.

Terminal
- eas update --auto

Delete a branch

Terminal
- eas branch:delete [branch-name]

# Example
- eas branch:delete version-1.0

Rename a branch

Renaming branches do not disconnect any channel–branch links. If you had a channel named "production" linked to a branch named "version-1.0", and then you renamed the branch named "version-1.0" to "version-1.0-new", the "production" channel would be linked to the now-renamed branch "version-1.0-new".

Terminal
- eas branch:rename --from [branch-name] --to [branch-name]

# Example
- eas branch:rename --from version-1.0 --to version-1.0-new

Republish a previous update within a branch

We can make a previous update immediately available to all users. 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.

Terminal
- eas update:republish --group [update-group-id]
- eas update:republish --branch [branch-name]

# Example
- eas update:republish --group dbfd479f-d981-44ce-8774-f2fbcc386aa
- eas update:republish --branch version-1.0

Pause updates on a channel

Pausing a channel stops EAS Update from serving updates to builds that check for updates on that channel.

Pausing is reversible. Your channel's updates and any rollout in progress will resume when you unpause a channel.

Terminal
- eas channel:pause [channel-name]

# Example
- eas channel:pause production

Run the command without a channel name to pick one from a list. In CI, pass the channel name with --non-interactive, or use --json to print the channel as JSON. The --json flag implies --non-interactive.

What happens while a channel is paused?
  • Each client on the paused channel still checks for updates, but they will not receive new updates. EAS typically responds with a bodyless HTTP 204 response for paused channels, so these checks use very little bandwidth.
  • Each client keeps running the newest update it already has. This may be the code shipped with the build if the client never received a newer update. Your users see no change in what their app is running.
  • Because no client downloads an update, the number of monthly active users does not increase while the channel is paused. This keeps billed users from growing.
  • eas channel:view [channel-name] and eas channel:list show the channel's status as Paused.
  • You can keep publishing updates to branches. They are stored as usual and become available when you unpause the channel.

Pausing applies to a single channel, so pausing production has no effect on a preview or development channel. You can continue to publish and test updates on your development and preview channels while production is paused.

How is pausing a channel different from a rollback?

Pausing keeps clients on their current update and prevents them from receiving new updates, while rollbacks instruct clients to run an older update.

  • eas update:rollback and eas update:republish publish a previous update again so that it becomes the newest update on the branch. Clients download that update and run it. See Rollbacks.
  • eas update:rollback with the embedded option, also available as eas update:roll-back-to-embedded, publishes a directive that tells clients to stop using downloaded updates and run the update embedded in the build instead.
  • eas channel:pause does not publish anything and instructs EAS not to send updates for the specified channel. Clients on that channel keep running the latest update they currently have and will not receive new updates until the channel is unpaused.

Resume updates on a channel

Terminal
- eas channel:resume [channel-name]

# Example
- eas channel:resume production

Unpause a channel by resuming it. The channel will start serving updates from the branch associated with the channel. Any rollout on the channel will resume. As users open their apps and check for updates, they will receive the newest compatible update as usual.