mcpField
R
react-fetch-cache-patterns

react-fetch-cache-patterns

github.com/pproenca開発218170 回インストール11 週間前に更新
リポジトリ

react-fetch-cache-patterns について

多数のAPIリクエストを扱うReactアプリ向けに、データ取得とキャッシュのパターンをまとめたスキルです。リクエストフローやバックエンド負荷、障害処理を改善する開発者向けに、ライブラリ利用時とReact単体の例を用意しています。

主な機能

  1. 018カテゴリ、48のルール
  2. 02リクエストのバッチ処理と重複排除
  3. 03キャッシュ戦略と無効化
  4. 04バックエンド向け同時実行・再試行制御
  5. 05プリフェッチと障害耐性のパターン
  6. 06調整可能なコードテンプレート

活用シーン

  1. 01Reactのデータ取得時のウォーターフォール削減
  2. 02フィードやリストによるバックエンド負荷の抑制
  3. 03キャッシュ、プリフェッチ、再試行の追加
  4. 04データ取得コードの障害耐性の確認

インストール

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

$npx skills add https://github.com/pproenca/dot-skills --skill react-fetch-cache-patterns

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

同梱ファイル

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

AGENTS.md
metadata.json
assets/templates/
_template.md
carousel-data-loader.template.tsx
infinite-feed.template.tsx
prefetch-link.template.tsx
request-collapser.template.ts
use-resource-query-no-deps.template.tsx
use-resource-query.template.tsx
references/
_sections.md
cache-deterministic-keys.md
cache-normalize-shared-entities.md
cache-select-subscribed-fields.md
cache-set-stale-time.md
cache-shared-key-factory.md
cache-stale-while-revalidate.md
cache-tiered-stale-fresh.md
feed-bounded-working-set.md
feed-cursor-pagination.md
feed-image-lazy-and-sized.md
feed-multi-carousel-isolation.md
feed-split-summary-from-detail.md
feed-stable-keys-across-pages.md
feed-virtualize-long-lists.md
mutate-cancel-queries-on-mutate.md
mutate-optimistic-updates-with-rollback.md
mutate-set-data-over-invalidate.md
mutate-surgical-invalidation.md
orch-avoid-effect-chains.md
orch-batch-n-plus-one-fanout.md

詳細

実験的な React データ取得とキャッシュのベストプラクティス

バックエンドに過剰な負荷をかけずに、多数の API リクエストを取得してキャッシュする React アプリケーションの実装パターンです。8 つのカテゴリにまたがる 48 のルールを、実行ライフサイクルへの影響が大きい順に並べています。前のカテゴリは、その後のすべてのカテゴリに連鎖的に影響します。テンプレートでは、ライブラリを使う実装(TanStack Query、SWR)と、ライブラリを使わない実装(純粋な React + AbortController)の両方を示しており、スタックの制約にかかわらずパターンを活用できます。

適用する場面

  • fetch、useQuery、useSWR、またはデータ取得フックを呼び出す React コンポーネントを作成またはレビューするとき
  • 多数の項目を表示し、それぞれの項目でデータ取得が必要なリスト、フィード、カルーセルを設計するとき
  • 「バックエンドに過剰な負荷がかかっている」「ページの読み込みが遅い」といった症状を調査するとき
  • クライアントサイドでのデータ取得、ルートローダー、サーバーコンポーネント、SSR のいずれを選ぶか検討するとき
  • プリフェッチ、リトライ、楽観的更新、または何らかのエラー処理ロジックを実装するとき
  • すでにデータ取得を行っているものの、ウォーターフォールやキャッシュ戦略、同時実行数の制限がないコードをリファクタリングするとき

優先度別のルールカテゴリ

#カテゴリ影響度プレフィックスルール数
1リクエストのオーケストレーションCRITICALorch-7
2キャッシュ戦略CRITICALcache-7
3バックエンドの保護CRITICALprotect-7
4プリフェッチとハイドレーションHIGHprefetch-6
5障害へのレジリエンスHIGHresilience-6
6フィードとカルーセルのパターンMEDIUM-HIGHfeed-7
7ミューテーションと無効化MEDIUMmutate-4
8コンポーネントのパターンMEDIUMrender-4

