Video tutorial above
If you prefer reading text: https://go.vancewong.com/adalo-force-app-update
What you need
- A paid plan (because the free plan doesn’t allow you to publish to app stores)
- Working mobile app on the iOS and/or Android app store(s)
- Splash screen assets
- Lottie animation (optional), for eg. from Lottie Files
- App downloads link manager (for eg. https://www.onelink.to/)
This tutorial was inspired by a topic on the Adalo community forum and a question that I personally posted too. After lots of experimentation and racking my brains, I came up with a way to do it without too much complication.
You’ve published your native mobile app to the various app stores and the monthly active users start to grow — yay!
But you’re making some breaking changes that would require your users to update the app. How can you “force” them to update the app before continuing to use it? Kind of like a mandatory update, if you will.
Well, you could send in-app notifications, but users can just dismiss it. You definitely NEED a way to check if the users are on the latest version of the app, otherwise, force them to update before continuing use.
How I personally feel about notifications on my phone lmao
While there’s no inbuilt function in Adalo to do that, we can create our own, and it’s not exactly complicated. Let’s get right into it.
Create a “Versions” collection
Fields:
- Version number (text)
- Latest version (boolean)
This collection is to keep track of the number of versions that you’ve released on the app stores. Don’t worry even if you’re implementing this after releasing a few or dozens of updates to date. This will work from the point you start implementing it.
Important! DO NOT delete any records in this data collection. For eg. you’ll never know when a user who’s using v1.0.9 (first version you’ve implemented this “force update” feature) decides to come back to your app when it’s v2.0.0!
Splash screen
Create a welcome screen that has your logo, treat this as the splash screen when someone boots up the app, or logs in. This will check whether the user is using the latest version.
On the welcome splash screen (for when users are logged in), add these actions at the page level.
If the current version = latest version is true, then send to the intended home screen, for eg. the user’s profile
If the current version = latest version is false, then send to update screen
The purpose of the above actions is to check if the current app version that the user’s device has installed is the latest version or an outdated version.
If latest version = true → send to the intended home screen
If latest version = false → send to the update screen
Make sure that the settings are set correctly, if not it won’t work.
Update screen
Next, use something like https://www.onelink.to/ to take care of both Android and iOS users. This will take care of directing them to the respective app stores depending on the device on which they click the link on.
What next?
Make sure to do this for every version of your app. So at any one point, only the latest version (eg. 115) is marked as “true” for the latest version.
So regardless of the current version, this welcome screen always checks if the current version that the user has installed on his/her device is the latest. As long as it’s not the latest, it’d direct them to the update screen. This is to take care of inactive users who have your app but a few versions behind the latest one.
Only if the splash screen of the user’s installed app version is marked as “true” would the app send the user to the home screen.
Make sure you only change the latest version in the Adalo database AFTER Apple and Google have approved your newly submitted build on their app stores. Apple is notorious for taking longer than Google (up to 3 business days versus 1 hour!) to approve new build submissions. So be sure that your latest version is available to download before changing the latest version.
Why don’t we perform these conditional actions on the home screen instead?
If the users are outside of the US, it might take 0.5 to 1 second to execute the conditional action (since it’s dependent on the database API call, and Adalo’s servers are in the US).
In that case, some users might tap on something else before they’re sent to the update screen if they’re on an outdated version.
I’ve tested this myself in Singapore (South East Asia) so I can vouch that the latency can really be up to 1 second, which is more than enough time for a regular app user to just click to another screen before the app sends the user to the update screen (if he or she is on an older version).
Workflow for future updates
The process would always be:
- Make edits to your app
- Change the condition on the splash screen
- Generate builds in Adalo
- Submit builds for approval
- Once approved, add a new record in the “versions” data collection
- Set the new record’s latest version field to be “true”
- Set the previous record’s latest version field to be “false”
- Now your users will be prompted to update their app before being able to continue using the app!
Tip: Both Google and Apple allow app developers to manage how their new versions are made available to users. Set the “managed publishing” in your Google Play Console for developers to ON, and set the method for “version release” in your App Store Connect to MANUALLY release this version. That way, you can control when to release the updates to your users. Especially handy since Apple takes longer to approve new version submissions.