What Your App Should Say When It Breaks: Writing Error Messages People Actually Understand
A good error message says what happened, whose fault it is, what to do next, and doesn't erase the user's work — turning a broken moment into a retry instead of someone abandoning your app for good.
Every app breaks sometimes. The internet drops, a server hiccups, someone types a phone number with letters in it. That part you can’t fully prevent. What you can control is the error message — the text your app shows when something goes wrong — and that one message is often the difference between a user who shrugs and tries again, and a user who quietly decides your app is broken and never comes back.
Most AI-built apps get this exact moment wrong. Not because the builder did anything careless, but because error messages are the part nobody thinks about until something goes wrong in front of a real person. By default, apps tend to show one of two worst possible things: nothing at all, or a scary block of technical text. Let’s fix both.
Why do apps fail silently or show scary error messages?
Apps break badly in one of two ways: they say nothing when something fails, or they show a technical error a normal person can’t read. Both leave the user guessing, and guessing is what makes people give up.
The silent failure. A freelancer I’ll call Maya built a booking form for her photography business. A client tapped “Confirm Booking,” the button flickered, and… nothing. No confirmation, no error, no spinner. Did it work? The client wasn’t sure, so she booked again. Now Maya had two bookings for the same slot and a confused customer. The app hadn’t crashed — the save just failed, and the app said nothing, so the person in front of it had no idea what reality was.
The scary tech error. The other failure is louder and somehow worse. A volunteer running a community fundraiser tried to upload a spreadsheet and got a red box that said Error 500: Internal Server Error. She read it as “I broke something.” She didn’t try again, didn’t email for help, just closed the tab — because the message made the problem sound like her fault and like it might be unsafe to touch again.
Both users hit a normal, recoverable problem. Both walked away, because the app’s error messages either said nothing or said something frightening.
What makes a good error message?
A good error message does four small things, in plain words: it says what happened, says whose problem it is, says what to do next, and doesn’t lose the user’s work.
- Says what happened — “We couldn’t save your booking,” not silence and not
500. - Says whose problem it is — usually the honest answer is “ours,” and saying so calms people down.
- Says what to do next — “Try again in a moment” or “Check your internet connection and retry.”
- Doesn’t lose their work — whatever they typed is still sitting in the form when the message appears.
That’s it. No apology essay, no error code as the headline, no blame. Here’s the same three failures, rewritten:
- ❌ (nothing happens) → ✅ “We couldn’t save that just now. Your details are still here — tap Confirm to try again.”
- ❌
Error 500: Internal Server Error→ ✅ “Something went wrong on our end uploading that file. It’s not you. Give it another try in a minute.” - ❌
Invalid input→ ✅ “That phone number doesn’t look right — it should be 10 digits, like 555-123-4567.”
Notice the last one points at the specific field and shows what good looks like. “Invalid input” makes someone hunt; “that phone number should be 10 digits” tells them exactly what to change.
Which app errors should you fix first?
You don’t need a custom message for every possible failure — three cover almost everything that goes wrong in a typical app: the save or submit that fails, the input the app can’t use, and the thing that breaks on your end.
The save or submit that fails. The most trust-destroying one, because the user did everything right and isn’t sure if it worked. Always confirm success and explain failure. Never leave them guessing, and never throw away what they typed.
The “we can’t use what you typed” (validation). This isn’t really an error — it’s a misunderstanding. Catch it the moment they leave the field, point at the exact field, and show an example of the right format. Don’t wait until they hit Submit to reveal a wall of red.
The “something on our end broke.” Genuine server or network problems. Say it’s on your end, keep it calm, and give them a retry. The user can’t fix your server, so don’t make them feel like they have to.
Three habits that quietly help
A few things separate apps that handle failure gracefully from ones that don’t:
- Never show a raw error code as the whole message. A code can sit in small text underneath for support, but the headline a human reads should be a sentence, not
ERR_CONN_RESET. - Never blame the user. “You entered something wrong” stings; “that date looks like it’s in the past — did you mean next month?” helps. Same information, completely different feeling.
- Always keep their input. If the app reloads or the save fails and the form empties out, you’ve turned a small hiccup into ten minutes of re-typing. People forgive a failed save. They don’t forgive doing the work twice.
How do you get your AI builder to write better error messages?
You can get most of this in one request — paste something like the prompt below and your AI builder will apply the plain-language rules above across your app.
“When a save or upload fails, don’t fail silently and don’t show a technical error code. Show a short, friendly message in plain language that says what happened, says it’s okay to try again, and keeps whatever the user already typed. For form fields, validate as the user leaves each field and show a specific message with an example of the correct format.”
Then ask it to walk you through what happens in three cases: the internet is off, a required field is blank, and the server is slow. If the answer to any of them is “it shows nothing” or “it shows the raw error,” that’s your next fix.
How do you test your app’s error messages?
Turn off your wifi, open your app, and try to do the main thing — that’s the whole test, and it takes two minutes.
Book the slot, save the note, upload the file. Watch what it says. Did it tell you something a normal person would understand? Did it lose what you typed? Now turn wifi back on and deliberately type garbage into a field. Same questions.
Most apps fail this test the first time, and that’s fine — it just shows you exactly where to start. You don’t have to make every error message perfect. Find the one thing in your app that breaks most often, and make that message kind, clear, and honest first. The next time a real person hits it, they’ll try again instead of leaving — and trying again is the whole game.