Apple and Google enforce minimum OS version floors that increase over time — failing to set an explicit minimum leaves your app exposed to device configurations your dependencies no longer support. Android SDK 21 (Android 5.0), a common implicit default, lacks critical APIs used by modern libraries including SafetyNet, biometric auth APIs, and foreground service types required for background tasks. Google Play enforces a 2-year rolling minimum target-and-minimum policy (android-minimum-target-sdk), rejecting updates that fall below it. On iOS, apps without an explicit minimumVersion may be installed on iOS 12 devices where SwiftUI, Combine, and async/await runtime availability differs, producing crashes that reach production users and trigger store review flags from user-reported bugs.
High because an unset or too-low minimum OS version causes crashes on unsupported devices and Google Play actively rejects updates that fall below its rolling SDK minimum floor.
Set explicit minimum values in both app.json and the Android Gradle file — do not rely on implicit defaults.
// app.json
{
"expo": {
"ios": { "minimumVersion": "13.0" }
}
}
// android/app/build.gradle
defaultConfig {
minSdkVersion 24 // Android 7.0
targetSdkVersion 35
compileSdkVersion 35
}
After updating minSdkVersion, run the full test suite on a device or emulator running Android 7.0 (API 24) to catch any API calls that don't exist below your old minimum. Google Play's policy page (external android-minimum-target-sdk) publishes the current floor — check it before every major release cycle.
mobile-store-readiness.build-config.min-os-versionhighapp.json for ios.minimumVersion and android.minSdkVersion (in app.json or android/app/build.gradle). Count the minimum OS version declarations across all config files. iOS minimum should be 13.0 or higher (stores require recent OS). Android minimum should be SDK 24 (Android 7.0) or higher (covers ~99% of active devices)."Android minSdkVersion is 21 (Android 5.0) — too old. Stores recommend 24+" or "iOS minimum version not specified in app.json""ios": { "minimumVersion": "13.0" }
android {
compileSdkVersion 34
defaultConfig {
minSdkVersion 24 // Android 7.0
targetSdkVersion 34
}
}
package.json and Expo SDK version if targeting older OSes