lite-debounce-js

LiteDebounce

mrnko - lite-debounce-js stars - lite-debounce-js forks - lite-debounce-js

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.

npm version View Demo • View on GitHub


Features


Installation

npm install lite-debounce-js

Or simply copy the file from dist/ into your project.


Usage

Import

// ESM (from npm)
import { LiteDebounce } from 'lite-debounce-js';
// Or import from local build:
import { LiteDebounce } from './dist/lite-debounce.min.js';

Basic trailing debounce (default)

const debouncer = new LiteDebounce(() => {
  console.log('Debounced!');
}, 300); // 300ms delay

window.addEventListener('resize', debouncer.fnDebounced);

Leading debounce

const debouncer = new LiteDebounce(() => {
  console.log('Leading call!');
}, 500, { leading: true });

const debouncedFn = debouncer.fnDebounced;
debouncedFn(); // will be called immediately

With arguments and context

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

API

new LiteDebounce(fn, delay = 300, options = {})

Instance property:


Demo

Open demo/index.html in your browser (with a local server) or run the dev server:

npm run dev

Testing

npm test

Tests are written with Vitest.