Vibration

navigator.vibrate(200) buzzes for 200 ms; navigator.vibrate([200, 100, 200]) alternates on and off, and navigator.vibrate(0) stops. It returns true when the pattern is accepted, not when the motor ran. Only Chrome 1 on Android vibrates: Firefox 555 removed the method in version 129, Safari 10 never shipped it, and Chrome ignores calls made before the user has interacted with the page. Treat vibration as an optional extra on top of visible feedback.