Edit this page
This doc was archived in August 2022 and will not receive any further updates. To learn more about why release channels were deprecated, see our blog post on EAS Update. Instead, we recommend using EAS Update.
For a quick introduction to release channels, read this.
When you publish your app by running expo publish --release-channel staging
, it creates:
publicationId
for Android and iOS platforms. A release refers to your bundled source code and assets at the time of publication.staging
release channel, identified by a channelId
. This is like a commit on a git branch.For simplicity, the rest of this article will refer to just the ios
releases, but you could swap out ios for android at any point and everything would still be true.
You can see everything that you've published with expo publish:history
.
expo publish:history --platform ios
publishedTime | appVersion | sdkVersion | platform | channel | publicationId |
---|---|---|---|---|---|
2018-01-05T23:55:04.603Z | 1.0.0 | 24.0.0 | ios | staging | 80b1ffd7-4e05-4851-95f9-697e122033c3 |
To see more details about this particular release, you can run expo publish:details
expo publish:details --publish-id 80b1ffd7-4e05-4851-95f9-697e122033c3
Your users will get the most recent compatible release that was pushed to a release channel. Factors that affect compatibility:
The following flowchart shows how we determine which release to return to a user:
Example use case: you previously published a release to staging
and everything went well in your testing. Now you want this release to be active in another release channel (ie) production
We run expo publish:set
to push our release to the production
release channel.
expo publish:set --publish-id 80b1ffd7-4e05-4851-95f9-697e122033c3 --release-channel production
Continuing from the previous section, we can see that our release is available in both the staging
and the production
release channels.
expo publish:history --platform ios
publishedTime | appVersion | sdkVersion | platform | channel | publicationId |
---|---|---|---|---|---|
2018-01-05T23:55:04.603Z | 1.0.0 | 36.0.0 | ios | staging | 80b1ffd7-4e05-4851-95f9-697e122033c3 |
2018-01-05T23:55:04.603Z | 1.0.0 | 36.0.0 | ios | production | 80b1ffd7-4e05-4851-95f9-697e122033c3 |
2018-01-04T22:43:19.302Z | 1.0.0 | 36.0.0 | ios | production | d6b61741-a8dc-11e9-852a-3b0715b88238 |
Example use case: you published a release to your production
release channel, only to realize that it includes a major regression for some of your users, so you want to revert to the previous version.
Continuing from the previous section, we roll back our production
release channel entry for just the iOS platform with expo publish:set
expo publish:set --release-channel production --publish-id d6b61741-a8dc-11e9-852a-3b0715b88238
Or, we could roll back the production
release channel entry for both Android and iOS with:
expo publish:rollback --release-channel production --sdk-version 36.0.0
Now we can see that our releases are available on the production release channel.
expo publish:history --platform ios
publishedTime | appVersion | sdkVersion | platform | channel | publicationId |
---|---|---|---|---|---|
2018-01-04T22:43:19.302Z | 1.0.0 | 36.0.0 | ios | production | d6b61741-a8dc-11e9-852a-3b0715b88238 |
Usage: expo publish:history [--release-channel <channel-name>] [--count <number-of-logs>]
View a log of your published releases.
Options:
-c, --release-channel <channel-name> Filter by release channel. If this flag is not included, the most recent publications will be shown.
-count, --count <number-of-logs> Number of logs to view, maximum 100, default 5.
-r, --raw Produce some raw output.
-p, --platform <ios|android> Filter by platform, android or ios.
Usage: expo publish:details --publish-id <publish-id>
View the details of a published release.
Options:
--publish-id <publish-id> Publication id. (Required)
-r, --raw Produce some raw output.
Usage: expo publish:rollback
Rollback an update to a release channel. Equivalent to running `expo publish:set` with publish-id set to the most recent release to the specified sdk version
Options:
-c, --release-channel <channel-name> The name of the release channel to roll back (Required)
-s, --sdk-version <version> The SDK version to roll back (e.g. 37.0.0) (Required)
-p, --platform <ios|android> The platform to roll back (roll back both unless specified)
Usage: expo publish:set --release-channel <channel-name> --publish-id <publish-id>
Set a published release to be served from a specified channel.
Options:
-c, --release-channel <channel-name> The channel to set the published release. (Required)
-p, --publish-id <publish-id> The id of the published release to serve from the channel. (Required)