http://maidzonekwrk4xbbmynqnprq2lu7picruncfscfwmyzbmec6naurhyqd.onion/blog/2025-06-03-ios-web-haptics.html
The implementation: github.com/imputnet/cobalt/blob/main/web/src/lib/haptics.ts TLDR: They just create an <input type="checkbox" switch /> element, wrap it in a label, and click it, then it gets removed from the DOM. Easy stuff, really. It doesn't work when you try to .click() on the input element itself, which is what I was trying. I don't know if Apple will ever implement something to prevent this behavior, but until they do, I have created a library so you can use this wherever.