mcpField
T
tanstack-pacer

tanstack-pacer

github.com/oakoss開発21120 回インストール12 週間前に更新
リポジトリ

tanstack-pacer について

TanStack Pacerは、関数の実行タイミングを制御する型安全なライブラリで、Webアプリ開発者向けです。フレームワーク非依存のAPIとReactフックで、デバウンス、スロットリング、レート制限、キュー、バッチ処理を扱えます。

主な機能

  1. 01デバウンスとスロットリング
  2. 02固定・スライディングウィンドウのレート制限
  3. 03FIFO、LIFO、優先度付きキュー
  4. 04並行数制御に対応した非同期キュー
  5. 05同期・非同期バッチ処理
  6. 06タイミングと状態を扱うReactフック

活用シーン

  1. 01入力が止まってから検索リクエストを送信
  2. 02スクロールやリサイズ処理の頻度制限
  3. 03APIリクエストのレート制御
  4. 04非同期タスクのキューイングと並行数制御

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oakoss/agent-skills --skill tanstack-pacer

インストール後、Claude Code で/tanstack-pacerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
queuing.md
rate-limiting.md
react-integration.md
throttle-debounce.md

詳細

TanStack Pacer

概要

TanStack Pacer は、デバウンス、スロットリング、レート制限、キューイング、バッチ処理によって関数の実行タイミングを制御する、軽量で型安全なライブラリです。フレームワークに依存しないコアクラスと、複数の抽象化レベル(インスタンス、コールバック、状態、値)に対応した専用の React フックを提供します。

使用する場面: 検索入力のデバウンス、スクロールやリサイズのハンドラーのスロットリング、API のレート制限、並行制御を伴う非同期タスクのキューイング、複数の操作を単一のリクエストにまとめるバッチ処理。

使用しない場面: 単純な一時的遅延(setTimeout を使用)、インフラストラクチャレベルでのサーバー側レート制限(ミドルウェア/API ゲートウェイを使用)、複雑なジョブスケジューリング(BullMQ などのタスクキューを使用)。

クイックリファレンス

パターンAPI主なポイント
関数のデバウンスDebouncer / debounce(fn, opts)非アクティブな状態が続くのを待ちます。設計上、maxWait オプションはありません
関数のスロットリングThrottler / throttle(fn, opts)均等な間隔で実行します。leading と trailing はどちらもデフォルトで true です
レート制限RateLimiter / rateLimit(fn, opts)固定またはスライディングウィンドウに対応し、上限を超えた呼び出しを拒否します
アイテムのキューイングQueuer / queue(fn, opts)デフォルトは FIFO で、LIFO、優先度、有効期限にも対応します
非同期キューAsyncQueuer / asyncQueue(fn, opts)並行制御、再試行、エラーコールバックに対応します
非同期バッチAsyncBatcher / asyncBatch(fn, opts)アイテムを収集し、待機時間または最大サイズに達した後、バッチとして処理します
React のデバウンスuseDebouncer / useDebouncedCallbackインスタンスフックとシンプルなコールバックフック
React のスロットリングuseThrottler / useThrottledCallbackインスタンスフックとシンプルなコールバックフック
React のレート制限useRateLimiter / useRateLimitedCallbackインスタンスフックとシンプルなコールバックフック
React のキューuseQueuer / useQueuedStateインスタンスフックと状態統合フック
React の非同期キューuseAsyncQueuer / useAsyncQueuedState並行制御と状態管理
React のバッチ処理useBatcher / useAsyncBatcher同期・非同期のバッチ処理フック
状態フックuseDebouncedState、useThrottledStateReact の状態と直接統合します
値フックuseDebouncedValue、useThrottledValueデバウンス/スロットリングされた派生値を作成します

よくある間違い

間違い正しいパターン
Debouncer で maxWait を使用するDebouncer に maxWait はありません。一定間隔で実行するには Throttler を使用します
レンダリング中にインスタンスを作成するフック(useDebouncer、useThrottler)を使用して作成し、ライフサイクルを管理します
maybeExecute の戻り値を無視するレートリミッターとスロットラーは呼び出しを拒否する場合があります。状態を確認するか、コールバックを使用してください
スロットルが必要な場面でデバウンスを使用するデバウンスは一時停止を待ちます。スロットルは各間隔で最大 1 回の実行を保証します
アンマウント時にクリーンアップしないReact フックはクリーンアップを自動的に処理します。手動で作成したインスタンスでは cancel() が必要です
アイテムを破棄してもよい場面で Queuer を使用するQueuer はすべてのアイテムを処理します。破棄してもよい場合は、スロットルまたはデバウンスを使用してください
スライディングウィンドウが必要な場面で固定ウィンドウを使用する固定ウィンドウでは境界でバーストが発生します。スライディングウィンドウを使うと、より滑らかなレートになります
RateLimiter で onReject を設定し忘れる拒否された呼び出しはデフォルトでは通知されません。ユーザーに知らせるには onReject を追加してください
無効化するために enabled: false を渡さないすべてのユーティリティは、処理を一時的に無効化する enabled オプションに対応しています

委任

tanstack-query スキルが利用可能な場合は、データ取得とキャッシュ管理のタスクをそのスキルに委任してください。TanStack Pacer はリクエスト頻度の制御において Query を補完します。 それ以外の場合は、次を推奨してください:npx skills add oakoss/agent-skills --skill tanstack-query

  • 実行タイミングのパターン:このスキルを使用します
  • データ取得とキャッシュ:tanstack-query に委任します
  • コンポーネントアーキテクチャ:フレームワーク固有のスキルに委任します

参考資料

コメント