Skip to main content
Glama
advanced-release-channels.md6.41 kB
--- title: Advanced release channels --- > 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](https://blog.expo.dev/eas-update-preview-progress-f504a30066fc#:~:text=Traditionally%2C%20Expo%20developers,need%20more%20control). Instead, we recommend using [EAS Update](/eas-update/introduction). ## Introduction For a quick introduction to release channels, [read this](/archive/classic-updates/release-channels/). When you publish your app by running `expo publish --release-channel staging`, it creates: - a release, identified by a `publicationId` for Android and iOS platforms. A release refers to your bundled source code and assets at the time of publication. - a link to the release in the `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. ## See past publishes You can see everything that you've published with `expo publish:history`. #### Example command and output `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` #### Example command and output `expo publish:details --publish-id 80b1ffd7-4e05-4851-95f9-697e122033c3` ![Publish Details](/static/images/release-channels-pub-details-1.png) ## What version of the app will my users get? Your users will get the most recent compatible release that was pushed to a release channel. Factors that affect compatibility: - sdkVersion (standalone apps are built to support only a single SDK version) - platform - releaseChannel The following flowchart shows how we determine which release to return to a user: ![Serving Flowchart](/static/images/release-channels-flowchart.png) ## Promoting a release to a new release channel 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 | ## Rollback a release channel entry 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 | ## Release channels CLI tools ### Publish history ```text 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. ``` ### Publish details ```text 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. ``` ### Publish rollback ```text 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) ``` ### Publish set ```text 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) ```

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jaksm/expo-docs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server