クイックリファレンス

1. リクエストのオーケストレーション(CRITICAL)
2. キャッシュ戦略(CRITICAL)
3. バックエンドの保護(重大)
4. プリフェッチとハイドレーション(高)
5. 障害への耐性(高)
6. フィードとカルーセルのパターン(中〜高)
  • feed-virtualize-long-lists — 50 項目を超えるリストには TanStack Virtual を使用します
  • feed-cursor-pagination — 追加項目や大きなオフセットには、オフセット方式よりカーソル方式が適しています
  • feed-split-summary-from-detail — カルーセルの概要は軽量にし、詳細は必要に応じて取得します
  • feed-multi-carousel-isolation — ホームページのフィードでは、カルーセルごとにエラーバウンダリー/Suspense バウンダリーを設け、重要度に応じたフォールバックを用意します
  • feed-stable-keys-across-pages — キーにはエンティティ ID を使用し、インデックスは決して使用しません
  • feed-image-lazy-and-sized — loading="lazy" と明示的な寸法を指定します
  • feed-bounded-working-set — 無制限に増加するフィードには、maxPages とエンティティ単位の LRU 削除を使用します
7. ミューテーションと無効化(中)
8. コンポーネントのパターン(中)

使用方法

  1. カテゴリーの定義と影響の根拠については、references/_sections.md を開きます
  2. 誤ったコードと正しいコードの例については、個々のルールファイルを読みます
  3. すぐに使えるスキャフォールドについては、スキャフォールディングテンプレートを参照します
  4. AGENTS.md ナビゲーションドキュメント(自動生成)では、閲覧用の目次を確認できます

スキャフォールディングテンプレート

assets/templates/ に、すぐに応用できるコードテンプレートが6つあります。

テンプレートライブラリの依存関係目的
use-resource-query.template.tsxTanStack Queryキーファクトリー、リトライ、アボート、任意のサスペンスに対応した標準クエリフック
use-resource-query-no-deps.template.tsxなし(React + AbortController のみ)上記と同じパターンを、ライブラリなしで実現します。手作りのキャッシュ、重複排除、ジッター付きリトライ、staleTime/gcTime、同時実行数の上限を含みます
carousel-data-loader.template.tsxTanStack Query + react-error-boundary単一のカルーセル(概要 + ビューポートをトリガーとする詳細データ)と、カルーセルごとに失敗を分離する複数カルーセルのフィードに対応します
infinite-feed.template.tsxTanStack Query + TanStack Virtual仮想化と作業セットの上限設定に対応した、カーソルページネーション方式の無限フィード
prefetch-link.template.tsxなしホバー/インテントによるプリフェッチ用のリンクラッパー
request-collapser.template.tsなし実行中リクエストの重複排除と同時実行数の上限を実現するユーティリティ

ライブラリなしでの方法: バンドルに TanStack Query/SWR/DataLoader を追加できない場合(サイズの制約、ホストアプリとの競合、依存関係の禁止など)は、use-resource-query-no-deps.template.tsx から始めてください。React とウェブプラットフォームのみを使い、約250行でキャッシュ/重複排除/リトライ/アボートの基本パターンを実装しています。TanStack に依存する他のテンプレートは、これを基に応用できます。最初から依存関係がないのは、request-collapser と prefetch-link のテンプレートのみです。

参考ファイル

ファイル説明
references/_sections.mdカテゴリーの定義、順序、影響の根拠
assets/templates/_template.md新しいルールを作成するためのテンプレート
metadata.jsonバージョン、参考資料、概要

関連スキル

  • react-optimise — React の描画パフォーマンス全般(このスキルはデータフェッチに特化しています)
  • nextjs-bundle-optimizer — Next.js のバンドル/ペイロード最適化
  • inngest-nextjs-patterns — サーバーサイドのワークフローパターン(サーバーフェッチのガイダンスを補完します)

コメント