Patterns for telling the user what just happened, what they can do next, and what deserves a moment of friction.
The button briefly becomes its own success state. No toast, no modal. The affordance and the feedback are the same element, which keeps the user's eyes where their hands already are.
sk_live_4242424242424242Trust the input. Apply the change immediately, reconcile on response, roll back visibly on failure. The user keeps their flow; the network catches up. Don't disable the button mid-flight.
Calibrate the friction to the blast radius. A dismiss should be one click; a drop-database should require typing the name. Don't make a delete feel like an unsubscribe, and don't make an unsubscribe feel like a delete.
Reversible, low blast radius (dismiss a notification, hide a row).
Reversible within a window (delete a draft, archive an item). One extra click.
Irreversible, high blast radius (drop a database, delete an org). Make the user prove they know what they're naming.
production-db to confirmLayout-stable placeholders sized to the final content. Spinners suggest unknown duration and collapse the layout; skeletons suggest known-but-loading and hold the shape so nothing reflows when data lands.