File: migrate-from-classic-updates.md | Updated: 11/15/2025
Hide navigation
Search
Ctrl K
Home Guides EAS Reference Learn
Archive Expo Snack Discord and Forums Newsletter
Copy page
A guide to help migrate from Classic Updates to EAS Update.
Copy page
SDK 49 was the last version to support Classic Updates. To continue using the deprecated
expo publishcommand, setupdates.useClassicUpdatesin your app config.
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:
1
Install EAS CLI:
Terminal
Copy
- npm install --global eas-cli
2
Then, log in with your expo account:
Terminal
Copy
- eas login
You'll need to make the following changes to your project:
1
Initialize your project with EAS Update:
Terminal
Copy
- eas update:configure
After this command, you should have two new fields in your app config at expo.updates.url and expo.runtimeVersion.
2
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. Remove the expo.sdkVersion property from your app config.
3
To allow updates to apply to builds built with EAS, update your EAS Build profiles in eas.json to include channel properties. These channels replace releaseChannel properties. We find it convenient to name the channel after the profile's name. For instance, the preview profile has a channel named "preview" and the production profile has a channel named "production".
eas.json
Copy
{ "build": { "development": { "developmentClient": true, "distribution": "internal" }, "preview": { "distribution": "internal", "channel": "preview" }, "production": { "channel": "production" } } }
4
Optional: If your project is a bare React Native project, see Use EAS Update in an existing project for the extra configuration you may need.
The changes above affect the native code layer inside builds, which means you'll need to make new builds to start sending updates. Once your builds are complete, you'll be ready to publish an update.
After making a change to your project locally, you're ready to publish an update, run:
Terminal
Copy
- eas update --channel [channel-name] --message [message]
# Example
- eas update --channel production --message "Fixes typo"
Once published, you can see the update in the EAS dashboard .
expo publish with eas update in scripts. You can view all the options for publishing with eas update --help.Updates.releaseChannel from the expo-updates library, replace them with Updates.channel.Constants.manifest. That will now always return null. You can access most properties you'll need with Constants.expoConfig from the expo-constants library.The steps described above allow you to use a similar flow to Classic Updates. However, EAS Update is more flexible and has more features. It can be used to create more stable release flows. Learn how EAS Update works and how you can craft a more stable deployment process for your project and your team.
If you experience issues with migrating, check out our debugging guide . If you have feedback, join us on Discord in the #update channel.