An interesting — yet not too uncommon — UI/UX problem is to allow users to delete stuff, but prevent them from accidentally deleting things. There are several typical approaches:
Just let users delete
Ouch. Obviously this is the problem we’re trying to solve here. NOT a solution.
Are you sure?
Show a confirmation dialog to let users confirm that they really want to delete. This is better than nothing, but still presents a common problem: users might hit the OK button too quickly and regret it.
Type “DELETE” to confirm
This approach has become popular recently. It forces users to stop and think, and the act of typing makes the intention clear. There are some variations that ask the user to type in the name of the resource that they want to delete. This is some times even better, as it’s even clearer what gets deleted.
The downside of this approach is that it’s tedious. But when it’s best to be safe than sorry, it works great.
Rather than force users to confirm their intent, can you let them undo the action? It works really great in a lot of cases. Not all of them however.
Schedule for deletion
What happens when you want your entire account to be deleted? Let users delete their accounts. However, rather than delete instantly or ask for confirmation, schedule the deletion for X days. Mark the account as
to_be_deleted, and prevent any further actions on the account. The only thing you show is a screen/page that tells the user
Your account is scheduled for deletion in X days. [Click to restore]
It also has the added benefit of preventing account recycling and still comply with GDPR: let’s say you have a trial version on your website, and users “extend” their trial by deleting their accounts and create a new one.