Measured why the plan list's scroll bar misbehaves — before fixing it
On a busy day, the scroll bar beside your plans changes size as you scroll, which reads as a glitch. The obvious explanation — that plan cards vary in height — turned out to be true and beside the point. We built a measurement rig instead of guessing: it fills a day with plans that differ only in the thing being tested (a long title that wraps, a flight, a plan with no weather yet), then reads the screen back under normal text, bold text, and the largest accessibility text size. The rig refuses to report a result it did not earn — it fails outright if the gestures driving it never landed, or if a comparison covered only part of the list. That caution paid for itself twice: an early version quietly measured two of nine cards and reported everything was fine. Then we did the same to our own conclusions: three rounds of adversarial review turned up twenty-four ways the rig could have reported a result it had not earned, and fixing them changed two of the answers — including reversing which fix we had recommended. Testing the option we had written off on paper is what showed it was competitive. No change has shipped to the app yet; the point of this work is that the next change is the right one.
Share This Ship
🔬 Shipped: Measured why the plan list's scroll bar misbehaves — before fixing it 🧵
On a busy day, the scroll bar beside your plans changes size as you scroll, which reads as a glitch. The obvious explanation — that plan cards vary in height — turned out to be true and beside the point.
We built a measurement rig instead of guessing: it fills a day with plans that differ only in the thing being tested (a long title that wraps, a flight, a plan with no weather yet), then reads the screen back under normal text, bold text, and the largest accessibility text size.
The rig refuses to report a result it did not earn — it fails outright if the gestures driving it never landed, or if a comparison covered only part of the list.
That caution paid for itself twice: an early version quietly measured two of nine cards and reported everything was fine.
Then we did the same to our own conclusions: three rounds of adversarial review turned up twenty-four ways the rig could have reported a result it had not earned, and fixing them changed two of the answers — including reversing which fix we had recommended.
Testing the option we had written off on paper is what showed it was competitive. No change has shipped to the app yet; the point of this work is that the next change is the right one.
Follow the build → build-log-five.vercel.app #performance #accessibility #ui #buildinpublic