This is one of the 8 golden rules of UI , and falls into Rule 6, although it also has touch points iwth Rules 5 and 7
5 Offer simple error handling. As much as possible, design the system
so the user cannot make a serious error. If an error is made, the
system should be able to detect the error and offer simple,
comprehensible mechanisms for handling the error.
6 Permit easy reversal of actions. This feature relieves anxiety,
since the user knows that errors can be undone; it thus encourages
exploration of unfamiliar options. The units of reversibility may be a
single action, a data entry, or a complete group of actions.
7 Support internal locus of control. Experienced operators strongly
desire the sense that they are in charge of the system and that the
system responds to their actions. Design the system to make users the
initiators of actions rather than the responders.
So a simple Undo button (with multiple Undo actions ) is the easiest, simplest, and least intrusive option.
If you want something more complex, this is how I would do it:
- Track user interaction (deletion) and don't allow the system to interrupt that interaction with new items. In other words: If the system detects that you are deleting messages, then any incoming message in the last 30 seconds or so should neither be displayed nor available for deletion
- Interrupt the user flow: If the user is interacting with the system and attempts to delete a message that is newer than 30 seconds, display a warning or dialog that alerts the user to this
3 Offer informative feedback. For every operator action, there should
be some system feedback. For frequent and minor actions, the response
can be modest, while for infrequent and major actions, the response
should be more substantial.
4 Design dialog to yield closure. Sequences of actions should be
organized into groups with a beginning, middle, and end. The
informative feedback at the completion of a group of actions gives the
operators the satisfaction of accomplishment, a sense of relief, the
signal to drop contingency plans and options from their minds, and an
indication that the way is clear to prepare for the next group of
- create a virtual folder with recently deleted messages for the last 24 hours
Then again, as I said before, I would just use Undo (and maybe combine it with the first alternative approach "under the hood"). But of course, it's just my subjective view, guess Apple engineers ran a lot of usability tests and have their reasons to do what they do