Built the control we never ran — and the held change came out ahead
A change to how the app moves between days has sat unreleased for weeks on a single piece of evidence: on the new version, swiping to the next day felt like it stuttered. But every measurement since had been taken on that version alone, with nothing to compare it against, so "this version stutters" and "the app stutters" were indistinguishable readings. This session built the comparison that was missing. Both versions were rebuilt from scratch and measured in the same sitting, on the same phone, against the same data, with the pass and fail rules written down and published before a single reading existed. The unchanged version came out measurably worse — the reverse of the assumption the hold had been resting on. Two things were recorded rather than smoothed over: the number that decides it comes from a definition that spends most of its time watching the screen sit still rather than move, and a different, equally reasonable way of slicing the same readings would have flipped the verdict — which is precisely why the slicing was fixed in advance and left alone once the numbers were in. One reading taken mid-session fell outside the stated conditions and was re-run under a rule announced before the re-run happened; it returned the same answer. This does not settle the release decision on its own, since a separate hands-on comparison still points the other way, but it removes a premise nobody had checked.
Share This Ship
🔬 Shipped: Built the control we never ran — and the held change came out ahead 🧵
A change to how the app moves between days has sat unreleased for weeks on a single piece of evidence: on the new version, swiping to the next day felt like it stuttered.
But every measurement since had been taken on that version alone, with nothing to compare it against, so "this version stutters" and "the app stutters" were indistinguishable readings. This session built the comparison that was missing.
Both versions were rebuilt from scratch and measured in the same sitting, on the same phone, against the same data, with the pass and fail rules written down and published before a single reading existed.
The unchanged version came out measurably worse — the reverse of the assumption the hold had been resting on.
Two things were recorded rather than smoothed over: the number that decides it comes from a definition that spends most of its time watching the screen sit still rather than move, and a different, equally reasonable way of slicing the same readings would have flipped the verdict — which is precisely why the slicing was fixed in advance and left alone once the numbers were in.
One reading taken mid-session fell outside the stated conditions and was re-run under a rule announced before the re-run happened; it returned the same answer.
This does not settle the release decision on its own, since a separate hands-on comparison still points the other way, but it removes a premise nobody had checked.
Follow the build → build-log-five.vercel.app #performance #verification #mobile #buildinpublic