App startup time

Also known as: cold start · warm start

On this page 7

App startup time is the interval between the user’s launch action, such as tapping an icon, and the moment the app displays its first frame and becomes usable. In mobile performance, it is one of the most visible quality metrics, because every session begins with it and users judge an app’s speed largely by how fast it opens.

Startup time is not a single number. Platforms distinguish cold, warm and hot starts depending on how much of the app is still in memory, and they separate the time to the first frame from the time until real content is shown.

Cold, warm and hot starts

The type of start depends on the state of the app process when the user launches it. A cold start is the slowest and most important case, because it includes every step from creating the process to drawing the first screen.

Start typeStarting stateWork required
Cold startNo process existsCreate process, load code, initialize app, build and draw first screen
Warm startProcess exists, screen destroyedRecreate the screen and restore saved state
Hot startProcess and screen in memoryBring the existing screen to the foreground
Types of app start

Cold starts happen after a reboot, after an update, and whenever the operating system has reclaimed memory by killing the app in the background. On low-memory devices this happens often, so cold start performance affects real users far more than tests on a developer’s phone suggest.

What happens during a cold start

A cold start is a chain of steps, and every step on the main thread delays the first frame. Understanding the chain shows where time is spent and which parts the developer controls.

  1. The system creates the process and maps the app binary and libraries into memory.
  2. The runtime loads code; on iOS the dynamic linker binds frameworks, and on Android the runtime loads compiled code.
  3. The application object initializes, including every library and dependency set up at launch.
  4. The first screen is created, its layout is inflated or composed, and data is read.
  5. The first frame is measured, drawn and handed to the display.

Developers typically control steps three and four, which are also where the largest delays hide. Common culprits are synchronous disk or network access, heavy dependency injection graphs, analytics and advertising SDKs initialized eagerly, and complex first-screen layouts.

How app startup time is measured

Each platform defines standard startup metrics so that results are comparable across devices and builds. The table lists the most widely used ones.

MetricPlatformDefinition
Time to initial display (TTID)AndroidLaunch until the first frame is drawn
Time to full display (TTFD)AndroidLaunch until the app reports content is ready
Time to first frameiOSLaunch until the first frame renders
Launch time histogramiOSField distribution of launch times across users
Startup vitalsAndroidShare of sessions with excessively slow starts
Startup metrics on Android and iOS

Measurements in the lab should run on release builds on mid-range or low-end devices, repeated many times, with results reported as a median and a high percentile such as p90. Debug builds and single runs give misleading numbers.

As practical reference points, Android treats a cold start of 5 seconds or more as excessive in its vitals reporting, and Apple recommends drawing the first frame within roughly 400 milliseconds. Well-optimized apps usually reach a cold start of about one second or less on typical devices.

Techniques that reduce app startup time

The most effective optimization is doing less work before the first frame. Anything that is not needed to show the first screen should be deferred, made lazy or moved off the main thread.

TechniqueHow it helpsPlatform
Lazy initializationStarts SDKs only when first usedBoth
Background threads for I/OKeeps the main thread freeBoth
Baseline ProfilesPrecompiles startup code pathsAndroid
Fewer dynamic frameworksReduces dynamic linking timeiOS
Simpler first screenLess layout and rendering workBoth
Cached contentShows stored data while fresh data loadsBoth
Startup optimization techniques

A splash screen does not make an app faster. It covers the time to the first frame with a branded image, but the real wait until usable content appears stays the same unless the underlying work is reduced.

Startup time is closely linked to other mobile performance metrics. Very slow startup can escalate into an ANR or a watchdog termination when the main thread is blocked long enough for the system to intervene.

MetricWhat it measuresRelation to startup
ANRMain thread unresponsive for several secondsSevere startup blocking can trigger it
Crash rateUnexpected terminationsStartup crashes block the whole app
Frame rendering timeSmoothness after launchShares the same main-thread causes
Battery usageEnergy per sessionHeavy launch work also drains power
Startup time and neighboring metrics

Stripped to the essentials

App startup time is how long you wait after tapping an app before you can use it. A fast app opens almost instantly. A slow one makes you stare at a logo.

Opening an app from scratch is like opening a shop in the morning. The lights, the till and the shelves all need preparing. A well-run shop opens the door first and finishes the rest while customers browse. Good apps work the same way.

Where it is applied

A grocery delivery app shows a median cold start of 3.8 seconds on mid-range Android phones, and store reviews mention the slow launch. Profiling a release build reveals that the app initializes six third-party SDKs, reads a large configuration file and loads the full product catalog before drawing the home screen.

The team defers four SDKs until after the first frame, moves file reading to a background thread, shows cached products from the last session and adds a Baseline Profile. The median cold start falls to about 1.2 seconds, the share of slow starts reported in vitals drops sharply, and the checkout conversion rate improves in the following release cycle.