← All guides

By · · Building in public · 2 min read

One last pass on a real phone

Before the listing went anywhere near "submit," the build went onto my own iPhone, off the simulator entirely. Most of Snugit had already been tested that way plenty of times. This pass wasn't about finding new bugs so much as confirming the two things a simulator flatly cannot tell you the truth about.

Face ID doesn't exist in a simulator

Snugit can lock individual saved items behind Face ID — you can fake that flow in Xcode's simulator with a menu option that pretends a scan succeeded, but "pretends to succeed" isn't the same test as an actual face, in actual light, actually failing sometimes and needing a retry. The lock screen held up fine. What I hadn't seen until this pass was the half-second the UI sits in right after a successful scan, before the item's content actually renders — fine at that length, but it's the kind of gap that only shows up once real hardware is doing the unlocking instead of a keyboard shortcut standing in for it.

An animation that only looked wrong at 120Hz

Deleting an item reflows the list around the gap it leaves, and on my phone's ProMotion display that reflow had a visible overshoot — the row briefly bounced past its resting position before settling, which read as janky rather than springy. It was correct-looking in every simulator recording, all of which cap out at a lower frame rate and smooth right over exactly that kind of overshoot. Tamed the animation curve until the settle looked intentional instead of like a glitch, which turned out to be a one-line change once the actual problem was visible.

Why this pass happens last, not first

Neither of these would have blocked App Review. Both would have sat there, live, on every phone that installed the app, indefinitely, because nothing about them would have shown up again until a user happened to mention it. The simulator is right for almost everything up until it isn't — and the parts it's wrong about are exactly the parts you only find by holding the actual thing.

Download Snugit — the version you'll get has already been checked on real hardware, not just a simulator's best guess at one.

Before this: the copy that had to be right before any of this shipped — writing the App Store listing.