Our second customer created his account this morning and did what any tech does with a new tool: threw a couple of PDFs at it from his phone. Every one of them failed. Instantly. "This PDF could not be opened. It may be corrupted."
Two different files, both "corrupted," on the same phone, with the errors appearing the moment he picked the file โ before any upload could even start. Files don't fail like that; environments do. Our server logs agreed: his sign-ins arrived fine, and the uploads never arrived at all. Whatever was breaking, it was breaking on the phone.
The embarrassing part: our error message was useless. "May be corrupted" was one catch-all covering a dozen different failures. So the first fix wasn't a fix โ it was making the app tell the truth. We shipped an update where the error card names the actual reason, and asked him to try again.
His next screenshot did the diagnosis for us:
That one line says everything. Promise.withResolvers is a JavaScript feature that shipped in newer browsers; the PDF engine we use depends on it. Our customer's phone runs Samsung Internet on an older engine that doesn't have it โ so the PDF reader crashed on arrival, every time, regardless of file, Wi-Fi, or retries.
Here's the thing: that's not an edge case for us. Field technicians carry work phones that are three, four, five years old and update whenever they update. If the tool only works on this year's flagship, it doesn't work. So we patched the feature in ourselves โ on the page and inside the PDF engine's background worker โ and verified both paths against production. Phones that have the feature natively don't pay a penny for it; phones that don't, get it quietly filled in.
Elapsed time from his first screenshot to the fix being live: about an hour.
Two lessons we're keeping. One: an error message that names its reason turns a customer screenshot into a diagnosis. Two: the second customer teaches you things the first one can't โ because no two techs carry the same phone.
Built for the phone already in your pocket, whatever year it's from. First month free.
Request access See pricing