Skip to content

Repository files navigation

browser-haptic

npm version npm downloads License: MIT

Lightweight haptic feedback for JavaScript. Uses the Vibration API where available (e.g. Android). On iOS Safari 17.4+ it uses a hidden input[switch] toggle so the native switch haptic fires. No runtime dependencies.

Try the playground → — live demo, install commands, and code samples for React, Vue, Svelte, Angular, and TypeScript.

Install

npm

npm install browser-haptic

bun

bun add browser-haptic

pnpm

pnpm add browser-haptic

yarn

yarn add browser-haptic

Usage

Import the default export as Haptic and call its methods:

import Haptic from "browser-haptic";

if (Haptic.isSupported()) {
  Haptic.light();
  Haptic.success();
  Haptic.vibrate([10, 50, 10, 50, 10]);
}

React example:

import Haptic from "browser-haptic";

const App = () => {
  const supported = Haptic.isSupported();

  return (
    <button onClick={() => Haptic.heavy()}>
      Tap me
    </button>
  );
};

You can also use named imports if you prefer: import { light, success, isSupported } from "browser-haptic".

API

Method Description
Haptic.isSupported() true if feedback is available (Vibration API or DOM for iOS switch fallback)
Haptic.hasVibration() true only when the Vibration API is available (e.g. Android)
Haptic.vibrate(pattern) Trigger feedback: number (ms) or number[] (vibrate/pause sequence)
Haptic.light() Short tap
Haptic.medium() Medium tap
Haptic.heavy() Strong tap
Haptic.success() Double tap
Haptic.warning() Triple tap
Haptic.error() Longer alert pattern

Type: VibrationPattern = number | number[] (for vibrate()).

On iOS Safari 17.4+, isSupported() is true but hasVibration() is false; the library uses a hidden native switch toggle.

Playground

A live demo and docs site is available at playground-neon-gamma.vercel.app. You can try haptic feedback in the browser, copy install commands, and see framework-specific examples (React, Vue, Svelte, Angular, TypeScript). The playground source lives in the playground/ directory of this repo.

Contributing

Contributions are welcome. To get started:

  1. Fork the repo and clone it locally.
  2. Install dependencies: bun install
  3. Make your changes and run tests: bun test
  4. Open a pull request with a short description of the change.

For bugs or feature ideas, please open an issue first so we can discuss.

License

MIT Copyright (c) 2026 Emirhan Kemal Kosem

About

Trigger haptic feedback in the browser (Android + iOS Safari). Vibration API + input[switch] fallback. MIT.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages