Migrating from Classic Updates to EAS Update
EAS Update is currently available only to customers with an EAS subscription plan. Sign up
EAS Update is the next generation of Expo's updates service. If you're using Classic Updates, this guide will help you upgrade to EAS Update.
EAS Update requires the following versions or greater:
- Expo CLI >= 5.3.0
- EAS CLI >= 0.50.0
- Expo SDK >= 45.0.0
- expo-updates >= 0.13.0
Install EAS and Expo CLIs with:
npm install --global eas-cli expo-cli
Then, log in with your expo account:
You'll need to make the following changes to your project:
Install the latest
expo-updates library with:
Initialize your project with EAS Update:
After this command, you should have two a new fields in your app config (app.json/app.config.js) at
To ensure that updates are compatible with the underlying native code inside a build, EAS Update uses a new field named
runtimeVersion that replaces the
sdkVersion field in your project's app config (app.json/app.config.js). Remove the
expo.sdkVersion property from your app config.
Next, set your project up with EAS Build by running:
To allow updates to apply to builds built with EAS, update your EAS build profiles in eas.json to include
channel properties. These channels should replace any
releaseChannel properties. We find it convenient to name the
channel after the profile's name. For instance, the
preview profile has a
"preview" and the
production profile has a
Optional: If your project is a bare React Native project, read the doc
on extra configuration you may need.
The changes above affect the native code layer inside builds, which means we'll need to make new builds. Once your builds are complete, we'll be ready to develop an update and publish it.
EAS Update uses a modern manifest format
. When you have a EAS Update url in your app config at
, Expo CLI will automatically serve the correct manifest format for your project. This will ensure that the code you develop locally will work as an update when published later. You can start a locally development session just like before, with:
To publish an update, run:
eas update --branch [branch-name] --message [message]
eas update --branch production --message "Fixes typo"
EAS Update adds a new type of object called a "branch". A branch is a list of updates, and it is linked to a channel. In the diagram below, builds with a channel of "production" are linked to a branch named "production". By default, channels and branches of the same name are linked until changed.
- If you have any scripts that run
expo publish, you can replace those with
eas update. You can view all the options for publishing with
eas update --help
- If you have any code that references
Updates.releaseChannel from the
expo-updates library, you'll have to remove those. Currently, EAS Update does not expose the
channel of a build. Instead, you can use environment variables.
- Remove any code that references
Constants.manifest. That will now always return
EAS Update is currently in "preview", meaning that we may make major changes to developer-facing workflows. There are also a variety of known issues
, which you should consider before using EAS Update with your project.
EAS Update is built to be faster and more powerful than ever before. We can't wait to hear what you think. Try setting up EAS Update to publish on pushing to GitHub with a GitHub Action
. Also check out the new sets of deployment patterns
enabled by EAS Update.
If you run into issues or have feedback, join us on Discord
in the #eas channel.