2xN

Craft

Undo Beats “Are You Sure?” Nearly Every Time

The confirmation dialog is the lazy answer to a design problem. A clean undo respects people more and protects them better.

18 January 2027 3 min read Craft

You delete an email and a box appears: "Are you sure you want to delete this?" You click "Yes" without reading it, because you were sure, which is why you pressed delete. The next day, you delete the wrong email, the same box appears, and you click "Yes" again without reading it. The dialog was meant to protect you, and it didn't.

That's the problem with confirmation dialogs. They work the first few times. After that, people learn to dismiss them automatically, and they stop offering any protection at all.

Why confirmations fail

A confirmation asks people to check their decision at the moment they're most confident about it. They've just chosen to do something, so of course they want to proceed. The dialog interrupts every correct action to guard against the occasional mistake, and because correct actions are far more common, people learn to click through.

They also slow everything down. In a product where people archive, delete or move things often, a dialog for every action becomes a constant tax.

How undo works better

Undo flips the approach. The action happens immediately, and a short message appears saying what happened, with an option to reverse it. "Message deleted. Undo." People who meant it carry on without interruption. People who made a mistake fix it with one tap.

Undo protects people at the moment they realise they've made a mistake, which is usually a second or two after the action, not before it. That's why it catches errors that confirmations miss.

Building it properly

Undo needs to be designed and built with care. The message has to stay visible long enough to notice, usually several seconds, and stay up while the pointer or focus is on it. It needs to be reachable with a keyboard and announced to screen readers. If people perform several actions in a row, each one should be reversible, not just the last.

Behind the scenes, this often means the action isn't final straight away. A deleted item might be hidden and marked for removal, then removed for good later. Many products keep deleted items in a bin for a set period, which acts as a longer-term undo. It's more work for developers than a dialog, which is part of why dialogs are so common.

When we still ask

Confirmations still have a place. We use them when an action is truly irreversible and serious: permanently deleting an account, cancelling a subscription, sending a payment or emailing a large list. In those cases, there's no undo to offer, and a pause is worth it.

When we do use a confirmation, we make it work harder. The dialog states exactly what will happen, such as "Delete 14 files permanently", rather than asking a vague question. The confirm button repeats the action, "Delete files" instead of "Yes". For the most serious actions, we sometimes ask people to type a name to confirm, which forces them to read.

Preventing the mistake upstream

Often the best protection is a design that makes the mistake less likely. Destructive buttons sit away from common ones, so a slip of the finger doesn't delete instead of save. They look different, usually less prominent. Clear labels make it obvious what an action will affect.

A matter of respect

Underneath all of this is a simple principle. Confirmations assume people don't know what they're doing. Undo assumes they do, and offers help on the rare occasion they don't. The second approach feels better to use and makes for calmer products, which is how we approach every product in our app development work.

If your product is full of "Are you sure?" boxes, we'd be happy to help you replace some of them with something kinder. Get in touch.

Ready to talk about your project?

Start a conversation →
→ Back to all posts