Skip to main content

API Reference

Complete API documentation for Zustand Debounce.

createDebouncedJSONStorage

Main function to create a debounced storage.

function createDebouncedJSONStorage(
storageApi: AdapterIdentifier,
options?: EnhancedJsonStorageOptions
): PersistStorage<unknown>

Parameters

storageApi

  • Type: AdapterIdentifier
  • Values: 'localStorage' | 'sessionStorage' | 'memoryStorage' | StateStorage

options

  • Type: EnhancedJsonStorageOptions
  • Optional: Yes

Available Options

OptionTypeDefaultDescription
debounceTimenumber0Wait time in ms
throttleTimenumber0Minimum time between writes
immediatelybooleanfalseSave immediately
maxRetriesnumber0Maximum number of retries
retryDelaynumber0Time between retries
ttlnumber0Data lifetime
onWritefunction-Callback on write
onSavefunction-Callback on save
onRetryfunction-Callback on retry
onErrorfunction-Callback on error
serializefunctionJSON.stringifySerialization function
deserializefunctionJSON.parseDeserialization function

Usage Example

import { createDebouncedJSONStorage } from 'zustand-debounce';

const storage = createDebouncedJSONStorage('localStorage', {
debounceTime: 1000,
maxRetries: 3,
onSave: (key, value) => console.log('Saved:', key)
});

TypeScript Types

EnhancedJsonStorageOptions

interface EnhancedJsonStorageOptions {
debounceTime?: number;
throttleTime?: number;
immediately?: boolean;
maxRetries?: number;
retryDelay?: number;
ttl?: number;
onWrite?: (key: string, value: string) => void;
onSave?: (key: string, value: string) => void;
onRetry?: (key: string, attempt: number, error: any, delay: number) => void;
onError?: (key: string, error: any) => void;
serialize?: (state: unknown) => string;
deserialize?: (str: string) => unknown;
}

AdapterIdentifier

type AdapterIdentifier = 
| StateStorage
| 'localStorage'
| 'sessionStorage'
| 'memoryStorage';