Files
stack/packages/mosaic/framework/skills/vueuse-functions/references/useVibrate.md
T
fargo 1a822493ba format: apply repo prettier (3.8.1) to the folded skills tree
963 markdown files reformatted with the repository's pinned prettier so
pnpm format:check covers the folded tree like every other repo file.

The formatter's embedded-language pass also normalized code fences
(TS semicolons, closed HTML tags in examples, lowercased CSS hex colors,
one renumbered list that skipped an index). Alphanumeric token deltas vs
the fold commit were audited file-by-file; all are formatter-equivalent
markup normalizations plus the four sanitized skills.
2026-08-19 14:37:17 -05:00

2.2 KiB

category
category
Browser

useVibrate

Reactive Vibration API

Most modern mobile devices include vibration hardware, which lets software code provides physical feedback to the user by causing the device to shake.

The Vibration API offers Web apps the ability to access this hardware, if it exists, and does nothing if the device doesn't support it.

Usage

Vibration is described as a pattern of on-off pulses, which may be of varying lengths.

The pattern may consist of either a single integer describing the number of milliseconds to vibrate, or an array of integers describing a pattern of vibrations and pauses.

import { useVibrate } from '@vueuse/core';

// This vibrates the device for 300 ms
// then pauses for 100 ms before vibrating the device again for another 300 ms:
const { vibrate, stop, isSupported } = useVibrate({ pattern: [300, 100, 300] });

// Start the vibration, it will automatically stop when the pattern is complete:
vibrate();

// But if you want to stop it, you can:
stop();

Type Declarations

export interface UseVibrateOptions extends ConfigurableNavigator {
  /**
   *
   * Vibration Pattern
   *
   * An array of values describes alternating periods in which the
   * device is vibrating and not vibrating. Each value in the array
   * is converted to an integer, then interpreted alternately as
   * the number of milliseconds the device should vibrate and the
   * number of milliseconds it should not be vibrating
   *
   * @default []
   *
   */
  pattern?: MaybeRefOrGetter<number[] | number>;
  /**
   * Interval to run a persistent vibration, in ms
   *
   * Pass `0` to disable
   *
   * @default 0
   *
   */
  interval?: number;
}
/**
 * Reactive vibrate
 *
 * @see https://vueuse.org/useVibrate
 * @see https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API
 * @param options
 *
 * @__NO_SIDE_EFFECTS__
 */
export declare function useVibrate(options?: UseVibrateOptions): {
  isSupported: ComputedRef<boolean>;
  pattern: MaybeRefOrGetter<number | number[]>;
  intervalControls: Pausable | undefined;
  vibrate: (pattern?: number | number[]) => void;
  stop: () => void;
};
export type UseVibrateReturn = ReturnType<typeof useVibrate>;