Overview › Android Version & Form-Factor Readiness
Android Version & Form-Factor Readiness
Detailed static-analysis report for android version & form-factor readiness.
Executive summary
The app declares compileSdk 36 / minSdk 31 / targetSdk 36 — modern. But targeting SDK 36 means Android 15 / Android 16-preview behavior changes apply, and several are not yet handled: edge-to-edge enforcement, Android 12 SplashScreen API migration, photo picker. Notification permission (Android 13) and foreground-service types (Android 14) are handled. Form-factor readiness is poor: legacy sw600dp dimensions only, no WindowSizeClass, no Wear/Auto/TV/Chromebook variants.
Android 12-15+ behavior change matrix
| Version | Change | Status | Evidence |
|---|---|---|---|
| 12 (31) | Splash Screen API (SplashScreenView) | NOT MIGRATED | Custom Lottie-based splash in feature/splash; no androidx.core:core-splashscreen |
| 12 (31) | Notification trampoline restriction | CONFIRM | Verify push handlers don't trampoline through services |
| 13 (33) | Themed app icons (monochrome) | HANDLED | feature/productdetaillanding/.../mipmap-anydpi-v26/ic_launcher.xml with <monochrome> |
| 13 (33) | POST_NOTIFICATIONS runtime permission | HANDLED | Manifest declared + UI in feature/onboarding/.../NotificationPermissionComponent.kt |
| 13 (33) | Photo Picker (PickVisualMedia) | NOT FOUND | Still using legacy storage permissions for media access |
| 13 (33) | Per-app language preferences | NOT FOUND | No LocaleManager.setApplicationLocales usage |
| 14 (34) | Foreground service types | HANDLED | shared/geofence/src/main/AndroidManifest.xml line 9 — foregroundServiceType="location" |
| 14 (34) | RECEIVER_EXPORTED / NOT_EXPORTED on dynamic registers | NEEDS AUDIT | registerReceiver in FindAStoreFragment.java — no explicit flag |
| 14 (34) | Selected Photos Access | NEEDS AUDIT | Confirm partial-access UX where applicable |
| 14 (34) | CredentialManager / Passkey | HANDLED | androidx.credentials + NokNok FIDO2 in shared/auth/.../AuthenticatorUtilImpl.kt |
| 15 (35) | Edge-to-edge enforced for targetSdk 35+ | MISSING | No enableEdgeToEdge() calls. With targetSdk 36, this WILL break system-bar overlap |
| 15 (35) | Predictive back gesture | HANDLED | OnBackPressedCallback usage in MainActivity.java + OnboardingActivity.kt |
| 16 (36) | 16 KB native page size | CONFIRM | No bundled .so files in this app's first-party code; verify all third-party SDKs (NokNok, ThreatMetrix, ML Kit) ship 16KB-aligned variants |
CRITICAL
Edge-to-edge missing despite targetSdk 36
Android 15+ enforces edge-to-edge for apps targeting SDK 35+. Without
enableEdgeToEdge() + correct insets handling, system bars will overlap your UI on Android 15 devices.Recommendation: Call
enableEdgeToEdge() in every Activity's onCreate before super. Apply WindowInsets handling on root Composables. Test on a Pixel 8/9 with Android 15.HIGH
Splash screen not migrated to Android 12 API
Custom splash via
feature/splash + Lottie animation. Android 12+ users see the system-provided splash flash before your custom one — feels janky.Recommendation: Adopt
androidx.core:core-splashscreen; configure Theme.SplashScreen with brand-aligned colors; bridge to existing Lottie animation as a post-splash flow.MEDIUM
Photo Picker not adopted
Modern Android prefers
ActivityResultContracts.PickVisualMedia for image selection — no permission needed.Recommendation: Replace any image-selection UX (e.g. profile photo upload) with PickVisualMedia.
Form-factor readiness
| Form factor | Status | Evidence |
|---|---|---|
| Phone (compact) | PRIMARY | Default development target |
| Tablet (medium / expanded) | LEGACY | values-sw600dp in 7 modules; no WindowSizeClass usage |
| Foldable | UNTESTED | No WindowSizeClass, no posture-aware code |
| Wear OS | N/A | No :wear module |
| Auto | N/A | No automotive metadata |
| TV | N/A | No leanback resources |
| Chromebook | UNTESTED | No keyboard / mouse / window-resize testing |
HIGHNo
No WindowSizeClass — adaptive UI absent
Tablet support is via legacy
sw600dp dimens only. On a foldable (e.g. Galaxy Z Fold) the inner screen will render the phone layout stretched.Recommendation: Adopt
androidx.compose.material3.windowsizeclass. Define COMPACT / MEDIUM / EXPANDED variants of high-traffic screens (Home, PDP, Cart). Add a foldable QA pass.Privacy Sandbox readiness
MEDIUM
Topics API / SDK Runtime not evaluated
If any analytics / advertising SDK is using GAID, the Privacy Sandbox migration (Topics API, SDK Runtime, Attribution Reporting) becomes relevant. Static review can't confirm GAID usage in third-party SDKs.
Recommendation: Audit Adobe + Firebase + ThreatMetrix configurations for advertising-ID dependence; subscribe to each vendor's Privacy Sandbox migration timeline.
INFO
Recommended cadence
Re-run this matrix every six months; new Android versions ship in August/September. Build a checklist into the quarterly release prep.
Costco Android · Code Review Report · Generated 2026-05-07 · 626 machine-curated findings