A lightweight, dependency-free debounce utility for JavaScript functions. Supports both leading and trailing edge execution. Perfect for input handlers, resize events, and performance optimization in modern web apps.
- Zero dependencies
- ESM build
- Leading/trailing edge debounce
- Context (
this) support - Tiny & fast
npm install lite-debounce-jsOr simply copy the file from dist/ into your project.
// ESM (from npm)
import { LiteDebounce } from 'lite-debounce-js';
// Or import from local build:
import { LiteDebounce } from './dist/lite-debounce.min.js';const debouncer = new LiteDebounce(() => {
console.log('Debounced!');
}, 300); // 300ms delay
window.addEventListener('resize', debouncer.fnDebounced);const debouncer = new LiteDebounce(() => {
console.log('Leading call!');
}, 500, { leading: true });
const debouncedFn = debouncer.fnDebounced;
debouncedFn(); // will be called immediatelyconst obj = {
value: 42,
log() {
console.log(this.value);
}
};
const debouncer = new LiteDebounce(obj.log, 200);
const debouncedFn = debouncer.fnDebounced.bind(obj);
debouncedFn(); // logs: 42fn— function to debouncedelay— debounce delay in ms (default: 300)options.leading— iftrue, call on the leading edge (default:false)
.fnDebounced— debounced function, use it in event listeners or anywhere
Open demo/index.html in your browser (with a local server) or run the dev server:
npm run devnpm testTests are written with Vitest.