OpenAIソフトウェア開発⭐ リポ 0品質スコア 60/100
tanstack-devtools
TanStackライブラリ向けの統一的で拡張可能な開発者ツールパネルです。プラグインアーキテクチャを採用しているため、機能を簡単に追加・カスタマイズできます。複数のライブラリを一元管理する開発環境を実現し、開発効率を向上させます。
description の原文を見る
Centralized, extensible devtools panel for TanStack libraries with a plugin architecture.
SKILL.md 本文
概要
TanStack Devtoolsは、TanStack Query、Router、およびその他のライブラリのdevtoolsを単一パネルに統合した統一デバッグインターフェースを提供します。フレームワークに依存しないプラグインアーキテクチャ、リアルタイムのステート検査、カスタムプラグインのサポートを備えています。Solid.jsで構築されており、軽量なパフォーマンスを実現しています。
React: @tanstack/react-devtools
Core: @tanstack/devtools
Status: Alpha
インストール
npm install @tanstack/react-devtools
基本的なセットアップ
import { TanStackDevtools } from '@tanstack/react-devtools'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
const queryClient = new QueryClient()
function App() {
return (
<QueryClientProvider client={queryClient}>
<TanStackDevtools />
{/* Your app content */}
<MyApp />
</QueryClientProvider>
)
}
ビルトインプラグイン
Query Devtools
import { TanStackDevtools } from '@tanstack/react-devtools'
import { ReactQueryDevtoolsPanel } from '@tanstack/react-query-devtools'
function App() {
return (
<QueryClientProvider client={queryClient}>
<TanStackDevtools
plugins={[
{
id: 'react-query',
name: 'React Query',
render: () => <ReactQueryDevtoolsPanel />,
},
]}
/>
<MyApp />
</QueryClientProvider>
)
}
Router Devtools
import { TanStackDevtools } from '@tanstack/react-devtools'
import { TanStackRouterDevtoolsPanel } from '@tanstack/react-router-devtools'
function App() {
return (
<TanStackDevtools
plugins={[
{
id: 'router',
name: 'Router',
render: () => <TanStackRouterDevtoolsPanel router={router} />,
},
]}
/>
)
}
統合セットアップ
import { TanStackDevtools } from '@tanstack/react-devtools'
import { ReactQueryDevtoolsPanel } from '@tanstack/react-query-devtools'
import { TanStackRouterDevtoolsPanel } from '@tanstack/react-router-devtools'
function App() {
return (
<QueryClientProvider client={queryClient}>
<TanStackDevtools
plugins={[
{
id: 'react-query',
name: 'React Query',
render: () => <ReactQueryDevtoolsPanel />,
},
{
id: 'router',
name: 'Router',
render: () => <TanStackRouterDevtoolsPanel router={router} />,
},
]}
/>
<MyApp />
</QueryClientProvider>
)
}
AI Devtools
TanStack AIワークフローのデバッグ用:
import { TanStackDevtools } from '@tanstack/react-devtools'
import { AIDevtoolsPanel } from '@tanstack/ai-react/devtools'
function App() {
return (
<TanStackDevtools
plugins={[
{
id: 'ai',
name: 'AI',
render: () => <AIDevtoolsPanel />,
},
]}
/>
)
}
AI Devtoolsの機能:
- Message Inspector - メタデータ付き会話履歴全体を表示
- Token Usage - リクエストごとの入力/出力トークンとコストを追跡
- Streaming Visualization - ストリーミングチャンクのリアルタイム表示
- Tool Call Debugging - ツール呼び出し、パラメータ、および結果を検査
- Thinking/Reasoning Viewer - 推論モデルの推論トークンをデバッグ
- Adapter Switching - 開発時に異なるプロバイダーをテスト
プラグインシステム
プラグインインターフェース
interface DevtoolsPlugin {
id: string // 一意の識別子
name: string // devtoolsパネルに表示される名前
render: () => JSX.Element // レンダリングするReactコンポーネント
}
カスタムプラグイン
import { TanStackDevtools } from '@tanstack/react-devtools'
// カスタムステート検査プラグイン
const stateInspectorPlugin = {
id: 'state-inspector',
name: 'State',
render: () => (
<div style={{ padding: '16px' }}>
<h3>Application State</h3>
<pre>{JSON.stringify(appState, null, 2)}</pre>
</div>
),
}
// カスタムネットワークロガープラグイン
const networkLoggerPlugin = {
id: 'network-logger',
name: 'Network',
render: () => <NetworkLoggerPanel />,
}
function App() {
return (
<TanStackDevtools
plugins={[
stateInspectorPlugin,
networkLoggerPlugin,
]}
/>
)
}
動的プラグイン登録
function App() {
const [plugins, setPlugins] = useState<DevtoolsPlugin[]>([])
useEffect(() => {
// 条件付きでプラグインを登録
const activePlugins: DevtoolsPlugin[] = []
if (process.env.NODE_ENV === 'development') {
activePlugins.push({
id: 'debug',
name: 'Debug',
render: () => <DebugPanel />,
})
}
setPlugins(activePlugins)
}, [])
return <TanStackDevtools plugins={plugins} />
}
Viteプラグイン統合
// vite.config.ts
import { defineConfig } from 'vite'
import { tanstackDevtools } from '@tanstack/devtools/vite'
export default defineConfig({
plugins: [
tanstackDevtools(),
],
})
本番環境での考慮事項
// 開発環境でのみdevtoolsを含める
function App() {
return (
<>
{process.env.NODE_ENV === 'development' && (
<TanStackDevtools plugins={plugins} />
)}
<MyApp />
</>
)
}
// または遅延ロードを使用
const TanStackDevtools = lazy(() =>
import('@tanstack/react-devtools').then((m) => ({ default: m.TanStackDevtools }))
)
フレームワークサポート
| フレームワーク | パッケージ | ステータス |
|---|---|---|
| React | @tanstack/react-devtools | Alpha |
| Solid | @tanstack/solid-devtools | 予定 |
| Vue | @tanstack/vue-devtools | 予定 |
| Angular | @tanstack/angular-devtools | 予定 |
機能
- 統合パネル - すべてのTanStackデバッグ用の単一インターフェース
- リアルタイム更新 - ステート変更のライブモニタリング
- プラグインアーキテクチャ - カスタムおよびサードパーティプラグインで拡張可能
- ビルトインプラグイン - Query、Router、およびAI devtoolsパネル
- 軽量 - Solid.jsで構築されており最小限のオーバーヘッド
- 型安全 - プラグイン定義の完全なTypeScriptサポート
- フレームワーク非依存のコア - プラグインロジックはフレームワーク間で動作
ベストプラクティス
- 本番環境では条件付きでインクルード - 環境チェックまたはコード分割を使用
- 利用可能なすべてのプラグインではなく、特定のプラグインを使用
- プラグインに一意のIDを付与 - 競合を防ぐ
- プラグインのレンダリング関数を軽量に保つ - 高コストな計算を避ける
- Viteプラグインを使用 - Viteベースのプロジェクトで自動セットアップ
- Query + Router + AIプラグインを組み合わせる - フルスタックのTanStackデバッグ
- ドメイン固有のプラグインを作成 - アプリレベルのステート検査用
- ストリーミング、ツール呼び出し、トークン使用量をデバッグする際はAI devtoolsを使用
よくある落とし穴
- ツリーシェイキングなしで本番ビルドにdevtoolsを含める
- 重複するプラグインID(レンダリングの競合を引き起こす)を使用
- プラグイン内の重いレンダリング関数(devtoolsパネルを遅くする)
- Query プラグインを使用する際に QueryClientProvider でラップするのを忘れる
- Router devtoolsパネルにrouter インスタンスを渡すのを忘れる
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- hyperlapse122
- ライセンス
- MIT
- 最終更新
- 2026/5/12
Source: https://github.com/hyperlapse122/to-much-talker / ライセンス: MIT