The bug I almost shipped
Eighteen months, condensed into one decision held back by twenty-four hours.
A stranger on Reddit caught the bug that almost broke my launch.
I'd planned to ship Meringo to Google Play on Memorial Day Monday — months of solo development, finally ready. Then a Closed Testing user reported a cross-device Restore Purchase bug: anyone who bought on Device A wouldn't be able to use the app on Device B.
The math
- I estimated around 2–5% of users would hit it on day one.
- My early audience disproportionately runs multiple devices — audiophiles keep a phone and a DAP — so real exposure was higher than the headline number.
- One 1-star wave at launch sticks regardless of how fast you patch it.
- Holding launch by a day cost me exactly one day of momentum.
I almost shipped anyway. The AAB was built, the announcement was drafted, the website was ready. Most users won't hit it was right there in my head. I held it.
Early Tuesday morning I shipped 1.24.1 with the fix. About an hour after Production went live, the test user confirmed it working on their original failing devices.
"Ship fast" versus "ship right" isn't a personality trait. It's a specific decision, and the answer depends entirely on whether the bug hits 1-star-review users or churn-later users.
Cross-device restore is the former. That's the whole calculation — not courage, not discipline, just working out which kind of user the failure lands on before you decide.
Meringo is live. Grateful to the user who found it, grateful to my Closed Testing cohort, grateful that the feedback loop worked the way it's supposed to.
Meringo is a bit-perfect music player for Android DAPs and audiophile phones — and it hands you a SHA-256 receipt proving the claim. Get it on Google Play →