Target OS version is current or recent
Why it matters
Google Play enforces a hard target SDK deadline: apps that do not target a recent SDK level by the published cutoff date (currently API 34 minimum as of August 2024, with API 35 requirements phased in through 2025) are blocked from updating for existing users and from new submissions entirely. Apple applies equivalent pressure through Xcode version requirements that implicitly raise the minimum deployment target. Targeting an old SDK isn't just a compliance checkbox — it gates your app off of modern platform APIs including scoped storage (Android 10+), exact alarm permissions (Android 12+), and photo picker (Android 13+), all of which affect security posture and user experience on devices that represent the majority of active installs.
Severity rationale
High because Google Play blocks updates and new submissions for apps targeting below its rolling SDK deadline, and outdated targets lock out modern security and UX APIs on the majority of active devices.
Remediation
Update targetSdkVersion and compileSdkVersion to current levels and run your test suite against the new API level before submitting.
// android/app/build.gradle
android {
compileSdkVersion 35
defaultConfig {
targetSdkVersion 35
minSdkVersion 24
}
}
For iOS, set the deployment target in Xcode: select the project root → General → Deployment Info → iOS 17.0 or higher. After updating, audit your code for deprecated APIs using Xcode's deprecation warnings and Android Lint's NewApi check. Review the Google Play target API level policy (external android-target-sdk-requirements) and Apple's upcoming requirements page (external apple-upcoming-requirements) before each annual release cycle.
Detection
- ID:
target-os-version - Severity:
high - What to look for: Check
android/app/build.gradlefortargetSdkVersionand Xcode project forIPHONEOS_DEPLOYMENT_TARGET. Count the target OS version declarations across all config files. Target should be the latest or very recent version (as of 2026, Android 15 = API 35, iOS 18 = v18). Stores require apps to target recent OS versions within the last 1-2 years. - Pass criteria: targetSdkVersion is at least 33 for Android, and iOS deployment target is at least 15.0. Both values must be explicitly configured — implicit defaults do not count. Report: "Android targetSdkVersion=X, iOS deployment target=Y."
- Fail criteria: targetSdkVersion is below 30 (Android 11), iOS target is below 14.0, or values are missing.
- Skip (N/A) when: Project targets only one platform (check only the targeted platform).
- Detail on fail:
"targetSdkVersion is 30 (Android 11) — stores require 33+ as of 2026"or"iOS target is 14.5 — update to 17+ for store submission" - Remediation: App stores require apps to target recent OS versions to ensure compatibility with latest APIs and security updates. Update:
- In android/app/build.gradle:
android { compileSdkVersion 35 // Latest available targetSdkVersion 35 } - In Xcode project settings:
- Select project
- General → Deployment Info → iOS Deployment Target = 15.0 or higher
- Recommended targets (as of 2026):
- Android: 35 (API level for Android 15)
- iOS: 17 or 18 (latest or current)
- Run tests after updating to catch API deprecations
- In android/app/build.gradle:
External references
- external · android-target-sdk-requirements — Google Play — Target API level requirements
- external · apple-upcoming-requirements — Apple Developer — Upcoming App Store requirements
Taxons
History
- 2026-04-18·v1.0.0·Initial import from mobile-store-readiness·automated