Possible to specify release channel dynamically for EAS Build?

Hey, I was wondering if there is, or is going to be, a way to specify a release channel at build time - in our case defined by the CI runner, specifically the branch name. So far I understood that you can create a profile that contains a release channel, but say I want to make it automatic, without manually creating the profile for every branch it’s gonna be ran on…?

With the old publish service and managed workflow, it was super easy to do just by passing in a cli argument, e.g. expo publish --releaseChannel=branchname, iirc.

Maybe it’s not even necessarily a release channel I’m looking for, basically just a way to mark which branch the build was ran on.


hey there!

our current thinking is that we will, by default, set the release channel to the current branch name. we are also interested in making it possible to tag builds with some arbitrary metadata, such as the current commit sha. what do you think of these options?

1 Like

Well, that does sound like just the thing we need! Is there an ETA on this? (And the improved UI, which relates to the other question I wrote in another topic?)

i can’t promise any dates at the moment. the improved ui is being worked on, this other stuff is in the pipeline but not being worked on yet.

1 Like

In our case, every time we publish to stores, we change the release channel to avoid the OTA publish that a build does.

having a fixed release channel in a .json file, is very very annoying, sometimes we forget to update that eas.json value, and we have to build again…

building on eas build does not publish a new update, it only embeds the app js and assets available at build time into the binary, so you should not have to create a new channel. further, you can use runtimeVersion to indicate what a specific version of the binary on the release channel. it is similar to the idea of sdk version except you control the value entirely

1 Like

Any updates here? A rough ETA would be great

we support runtimeVersion now - you can control this from app.config.js and therefore it can be dynamic. Runtime Versions - Expo Documentation

@notbrent thank you for replying so quick

Let me explain the scenario:
I use git flow, so I have one feature per branch. I want to be able to QA these features in parallel.
Today the only way I can do it is by building internal versions all the time.
Say I have feature A, B and C in development and I want to QA those in parallel, what I currently do is to build using the eas-cli build, then we grab the build ID/URL and use it to install the build, and every new update or adjustment to this builds require a new build, even if they were only JS.

It would be great if we could have a way to build this internal builds with a specific release channel, so then in further updates we could use OTA.

I could use runtime version to every branch, but it would be difficult to coordinate with parallel development which runtime version to use, and once the development phase is done, we would have to return the “original” runtime version, so we can release OTA updates to production.

Does that make sense? Is there any other solution for this problem that doesn’t require dynamic release channels?

Thank you very much again

you should use expo-dev-client to preview over-the-air updates from different branches. from the branch of your choice, keep the same runtime version and do expo publish --release-channel your-feature-name then load that in your development build