Skip to main content

useDebouncedValue

Debounces a reactive value. The returned value only updates after the specified delay has passed since the last change. Also exposes progress and isInProgress for building loading indicators.

Import

import { useDebouncedValue } from '@andrejground/lab';

Usage

import React from 'react';
import { useDebouncedValue } from '@andrejground/lab';

export default function App() {
const [query, setQuery] = React.useState('');
const { value: debouncedQuery, isInProgress } = useDebouncedValue(query, 500);

return (
<div>
<input
value={query}
onChange={(e) => setQuery(e.target.value)}
placeholder="Type to search..."
/>
{isInProgress && <span>Waiting...</span>}
<p>Debounced value: {debouncedQuery}</p>
</div>
);
}

API

const { value, progress, isInProgress } = useDebouncedValue(value, delay);
ParameterTypeDescription
valueTThe value to debounce
delaynumberDelay in milliseconds

Returns

PropertyTypeDescription
valueTThe debounced value
progressnumber0 or 100 - useful for progress bar animations
isInProgressbooleantrue while waiting for the value to settle