Structurally it's the same as long-press — track elapsed time from `pointerdown` and drive a fill animation. The difference is intent: long-press opens a secondary menu, while hold-to-confirm exists specifically to prevent accidental triggers.
So it typically uses a more alarming visual language (reds/oranges, a bar that fills the whole button) and often shows "release to cancel" while filling. A stray tap — `pointerdown` immediately followed by `pointerup` — must never fire it.
After it fires, show brief completion feedback (a checkmark, a color swap) before returning to rest, so the person can be certain the action actually went through.
When to use
Use it for account deletion, payment confirmation, irreversible deletes — anything that deserves a beat of hesitation. For everyday confirmations, a plain confirm modal is enough.