How to prevent "exp build" overwriting original app

While my app is installed at my iPhone and Android Phone, I develop my app and test it via Expo client. Before running exp build:ios or exp build:android, I can see latest release if I run my original app, and I can see developing version if I run it on Expo client.

After successful exp build, I try to run the published to Expo via Expo client.
Then, if I run original app, I see developing version, not the latest release.

As far as I know, exp build builds my app and deploy it to Expo, so that anyone can run my app whoever has Expo client.
However, I don’t understand why my original app is also changed to developing version.
Is there anyway to prevent this?

I had to remove Expo client and my app, and then install them again, to see the latest app store release version at my iPhone.

I also observe this behavior. And even others access your dev version despite not submitted onto the app store.

When you publish, all clients that are compatible with that published JS will download it. This is how Expo works: https://docs.expo.io/versions/latest/guides/how-expo-works.html#publishingdeploying-an-expo-app-in-production

If you would like to have finer control over which versions of your standalone apps receive which JS updates, you can use a separate release channel for each version of your standalone app: https://docs.expo.io/versions/latest/guides/release-channels.html

And even others access your dev version despite not submitted onto the app store.

To be clear, your local, in-development version of your project is not published to Expo’s servers and is not deployed to people who have installed your app. Only when you publish does the update get deployed.

Aha, that was Expo team’s intended behavior!
I didn’t know that my standalone app(what I mentioned as original app) can be affected by Expo Client app.
I was surprised that when I only ran exp build:ios, android standalone app also showed recently built version. Is it also possible or this should caused by my mistake?

You mean, normal users who have never installed Expo Client app and just downloaded my standalone app from App store or Playstore, are not affect by publishing, right?

Anyway, now I understood that I should use “release channel”.

When you run exp build:ios, exp might publish for both platforms, in which case standalone Android apps would receive an update too.

normal users who have never installed Expo Client app and just downloaded my standalone app from App store or Playstore, are not affect by publishing, right?

All users with a compatible standalone app will receive the update unless the standalone apps were built using a different release channel. For example, if the standalone apps are built with release channel “production-2018-02-05” and then you publish to the default release channel (by not specifying a channel) or to a different channel like “staging”, then those standalone apps will not download the update.

1 Like

Thank you so much.
Now I completely understood why I experienced such things.

1 Like

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