Mandatory Update for your apps

Publishing app updates can be a chaotic experience. You hit that publish button and it’s out of your hands. You’re at the mercy of your users, relying on them to stay up to date and get that latest version onto their devices.

And sometimes those updates are important. A critical bugfix or a new feature essential to the business. Sometimes things can’t wait.

Mandatory Update (ManUp) is a technique we recommend in all our apps, and have open source libraries for Ionic, iOS, and Unity3D for you to use in yours. It’s simple, but can make a huge difference to the user experience of your app. (Our Android implementation is not generalised enough to provide as a standalone library at this time.)

On startup, your app checks a small file containing release metadata, including the latest release version, the minimum required version, and a maintenance mode switch. The app compares itself to the metadata, and presents alerts as appropriate.

The user has the latest version? No problem, just load the app like normal!

If the installed version is less than the minimum, the app presents an alert telling the user an update is required, with a link to the relevant app store. The alert cannot be dismissed, effectively making the app unusable until an update.

If there’s a newer version, but the app still satisfies the minimum, an alert can be shown suggesting the user upgrades. However they can still use the app as normal.

Finally, we also include a maintenance mode switch. This is most useful if your backend API has issues and you just need time to fix things. In this case the app presents an alert telling the user to check back later. This is of course a last resort, but it’s a life saver in a dire situation.

Tricks to remember

Be forgiving! If the metadata could not be downloaded (no network, server down) let the app run

App updates take time to propagate through the store. Don’t frustrate your users by telling them to update when the store says they have the latest version

Show optional update alerts sparingly. Nobody likes a nag!

Don’t store your metadata in your backend API, because ManUp needs to survive API failures. A separate static file hosted on S3 or similar is a safer option.

We recommend ManUp in all the apps we build. It does not excuse more fine grained error handling but is hard to beat when the situation requires it. We have developed open source libraries for some of the platforms we build for. Links below, and pull requests are welcome.