You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Haptic feedback no longer works on iPhones running iOS 26.5+. This is caused by an Apple platform change, not a regression in Flarum's own code, but it leaves the haptic feedback feature (added in #4430 / #4434) silently dead on affected iOS devices while still advertising support.
Android is unaffected.
Root cause
Flarum's haptics go through framework/core/js/src/common/utils/haptic.ts, which delegates to the web-haptics package (currently 0.0.6).
On Android, web-haptics uses the real Web Vibration API (navigator.vibrate) — still works.
iOS Safari has no Vibration API, so web-haptics falls back to an undocumented WebKit trick: it injects a hidden <input type="checkbox" switch> and calls .click() on its associated <label> to fire the Taptic Engine.
Apple patched that exact trick in iOS 26.5. Programmatically calling .click() on a switch's label no longer fires haptics — they now only fire on a direct, physical user tap of the switch. There is no known programmatic workaround, so the iOS code path in web-haptics is effectively dead from iOS 26.5 onward.
Steps to reproduce
On an iPhone running iOS 26.5+, open a forum with haptic feedback enabled.
Perform any haptic-triggering action (e.g. like a post, submit a reply).
No haptic feedback occurs. The same action on Android still vibrates.
Affected code
framework/core/js/src/common/utils/haptic.ts — wrapper; isHapticSupported returns true for any iPhone UA, so the feature/UI is still advertised on iOS even though it can no longer work.
Call sites: addLikeAction (flarum-likes), PostControls, DiscussionControls, ReplyComposer, DiscussionComposer, plus the user preference toggle in SettingsPage.tsx.
Upstream status
The web-haptics maintainer has acknowledged the break but shipped no fix. Relevant upstream issues:
Latest published version is 0.0.6 (Mar 2, 2026), which predates the patch — bumping the dependency does not help.
References:
https://github.com/tijnjh/ios-haptics — independent confirmation: "Apple patched the bug this library used for haptic feedback in iOS 26.5… you can no longer trigger haptic feedback programmatically by calling .click() on a <label> that is for an <input type=\"checkbox\" switch />."
No code change — accept that web haptics are gone on iOS 26.5+ (Android keeps working) and wait for an upstream resolution.
Stop advertising iOS support — adjust isHapticSupported so it no longer claims haptics work on iOS, and hide the haptic-feedback preference toggle on affected devices, so users aren't offered a setting that does nothing.
Summary
Haptic feedback no longer works on iPhones running iOS 26.5+. This is caused by an Apple platform change, not a regression in Flarum's own code, but it leaves the haptic feedback feature (added in #4430 / #4434) silently dead on affected iOS devices while still advertising support.
Android is unaffected.
Root cause
Flarum's haptics go through
framework/core/js/src/common/utils/haptic.ts, which delegates to theweb-hapticspackage (currently0.0.6).web-hapticsuses the real Web Vibration API (navigator.vibrate) — still works.web-hapticsfalls back to an undocumented WebKit trick: it injects a hidden<input type="checkbox" switch>and calls.click()on its associated<label>to fire the Taptic Engine.Apple patched that exact trick in iOS 26.5. Programmatically calling
.click()on a switch's label no longer fires haptics — they now only fire on a direct, physical user tap of the switch. There is no known programmatic workaround, so the iOS code path inweb-hapticsis effectively dead from iOS 26.5 onward.Steps to reproduce
Affected code
framework/core/js/src/common/utils/haptic.ts— wrapper;isHapticSupportedreturnstruefor any iPhone UA, so the feature/UI is still advertised on iOS even though it can no longer work.addLikeAction(flarum-likes),PostControls,DiscussionControls,ReplyComposer,DiscussionComposer, plus the user preference toggle inSettingsPage.tsx.Upstream status
The
web-hapticsmaintainer has acknowledged the break but shipped no fix. Relevant upstream issues:Latest published version is
0.0.6(Mar 2, 2026), which predates the patch — bumping the dependency does not help.References:
.click()on a<label>that isforan<input type=\"checkbox\" switch />."Possible directions
isHapticSupportedso it no longer claims haptics work on iOS, and hide the haptic-feedback preference toggle on affected devices, so users aren't offered a setting that does nothing.web-hapticsrelease if/when Investigate iOS 26.5+ direct-tap switch fallback instead of programmatic .click() lochie/web-haptics#41 produces a viable technique.Environment
web-haptics: 0.0.6