Graceful Recovery
When the product fails, own it, explain it, and repair the userâs progressâso trust survives the bad day.
What it is
Section titled âWhat it isâThe designed response after something breaks: honest error messages, preserved work, undo, retry that works, andâfor larger incidentsâstatus updates and follow-up that close the loop. This is the card for when the bad thing has already happened, which is what separates it from its closest neighbour, Fail Safe: Fail Safe is the seatbelt that stops the mistake from happening at allâsafer defaults, undo, confirmation before something irreversibleâwhile Graceful Recovery is the paramedic that shows up once the crash has already occurred. A product needs both, but they are not interchangeable: turning every error state into another confirmation dialog is a category error, and so is treating a genuine outage as something a better warning message could have prevented.
In practice this means treating error states as a designed surface rather than whatever the framework renders by defaultâthe specific error state described in Surfaces, Flows, and Statesâand treating an incident as having a beginning, middle, and end that someone is responsible for narrating, not just a log line that eventually resolves itself.
Why it works
Section titled âWhy it worksâFailures are emotional peaks, and the PeakâEnd Rule is unambiguous that people remember peaks and endings out of proportion to their actual durationâa single bad error in an otherwise smooth session can become the entire story the user tells about the product afterwards. A recovery that names what happened plainly, protects the userâs effort, and hands them a working next step turns that moment from a trust withdrawal into a trust deposit: it is direct evidence, delivered at the exact moment doubt is highest, that the product is dependable under pressure. This is the mechanism behind Calibrated Trustâs repair stageâa well-handled failure can leave a userâs trust higher than before, because they have now seen how the product behaves when things go wrong.
The failure mode this TTP exists to prevent is compounding: a vague âsomething went wrong,â input the user has to retype, or a dead end with no path forward turns one bug into two lossesâthe original failure, plus the work and time spent recovering from it, plus the doubt that the productâs other claims can be trusted either. Skipped entirely, recovery design leaves every failure to land at full emotional force with nothing absorbing the blow; overdone, in the form of apology without repair, it teaches users that contrition is cheap and does nothing to restore what they actually lost.
When to use it
Section titled âWhen to use itâ- Error states of any kind: validation, sync, payment, network, model failure
- Crashes or timeouts where user input is at risk
- Outages and degraded service that need in-product or status-page communication
- After the incident: what changed, and whether affected users are made whole
- Say what went wrong in plain language, what was preserved, and the most likely fixâinline, near the problem
- Protect the userâs work by default: autosave, drafts, retry queues, safe re-submission
- Offer a real path forward (retry, alternative route, support with context attached)ânever a dead end
- Take responsibility in copy; the system failed, not the user
- For incidents, communicate early, update honestly, and follow up when resolved
Donât
Section titled âDonâtâ- Show raw codes, jargon, or blame-the-user phrasing
- Discard input on failure, or make users re-enter what the system lost
- Hide known outages while support queues fill with âis it just me?â
- Apologise without repairâan apology with lost data is theatre
- Over-apologise for trivial hiccups until the words lose meaning
Founder Tip
Section titled âFounder TipâUsers forgive failure; they do not forgive being lied to or losing their work. Budget recovery design for your three most common failures before polishing the happy path.
Make It Yours
Section titled âMake It Yoursâ- What are your top five real-world failures (from logs and support), and what does the user currently see for each?
- For each, what user effort is at riskâand how is it preserved?
- Can the user always tell the difference between âbroken,â âwaiting,â and âmy mistakeâ?
- Who writes incident copy, and how fast can it ship to the affected surface?
- After a serious failure, what follow-up would make an affected user say âthey handled that wellâ?
Related concepts
Section titled âRelated conceptsâFurther reading
Section titled âFurther readingâ- Error-Message Guidelines (Nielsen Norman Group) â Plain language, precise diagnosis, constructive next steps.
- An Error Messages Scoring Rubric (NN/g) â A systematic way to audit and prioritise error-state UX debt.
- User Control and Freedom (NN/g) â Undo and emergency exits as the foundation of confident use.
- GOV.UK Design System: Error message â A rigorous, accessible standard for respectful error communication.
- The PeakâEnd Rule (NN/g) â Why failure moments dominate what users remember about your product.
Agent skill
Section titled âAgent skillâ- Primary command:
/productfeeling statesâ design error and outage surfaces that preserve work and offer a real next step - Related commands:
/productfeeling trust,/productfeeling friction,/productfeeling anti-patterns,/productfeeling peaks-ends - When the agent should load this TTP: âerror messageâ, âerror stateâ, âoutage commsâ, âlost workâ, âretry flowâ
- Companion handoff: Impeccable â error-state UI, retry, and preserved-input craft; DocSlime â incident comms templates and status-page requirements
- Feeling north star this TTP serves: safety after failure, kept trust, protected effort
- Anti-goals: blame-the-user copy, data loss on failure, hidden outages, apology without repair
- Reference path:
skill/reference/states.md