| UI or UX | UI + UX - Dirty-editor decision prompt before closing, canceling, switching, or replacing unsaved edits | UI + UX - Attempted-departure safeguard for unrecoverable in-progress work | UI + UX - Background-saving form progress | UI + UX - Consequential alert decision |
| UI guidance | Name the edited object, summarize what changed, and offer distinct Save changes, Discard changes, Review changes, and Keep editing choices when the system can support them. | Show a warning only when the user attempts to leave with real unsaved, pending, failed, or unrecoverable work; place in-app route warnings at the point of departure with Save and leave, Discard and leave, and Stay editing choices. | 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. | Render an alert-style modal decision with a specific title, consequence description, safe cancellation, and a destructive action label that names the object or scope. |
| UX guidance | Use an unsaved changes prompt to protect local edits at the moment a user is about to abandon or replace them inside the product. | Help the person reach a clear task outcome. | Use autosave when losing progress would hurt and background persistence is safer than making users hunt for a distant Save button. | Help the person reach a clear task outcome. |
| Good UI | A profile editor close button opens Save changes to Billing contact?, lists edited phone and department fields, and offers Keep editing, Review changes, Save changes, or Discard changes. | A grant form user clicks Back with two unsaved answers; a dialog names the changed section and offers Save and leave, Discard and leave, or Stay editing. | 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. | Delete Research archive? explains that 14 notes and shared links will be permanently removed, offers Keep archive, and labels the danger action Delete archive. |
| Bad UI | A tab switch silently replaces the dirty editor with a different record and loses the user's typed notes. | Every navigation shows Are you sure you want to leave? even after the form is saved. | A green Saved toast appears after one field saves, while another changed field is still pending or failed. | The red destructive action is enabled immediately and sits where users expect the routine primary button. |
| Good UX | A user edits two fields, clicks Close, reviews the changed fields in the prompt, saves, and the editor closes only after the saved state is confirmed. | A user chooses Discard and leave from an in-app warning and is taken to the intended destination with a clear understanding of what was discarded. | A user writes a long answer, pauses, sees Saving, then sees Draft saved just now and can leave knowing the draft is recoverable. | Cancel, Escape, and Keep archive leave the archive unchanged and return focus to Delete archive. |
| Bad UX | A user chooses Save, the request fails, and the editor still closes as though the latest values were safe. | A user clicks a sidebar link after typing a long answer and loses it because the product only watched final Submit. | A password or permission field autosaves immediately and takes effect before the user reviewed the consequence. | Every archive, filter, and dismiss action opens the same confirmation until users click through automatically. |
| Best fit | A close, cancel, switch, or edit-mode exit would discard unsaved local changes. | A route change, tab close, reload, browser Back, external link, or sign-out action can interrupt a task. | Users spend meaningful time entering form content or application progress. | The action is destructive, irreversible, costly, security-sensitive, privacy-affecting, or externally visible. |
| Avoid when | Every latest change is already saved or safely recoverable. | The page is clean, read-only, or all changes are safely saved and recoverable. | The form is short enough that a visible manual Save or Submit is clearer. | The action is routine and easily reversible. |
| Required state | Dirty editor state with changed-field tracking. | Dirty unsaved state with local unsaved-work status. | Initial state that explains progress will be saved automatically. | Pre-action state with an explicit consequential trigger. |
| Accessibility burden | Use dialog or alertdialog semantics when the prompt interrupts the current task and requires a response. | Use a real dialog or alertdialog for in-app warnings, with a heading that names the loss risk. | Expose autosave status changes in a polite status region so assistive technology users hear Saving, Saved, and Failed states. | Use alertdialog semantics or platform equivalent when the decision is urgent and requires a response. |
| Common misuse | Prompting when nothing changed. | Warning on every navigation regardless of whether work is dirty. | Showing Saved when only an older change was saved. | Asking users to confirm every routine action until they stop reading. |