Agent Wranglers

MOB-14Recommended

Stop versions you no longer support

Keep the lowest supported app version on the server and check it at every app start. Below it, the app shows one screen with a link to the store.

How to do it

Serve the minimum version per platform from a config endpoint or a remote config service. Compare version numbers part by part, never as text, since "3.10" is newer than "3.9". Keep a softer second value that shows a dismissable update prompt. On Android, Google Play's in-app updates can run the immediate update flow inside the app. Raise the minimum only for security fixes or API changes you cannot keep, and only after the update has been live 14 days. The server announces retired API versions as announce deprecation and sunset in headers says.

Examples

Plain text example

let config = try await api.get(AppConfig.self, "/config/ios")
let installed = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "0"
if installed.compare(config.minimumVersion, options: .numeric) == .orderedAscending {
    router.show(.updateRequired(storeURL: config.storeURL))
}

Kotlin example

val config = api.get<AppConfig>("/config/android")
val installed = BuildConfig.VERSION_NAME.split(".").map { it.toInt() }
val minimum = config.minimumVersion.split(".").map { it.toInt() }
val isTooOld = installed.zip(minimum).firstOrNull { (a, b) -> a != b }?.let { (a, b) -> a < b } ?: false
if (isTooOld) router.show(Screen.UpdateRequired(config.storeUrl))

How to check

Set the minimum on a test server above the installed build. The app shows the update screen at the next start and makes no other API calls. A build above the minimum starts normally.

For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/mobile-apps/updates-and-versions/minimum-version">Agent Wranglers mobile apps playbook</a>. In code you write, add a comment next to it with the same link.