A debounce utility with a shared core and dedicated entrypoints for vanilla JavaScript, React, Vue, Svelte, and direct browser usage.
npm install @samline/debounce
pnpm add @samline/debounce
yarn add @samline/debounce
bun add @samline/debounce
Use the browser bundle directly when you do not want a bundler.
<script src="https://unpkg.com/@samline/[email protected]/dist/browser/debounce.global.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@samline/[email protected]/dist/browser/debounce.global.js"></script>
The global build exposes window.Debounce.
| Import | Purpose |
|---|---|
@samline/debounce |
Root debounce API |
@samline/debounce/vanilla |
Explicit vanilla entrypoint |
@samline/debounce/react |
React hooks for callbacks and values |
@samline/debounce/vue |
Vue composables for callbacks and refs |
@samline/debounce/svelte |
Svelte helpers and stores |
dist/browser/debounce.global.js |
Browser global bundle exposing window.Debounce |
The root import exposes the shared debounce API.
import { debounce } from "@samline/debounce";
const save = debounce(
(value: string) => {
console.log("saved", value);
},
200,
{ leading: false, trailing: true, maxWait: 1000 }
);
save("hello");
save.cancel();
You can force a pending invocation immediately:
const commit = debounce(saveToServer, 300);
commit("draft");
commit.flush();
The root and vanilla entrypoints export:
debouncecreateDebounceDebounceOptionsDebouncedFunctiondebounce(fn, wait, options?)
Creates a debounced function that delays execution until the configured wait window is satisfied.
leading: invoke on the first call in a debounce windowtrailing: invoke after the last call in a debounce windowmaxWait: force execution after a maximum delay even if calls keep arrivingEvery debounced function exposes:
cancel(): drops the pending invocationflush(): executes the pending invocation immediately and returns its result when availableThis package is locale-independent. It does not ship locale tables, translations, or locale-specific behavior.
Framework-specific usage is documented in:
MIT. See LICENSE.