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.