Cold Start
What is Cold Start?
Cold start measures app launch latency when the app process is not in memory, the user has either rebooted their device or the OS has evicted the app process. It is the most user-visible performance metric for native mobile apps. On Android, cold start encompasses: process creation, Application.onCreate(), Activity.onCreate(), and the first draw. Google Play defines cold start benchmarks relative to the device's performance tier. On iOS, the equivalent metric is 'pre-main' time (dylib loading, objc class registration) + main thread execution to first frame. Apple enforces a 400ms pre-main time limit, apps that exceed this during App Store review may be rejected. Apdex scores, 1-day retention, and app store ratings all correlate with cold start performance.
Related terms
Cold Start, frequently asked questions
A cold start on Android is an app launch where the system must create the app process from scratch, the app was not previously in memory. This is the slowest launch scenario. A cold start includes: process fork, Application class initialization, Activity creation, layout inflation, and first draw. Google Play's Android vitals tracks cold start rate above 5 seconds as a 'bad behavior' threshold.
Measure using Android Studio's Profiler (CPU trace from launch), Firebase Performance Monitoring's _APP_START metric, or the 'am start -W' shell command. Improve by: deferring non-essential work out of Application.onCreate() to background threads, using App Startup library for initializer ordering, avoiding synchronous I/O at startup, and using baseline profiles to pre-compile hot code paths.