Framework
Version
Debouncer API Reference
Throttler API Reference
Rate Limiter API Reference
Queue API Reference
Batcher API Reference

useBatchedCallback

Function: useBatchedCallback()

ts
function useBatchedCallback<TFn>(fn, options): (...args) => void
function useBatchedCallback<TFn>(fn, options): (...args) => void

Defined in: react-pacer/src/batcher/useBatchedCallback.ts:41

A React hook that creates a batched version of a callback function. This hook is essentially a wrapper around the basic batch function that is exported from @tanstack/pacer, but optimized for React with reactive options and a stable function reference.

The batched function will collect individual calls into batches and execute them when batch conditions are met (max size reached, wait time elapsed, or custom logic).

This hook provides a simpler API compared to useBatcher, making it ideal for basic batching needs. However, it does not expose the underlying Batcher instance.

For advanced usage requiring features like:

  • Manual batch execution
  • Access to batch state and metrics
  • Custom useCallback dependencies

Consider using the useBatcher hook instead.

Type Parameters

TFn extends AnyFunction

Parameters

fn

(items) => void

options

BatcherOptions<Parameters<TFn>[0]>

Returns

Function

Parameters

args

...Parameters<TFn>

Returns

void

Example

tsx
// Batch analytics events
const trackEvents = useBatchedCallback((events: AnalyticsEvent[]) => {
  sendAnalytics(events);
}, {
  maxSize: 5,    // Process when 5 events collected
  wait: 2000     // Or after 2 seconds
});

// Use in event handlers
<button onClick={() => trackEvents({ type: 'click', target: 'button' })}>
  Click me
</button>
// Batch analytics events
const trackEvents = useBatchedCallback((events: AnalyticsEvent[]) => {
  sendAnalytics(events);
}, {
  maxSize: 5,    // Process when 5 events collected
  wait: 2000     // Or after 2 seconds
});

// Use in event handlers
<button onClick={() => trackEvents({ type: 'click', target: 'button' })}>
  Click me
</button>
Subscribe to Bytes

Your weekly dose of JavaScript news. Delivered every Monday to over 100,000 devs, for free.

Bytes

No spam. Unsubscribe at any time.