Self-replying to add that it's important to know when not to use a confirmation dialog (for instance, in a "critical path" of rote data entry), and that your customers may organically show you that things are critical-path that you may not have thought about. In that case, though, having a good abstraction for confirmation dialogs is even more critical, because it's easy to remove (or A/B test) without feeling like you're throwing out significant amounts of effort; it becomes a zero-point story, so to speak. When you're writing less code, there's less code to remove when that becomes necessary, and that's why abstractions are such a big part of our roles!