Reversibility of User Actions
A user action is reversible if the app provides a way to restore the app state and susceptible environement to a state which simulates the action never having been performed. An action reversal can either be performed with an “undo” button, as in the case of text editing, or by performing some new standard action, as in the case of switching back to an open tab in a browser. Reversibility is the most effective tool for preventing user mistakes, as it can be performed after the user discovers the effect of the action, and is therefore most informed. That being said, reversibility is not always possible, particularly in the case of real-world consequences, like sending an email. When this is the case, an app designer should consider adding an impediment to performing the action, as with confirmation modals.
Inherent reversibility
Inherent reversibility occurs whenever a user can simply change the application state back to where it was before the action, as in the case of switching back to a browser tab, or unchecking a check box. Inherent reversibility is not always possible, but has several advantages over a dedicated “undo” operation.
First, it is accessible to all people and all devices. Mobile devices have no keyboard to facilitate the CTRL + z button press and disabled users might struggle with a multibutton press when a keyboard is available anyways. And second, undo operations tend to be First In Last Out, meaning that reversing an action requires that every subsiquent action be reversed as well. No matter how much time has elapsed, I can always return to a tab that I’ve switched away from. For these reasons, designers should prioritize inherent reversibility over overt reversiblity.
Inherent reversibility is not always possible, however, which often occurs when an action is destructive. A destructive action is one which deletes Information, which could be anything from a phone number to an image. Unrecoverable information, like images, should be considered with extra caution, but the line between recoverable and unrecoverable information is often difficult to determine when designing an app. Is a phone number recoverable? When it’s your own, maybe, but not when it’s your only way of contacting a person you only met once.
Destructive actions cannot be made inherently reversible, but In most email applications, deletion has been replaced with the less destructive “Move to Trash” action. Moving an email to trash deletes it after a fixed period of time, often a month, but until then the action is inherently reversible, as the user may simply move the email back to its original location.
Explicit reversibility
Explicit reversibility is any action which is dedicated to reversing a prior action, which includes the CTRL + z keyboard shortcut, dedicated undo buttons, and an undo link in a toast, as in material design Snackbars. Explicit reversibility is an excellent fallback option when inherent reversibility isn’t feasable, but it also serves as an excellent addition to inherent reversibility when the reversal is simply time consuming. Moving an email out of trash and back into your inbox requires navigating to the trash folder, selecting the item, clicking the restore button, and navigating back to your inbox, whereas pressing CTRL + z is nearly instantanious.
Explicit reversibility is also universal. Restoring an email requires that the user understands that the trash folder exists, where to find it, and which button will actually move the email back to where it was. The CTRL + z shortcut exists in nearly every application, however, and even if the user isn’t aware of the shortcut, they may know that an undo exists in the context menu or application menu bar. Even if inherent reversibility exists and is easy to perform, tapping into these universal actions will help with the discoverability of the feature for the unfamiliar user. That is, if the option is available.