--- category: Watch alias: debouncedWatch --- # watchDebounced Debounced watch. The callback will only be invoked after the source stops changing for the specified duration. ## Usage Similar to `watch`, but offering extra options `debounce` and `maxWait` which will be applied to the callback function. ```ts import { watchDebounced } from '@vueuse/core' watchDebounced( source, () => { console.log('changed!') }, { debounce: 500, maxWait: 1000 }, ) ``` ### Options | Option | Type | Default | Description | | ---------- | -------------------------- | ------- | ------------------------------------------ | | `debounce` | `MaybeRefOrGetter` | `0` | Debounce delay in ms (can be reactive) | | `maxWait` | `MaybeRefOrGetter` | — | Maximum wait time before forced invocation | All standard `watch` options (`deep`, `immediate`, `flush`, etc.) are also supported. ### Reactive Debounce Time The debounce time can be reactive: ```ts import { watchDebounced } from '@vueuse/core' const debounceMs = ref(500) watchDebounced( source, () => { console.log('changed!') }, { debounce: debounceMs }, ) // Later, change the debounce time debounceMs.value = 1000 ``` ## How It Works It's essentially a shorthand for the following code: ```ts import { debounceFilter, watchWithFilter } from '@vueuse/core' watchWithFilter( source, () => { console.log('changed!') }, { eventFilter: debounceFilter(500, { maxWait: 1000 }), }, ) ``` ## Type Declarations ```ts export interface WatchDebouncedOptions extends WatchOptions, DebounceFilterOptions { debounce?: MaybeRefOrGetter } export declare function watchDebounced< T extends Readonly, Immediate extends Readonly = false, >( sources: [...T], cb: WatchCallback, MapOldSources>, options?: WatchDebouncedOptions, ): WatchHandle export declare function watchDebounced< T, Immediate extends Readonly = false, >( source: WatchSource, cb: WatchCallback, options?: WatchDebouncedOptions, ): WatchHandle export declare function watchDebounced< T extends object, Immediate extends Readonly = false, >( source: T, cb: WatchCallback, options?: WatchDebouncedOptions, ): WatchHandle /** @deprecated use `watchDebounced` instead */ export declare const debouncedWatch: typeof watchDebounced ```