Running expo:build should NOT also publish app

We’re in the process of a major update involving substantial API changes. I ran expo:publish at 4:25pm PST yesterday so I could submit to app stores for a planned release later next week. This morning users reported errors with app, and running expo publish:history shows the app was published to our default channel (which is production). Is this expected behavior? It’s a major issue to not be able to build for app stores without updating app for all users and was definitely not expected.

Hi Mike,

As far as I can tell, the scenario you described is intended.

Luckily the Expo CLI has some extra flags already to help you. If you run expo build:android --help or expo build:ios --help you can see them all. Both --no-publish and --release-channel are the ones which you might like. Keep in mind that if you do not publish, it will use the latest published build for your chosen (or default) release channel.

I would also recommend checking out the Advanced Release Channels guide, it provides some information on setting this up to suit your needs.

Btw, I’m not from the Expo team. I’m just a user like you. :smile:

Good luck!

Thanks Cedric. We’re actually using advanced release channels to build to a staging channel for testing, it’s that first build in the screenshot. We already had an app in the wild that was using the default channel as production, so we left that as-is. Part of the issue here is documentation - was it already clear to you that every time you build the app it publishes also? Personally I think a one sentence heads up on the “building standalone apps” article would help - or is that already made clear in docs somewhere that I missed?

What we did seems like a common use case (app with existing users, we have potentially breaking changes, we want to time an app store release at same time as we OTA update the app for existing users), especially since we’ve noticed many users don’t fully quit their app very often and rely on the app store update as the notification mechanism they need to update. How have you been handling this process with users?

I’ve loved working with expo so far, and while I think the OTA update concept is incredible, it could use some fine tuning based off real world usage patterns (ie, almost no one ever actually quits apps they just background them). We are working around this using app store submissions and manually triggering updates now when app is backgrounded, but worth providing feedback as Expo team considers what to make defaults in future. One idea would be to include by default a dedicated channel called “builds” that the app store build process uses, which would give us the option to use the main default channel with actual users while keeping the build process separate.

1 Like

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.