Plugins
Throttle
Limit request frequency
The throttle plugin limits how often a request can be made. Extra requests immediately return cached data instead of hitting the network.
Installation
npm install @spoosh/plugin-throttleUsage
import { Spoosh } from "@spoosh/core";
import { throttlePlugin } from "@spoosh/plugin-throttle";
const client = new Spoosh<ApiSchema, Error>("/api").use([throttlePlugin()]);
// Max 1 request per second - extras return cached data
const { data } = useRead((api) => api("expensive").GET(), { throttle: 1000 });Options
Per-Request Options
| Option | Type | Description |
|---|---|---|
throttle | number | Max 1 request per X milliseconds. Extra requests return cached data. |
Throttle vs Debounce
| Throttle | Debounce | |
|---|---|---|
| First request | Executes immediately | Waits for delay |
| Extra requests | Returns cached data | Resets the delay timer |
| Use case | Rate-limiting expensive endpoints | Waiting for input to stop |
Plugin Order
Register the throttle plugin at the end of your plugin list to ensure it blocks all requests, including force fetches:
import { Spoosh } from "@spoosh/core";
const client = new Spoosh<ApiSchema, Error>("/api").use([
cachePlugin({ staleTime: 5000 }),
deduplicationPlugin(),
invalidationPlugin(),
retryPlugin(),
throttlePlugin(),
]);