| UI or UX | UI + UX - Recovery surface for failed or uncertain background saves | UI + UX - Background-saving form progress | UI + UX - Unpublished object version lifecycle | UI + UX - Scoped failed-operation retry control |
| UI guidance | Keep the user's latest local value visible or copyable until recovery succeeds, and distinguish Retry save, Keep local copy, Restore last saved, Compare versions, Download copy, and Continue after recovery. | Render a clear autosave message before users start, then keep a persistent status surface for Pending, Saving, Saved with timestamp, Failed, Retry, and unsafe-to-leave states. | Label the current version explicitly as Draft, Unpublished changes, Published, Active, Locked, or Unavailable, and place that label near the object title, list row, editor header, and publish actions. | Place Retry next to the failed operation, object, or request summary, and name the exact action being retried such as Retry export or Retry payment authorization. |
| UX guidance | Use autosave recovery when users need to preserve effort after background saving fails, stalls, conflicts, expires, or only stores a local copy. | Use autosave when losing progress would hurt and background persistence is safer than making users hunt for a distant Save button. | Use draft state when users need to pause work on an object, return later, and decide whether to publish, activate, discard, or keep editing an unpublished version. | Help the person reach a clear task outcome. |
| Good UI | A claim form says Household income answer failed to autosave at 10:42, keeps the typed answer visible, and offers Retry save, Copy answer, Restore last saved, and Continue after saved. | A long application step says the application is saved on every change, shows Saving after an edited title blurs, then shows Draft saved just now with a timestamp. | A knowledge article header says Draft saved today, shows the currently published title, and offers Resume draft, Compare with published, Discard draft, and Publish. | A report export card says Export CSV failed, keeps the saved filters visible, shows Attempt 1 of 3, and offers Retry export with request EXP-2048. |
| Bad UI | The app clears the field after a failed autosave and offers only Reload page. | A green Saved toast appears after one field saves, while another changed field is still pending or failed. | A draft label is missing from the editor, so users publish or discard the wrong version. | Retry creates duplicate records, payments, invitations, exports, or queued jobs. |
| Good UX | A user loses network while writing a long answer, sees it is saved on this device only, reconnects, retries the same value, and continues after the timestamp updates. | A user writes a long answer, pauses, sees Saving, then sees Draft saved just now and can leave knowing the draft is recoverable. | A user opens a published article that has an unpublished version, chooses Resume draft, reviews a change summary, publishes, and sees the page become visible to viewers. | A second failure increases the wait before the next attempt and then offers cached export, background notification, or support reference after attempts are exhausted. |
| Bad UX | A stale saved timestamp hides that the latest answer failed after the timestamp. | A password or permission field autosaves immediately and takes effect before the user reviewed the consequence. | A user discards a shared draft and unknowingly removes another editor's unpublished changes. | The app retries aggressively every second during an outage and makes the service harder to recover. |
| Best fit | Autosave failed, stalled, expired, or became uncertain while users still have meaningful local work. | Users spend meaningful time entering form content or application progress. | Users need to pause and resume unfinished work across sessions, devices, or routes. | A load, save, submit, upload, export, sync, payment, or background request failed for a transient or uncertain reason. |
| Avoid when | The work is a durable draft object with list-level resume, publish, and discard lifecycle. | The form is short enough that a visible manual Save or Submit is clearer. | The change is a small one-field edit that should be saved or canceled immediately. | The error is caused by invalid user input and correction is required. |
| Required state | Clean saved state with current server timestamp. | Initial state that explains progress will be saved automatically. | Published or active state with an available draft. | Retryable failed state with affected operation, object, and preserved request context. |
| Accessibility burden | Place recovery controls in reading order near the affected field, section, or submit action. | Expose autosave status changes in a polite status region so assistive technology users hear Saving, Saved, and Failed states. | Use headings and status regions so screen reader users know whether they are editing a draft or viewing the active version. | Expose pending, failed again, cooldown, succeeded, exhausted, and non-retryable outcomes through status text or live regions. |
| Common misuse | Leaving a green Saved label visible after a failed or stale autosave. | Showing Saved when only an older change was saved. | Using Saved to mean both saved draft and published content. | Offering Retry for every error regardless of whether the user or system state can change. |