App launch performance is within store limits
Why it matters
Apple's watchdog process kills any app that doesn't become interactive within 20 seconds of launch. Google Play triggers an ANR (Application Not Responding) rejection when the main thread blocks for more than 5 seconds. Synchronous I/O in module initialization, blocking API calls before the first render, or missing SplashScreen.hideAsync() calls all cause the app to appear frozen — ISO 25010:2011 time-behaviour failure. A slow launch doesn't just risk rejection; it trains reviewers to view the app as low quality, increasing scrutiny of everything else.
Severity rationale
High because exceeding Apple's 20-second watchdog threshold causes an automatic process kill and rejection, reproducible on any network-constrained device.
Remediation
Move all async startup work behind the splash screen and defer it past first render.
// app/_layout.tsx (Expo Router)
import * as SplashScreen from 'expo-splash-screen';
import * as Font from 'expo-font';
SplashScreen.preventAutoHideAsync();
export default function RootLayout() {
const [ready, setReady] = useState(false);
useEffect(() => {
async function prepare() {
try {
await Font.loadAsync({ 'MyFont': require('./assets/MyFont.ttf') });
} finally {
setReady(true);
await SplashScreen.hideAsync();
}
}
prepare();
}, []);
if (!ready) return null;
return <Slot />;
}
Add a 10-second AbortController timeout to any API call that runs during startup. Test on a low-end device or throttled simulator, not a flagship.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the App Store Review Blockers Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · time-behaviour — Time Behaviour (ISO 25010 Performance Efficiency)
- external · apple-watchdog-launch — Apple Watchdog Termination — app launch timeout (iOS)
Taxons
History
- 2026-04-18·v1.0.0·Initial import from app-store-review-blockers·automated