How will my users know if I have an updated bundle and how to distribute it to them?

I am little confused. If I have new changes on my app, how will the update happens? My users will be required to have to get notified somehow and its app has to be downloaded somehow. How to achieve that?

Once you’ve made new changes, you will have to build your app probably with expo build:android for android, I for one use expo build:android -t app-bundle or expo build:ios for iOS

Since you are releasing a new version of your app, am assuming you already have your android app signing credentials or iOS app signing credentials in your expo-cli without it you cant submit your app to the stores

Once your build is successful, you will get a link to download the bundled app, you can also go to your expo account on the web to see all builds. Download the bundled app and you can now submit it to google play store(create a new release for production) or app store(upload through transporter or any tool, your app should be on TestFlight, create a new release version). The app stores should update the app on users devices (if users turn on auto-update) or users update will update manually.

Read more: https://docs.expo.dev/distribution/uploading-apps/

Well, If you talking about changing the “Install” to “Update” button in google play u have to change versionCode in your app.json and increment its value each time you build apk / aab.

if you talking about how to force user to go to playstore and update when user open your app heres what im doing.

  1. Make an API that will return latest version of your app. for example /app/version/ returns { version : “1.0.0”
  2. In your app. when app first loaded. call that api and get the version. and compare it to your app native version that u can call in “expo-application” library theres a ‘nativeApplicationVersion’ variable which going to return your current app version. now compare it. if the version that returned from your api is higher than the version of the app . then do something. like display popup etc.

that way, if you change your version in that api to lets say “1.0.1” and you also upload that version in google playstore. users that already have downloaded version 1.0.0 will get the popup. or maybe display a button so that when user click it they will be redirected to you playstore page. through link.

2 Likes

You are missing the point, @abhirajtulsyan refers to updating the bundle, not publishing a new native app version.

also a wrongly assumption, @abhirajtulsyan is talking about the “update” feature, in which you dont need to publish to the stores to reflect a new update.

The documentation indicates that the user should restart the app twice in order to see the update, which I find too restrictive and little practical. I am still looking for an alternative to have this update reflect on app resume or through a notification.

Ok, here is the deal, if you do nothing, your users will have to reload your App twice in order to get the update.
BUT!
Expo has an Update library so that you can instruct the app when to go and look for the update.

import * as Updates from 'expo-updates';

try {
  const update = await Updates.checkForUpdateAsync();
  if (update.isAvailable) {
    await Updates.fetchUpdateAsync();
    // ... notify user of update ...
    await Updates.reloadAsync();
  }
} catch (e) {
  // handle or log error
}

here the docs: Configuring Updates - Expo Documentation
*Check manual updates.