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-js
Or 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 immediately
const obj = {
value: 42,
log() {
console.log(this.value);
}
};
const debouncer = new LiteDebounce(obj.log, 200);
const debouncedFn = debouncer.fnDebounced.bind(obj);
debouncedFn(); // logs: 42
fn
— 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 dev
npm test
Tests are written with Vitest.