---
title: "Stop versions you no longer support · Agent Wranglers"
url: https://agentwranglers.se/playbook/mobile-apps/updates-and-versions/minimum-version
updated: 2026-10-21
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Stop versions you no longer support

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Updates and versions](https://agentwranglers.se/playbook/mobile-apps/updates-and-versions.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers). Updated 2026-10-21.

- ID: MOB-14
- Level: Recommended
- Chapter: [Updates and versions](https://agentwranglers.se/playbook/mobile-apps/updates-and-versions)
- Rule: 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: 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](https://agentwranglers.se/playbook/api-design/changes-over-time/deprecation-headers) says.
- 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.

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### Plain text example

```swift
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

```kotlin
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))
```

## Related rules

- [Keep old app versions working against the API](https://agentwranglers.se/playbook/mobile-apps/updates-and-versions/old-versions-keep-working) in Mobile apps
- [Announce deprecation and sunset in headers](https://agentwranglers.se/playbook/api-design/changes-over-time/deprecation-headers) in API design

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/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.

- Previous: [Keep old app versions working against the API](https://agentwranglers.se/playbook/mobile-apps/updates-and-versions/old-versions-keep-working)
- Next: [Build with the SDK the stores require](https://agentwranglers.se/playbook/mobile-apps/updates-and-versions/store-sdk-deadlines)
- [Updates and versions](https://agentwranglers.se/playbook/mobile-apps/updates-and-versions)
