Prototype · zero audio files · JUL 2026

Every click, felt.

Synthesized tactile sounds (Web Audio) + real device haptics, in ~4KB with zero dependencies. Tap anything below — on Android you'll feel it; on iOS ≤26.4 too.

The palette

12 synthesized sounds, each with a matched vibration pattern (ms). Every trigger is subtly randomized (±2% pitch) so it never feels robotic.

In real components

Wired with data attributes only — no per-component JS.

Buttons

Toggles

Price alerts
Snapshots
Weekly digest

Settings (persisted)

Sounds
Haptics
Volume
Haptic intensity

Defaults respect prefers-reduced-motion (both off if set).

Event log

Integration (the whole story)

<script src="/lcfx.js"></script>

<button data-fx-press data-fx-release>Save</button>   <!-- press+release feel -->
<button data-fx="success">Submit</button>              <!-- one-shot on click -->
<input type="checkbox" data-fx-toggle>                 <!-- toggle on/off pair -->

LCFX.trigger('success')      // programmatic: sound + haptic together
LCFX.config({volume:.5})     // persisted user prefs

Engine source: /lcfx.js (~4KB, readable). Haptics: navigator.vibrate on Android; on iOS a hidden <input type="checkbox" switch> toggle fires the Taptic Engine (iOS 17.4–26.4 — Apple patched 26.5; degrades silently to sound-only).