Launch time & MetricKit

Cold vs. warm launch

A cold launch is starting PawWalk from nothing β€” the OS hasn't got any of its code or data in memory, so it has to map the binary, run everything before main() (loading dynamic libraries, running static initializers β€” the pre-main phase), then build and show the first frame. A warm launch (the app was already recently in memory, e.g. resumed from the background) skips most of that and is much faster. Users mostly notice cold launches β€” it's the wait before the very first thing they see.

The budget that matters is time-to-first-frame: work that isn't needed to draw that first screen β€” an analytics SDK's full setup, prefetching data the learner won't see for a few taps, non-essential background registrations β€” should be deferred until just after, not done inline during launch.