🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

nuxt-haptic

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nuxt-haptic

Nuxt 4 module for mobile haptics powered by web-haptics.

latest
Source
npmnpm
Version
0.2.2
Version published
Weekly downloads
3
-57.14%
Maintainers
1
Weekly downloads
 
Created
Source

nuxt-haptic

npm version npm downloads License Nuxt

Nuxt 4 module for mobile haptics, powered by web-haptics.

It wraps the browser Vibration API with a Nuxt-first DX:

  • client and server plugins, so SSR and prerender stay safe
  • useNuxtHaptics() auto-import
  • v-nuxt-haptic directive for declarative interactions
  • typed $nuxtHaptics injection
  • persisted enabled state with touch-only behavior by default

Install

npx nuxt module add nuxt-haptic

Or install manually:

bun add nuxt-haptic
export default defineNuxtConfig({
  modules: ['nuxt-haptic'],
})

Quick Use

<script setup lang="ts">
const { success } = useNuxtHaptics()
</script>

<template>
  <button v-nuxt-haptic="'selection'" type="button">
    Tap
  </button>

  <button type="button" @click="success()">
    Save
  </button>
</template>

Options

export default defineNuxtConfig({
  modules: ['nuxt-haptic'],
  nuxtHaptic: {
    defaultPreset: 'selection',
    enabled: true,
    persistPreference: true,
    preferenceStorageKey: 'nuxt-haptic:enabled',
    touchOnly: true,
    debug: false,
    showSwitch: false,
  },
})

defaultPreset accepts any web-haptics input, including built-in preset names, numbers, arrays, and custom pattern objects.

API

useNuxtHaptics()

Returns:

  • trigger(input?, options?)
  • selection()
  • light()
  • success()
  • warning()
  • error()
  • cancel()
  • enabled
  • isSupported
  • setEnabled(value)
  • toggleEnabled()
  • config

If you need types in userland:

import type { HapticInput, PresetName, TriggerOptions } from 'nuxt-haptic'

v-nuxt-haptic

String shorthand:

<a v-nuxt-haptic="'selection'" href="/contact/">Contact</a>

Object form:

<button
  v-nuxt-haptic="{ input: 'light', on: 'pointerdown', intensity: 0.7 }"
  type="button"
>
  Press
</button>

Directive fields:

  • input: any web-haptics input
  • on: click, pointerdown, or pointerup
  • intensity: optional intensity override
  • touchOnly: override module default per element
  • disabled: disable haptics for that node

Notes

  • On devices without Vibration API support, web-haptics falls back cleanly and can optionally emit debug audio.
  • The directive ignores non-primary mouse and pointer activation.
  • The server plugin provides a no-op directive and injection so Nuxt prerender does not break.

Development

# Install dependencies
bun install

# Prepare stubs and types
bun run dev:prepare

# Run the playground
bun run dev

# Run tests
bun run test
bun run test:types

# Build the package
bun run prepack

Credits

  • web-haptics by Lochie Axon for the underlying haptics runtime.

License

MIT

Keywords

nuxt

FAQs

Package last updated on 22 Jun 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts