There is also an Updates module that you can use to check for updates and restart in your code.
The following is how I do it in one of my apps. I gave the app to someone who installed it manually on his phone and I can publish updates. The only times I’d need him to install a new APK is if I upgrade to a later SDK or make changes to app.json:
It seems that I need to run expo publish. Then start the Development Server again using expo start, and then close the App and reopen it. I guess I could look at your guide at some point to have updates without the need of closing the App.
Is there something else besides the development server that Expo App developers use when the App still didn’t go to the stores (You mentioned expo servers?) I’m kinda new to expo and mobile development in general.
Given that you have built a standalone APK that your client has installed on the phone: when you publish, the development server does not need to be restarted. It is not involved anymore. Just bear in mind that the client might need to restart the app twice to get the update. After the first restart it should check for and download the new code/assets. After the second restart it should load the new code/assets.
The development server is only used for you while you are developing.
If your client was running the Expo app instead of your standalone app then you could potentially run your dev server in “tunnel” mode and have your client open the app from there, but that is more error prone and might be confusing to the client. Also there are a few differences between running in the Expo app and standalone (e.g. the Updates module only works in a standalone app), and since the final app that you upload to the Play Store will be a standalone app I think it’s better for the client to test with your standalone app rather than one running within the Expo app on their phone. (I hope I’ve explained this well.)
Thanks that’s really helpful. I was assuming that I was getting the update ‘only’ because of the development server restart, but it seems that I was actually restarting the App two times whenever I wanted to test that assumption.