Journal
Cold-start budgets when the network is the product
Most cold-start budgets I am handed in intake calls were born on office Wi-Fi. Sometimes they were born on a device that never left a Faraday-cage meeting room in Sukhumvit. Those budgets are not wrong so much as they are about a different product: an app used by people who already have excellent connectivity and nowhere else to be.
Thailand’s actual first-open happens on commute 4G, on provincial towers, on a radio that is about to flip SIMs. If your time-to-interactive target assumes fibre, you will ship a first screen that looks instant in QA and sullen on the BTS. Users do not file this as “performance.” They file it as “the app is heavy,” then they abandon the store listing you paid to rank.
In the Cold Start & Time-to-Interactive Lab we ask for traces, not vibes. Capture first paint and interactive on at least one non-office network. Label the trace with where it was taken. A budget without a place name is a wish. We also forbid collapsing first paint and interactive into one “launch time.” Paint can look snappy while the primary button is still dead. That gap is where fake loading states breed.
Teams worry that a slower, honester budget will look bad next to a competitor’s marketing site. Let it. The competitor is probably measuring in a lab too. Your release gate should protect the commute, not the comparison slide. If leadership needs a benchmark, show two columns: lab Wi-Fi and field 4G. The embarrassment is the point. It funds the work.
A budget also needs a revisit rule. Networks change. A festival week is not a regression. A new image decoder that adds 400ms on mid-range Android in secondary cities is. Write the revisit rule into the same contract that names the metric owner. Otherwise the number fossilises on a wiki and everyone argues from memory.
If you want the longer method — including how we keep store conversion from celebrating a listing that cannot survive first open — it lives in Signal Architecture Studio week three and in the Atlas veto stack. This note is only the argument: stop letting the office impersonate the user.