UNPKG

@tanstack/devtools

Version:

TanStack Devtools is a set of tools for building advanced devtools for your application.

314 lines (289 loc) 10.4 kB
/** * Plugin Registry - Metadata for TanStack and third-party devtools plugins * * This registry allows plugin authors to customize their marketplace cards with: * - Custom titles and descriptions * - Logo/image URLs * - Minimum version requirements (semver) * - External links * * External companies can open PRs to add their plugins here! */ export interface PluginMetadata { /** Package name (e.g., '@tanstack/react-query-devtools') */ packageName: string /** Display title shown in the marketplace card */ title: string /** Short description of what the plugin does */ description?: string /** URL to a logo image (SVG, PNG, etc.) */ logoUrl?: string /** Required package dependency */ requires?: { /** Required package name (e.g., '@tanstack/react-query') */ packageName: string /** Minimum required version (semver) */ minVersion: string /** Maximum version (if there's a known breaking change) */ maxVersion?: string } /** Plugin import configuration */ pluginImport?: { /** The exact name to import from the package (e.g., 'FormDevtoolsPlugin' or 'ReactQueryDevtoolsPanel') */ importName: string /** Whether this is a JSX component or a function that returns a plugin */ type: 'jsx' | 'function' } /** Custom plugin ID pattern for matching against registered plugins in devtools. * If specified, this will be used to match plugin IDs that may have suffixes. * For example, pluginId: "tanstack-form" will match "tanstack-form-4" in devtools. * The default behavior of devtools is to lowercase the package name and replace non-alphanumeric characters with - * so if the name of the plugin is "My awesome Plugin", the default pluginId would be "my-awesome-plugin". */ pluginId?: string /** Official documentation URL / URL to the docs on how to implement devtools */ docsUrl?: string /** Plugin author/maintainer */ author?: string /** Repository URL */ repoUrl?: string /** Framework this plugin supports */ framework: 'react' | 'solid' | 'vue' | 'svelte' | 'angular' | 'other' /** Mark as featured to appear in the Featured section with animated border */ featured?: boolean /** Mark as new to show a "New" banner on the card */ isNew?: boolean /** Tags for filtering and categorization */ tags?: Array<string> } /** * Registry of all known devtools plugins * External contributors: Add your plugin metadata here! */ const PLUGIN_REGISTRY: Record<string, PluginMetadata> = { // TanStack Query '@tanstack/react-query-devtools': { packageName: '@tanstack/react-query-devtools', title: 'TanStack Query Devtools', description: 'Powerful devtools for TanStack Query - inspect queries, mutations, and cache', requires: { packageName: '@tanstack/react-query', minVersion: '5.0.0', }, pluginId: 'tanstack-query', docsUrl: 'https://tanstack.com/query/latest/docs/devtools', author: 'TanStack', framework: 'react', featured: true, // Featured plugin tags: ['TanStack', 'data-fetching', 'caching', 'state-management'], }, '@tanstack/solid-query-devtools': { packageName: '@tanstack/solid-query-devtools', title: 'TanStack Query Devtools', description: 'Powerful devtools for TanStack Query - inspect queries, mutations, and cache', requires: { packageName: '@tanstack/solid-query', minVersion: '5.0.0', }, pluginId: 'tanstack-query', docsUrl: 'https://tanstack.com/query/latest/docs/devtools', author: 'TanStack', framework: 'solid', tags: ['TanStack', 'data-fetching', 'caching', 'state-management'], }, // TanStack Router '@tanstack/react-router-devtools': { packageName: '@tanstack/react-router-devtools', title: 'TanStack Router Devtools', description: 'Inspect routes, navigation, and router state in real-time', requires: { packageName: '@tanstack/react-router', minVersion: '1.0.0', }, pluginId: 'tanstack-router', docsUrl: 'https://tanstack.com/router/latest/docs/devtools', author: 'TanStack', framework: 'react', featured: true, // Featured plugin tags: ['TanStack', 'routing', 'navigation'], }, '@tanstack/solid-router-devtools': { packageName: '@tanstack/solid-router-devtools', title: 'TanStack Router Devtools', description: 'Inspect routes, navigation, and router state in real-time', requires: { packageName: '@tanstack/solid-router', minVersion: '1.0.0', }, pluginId: 'tanstack-router', docsUrl: 'https://tanstack.com/router/latest/docs/devtools', author: 'TanStack', framework: 'solid', tags: ['TanStack', 'routing', 'navigation'], }, // TanStack Form '@tanstack/react-form-devtools': { packageName: '@tanstack/react-form-devtools', title: 'TanStack Form Devtools', description: 'Debug form state, validation, and field values', requires: { packageName: '@tanstack/react-form', minVersion: '1.23.0', }, pluginImport: { importName: 'FormDevtoolsPlugin', type: 'function', }, pluginId: 'tanstack-form', docsUrl: 'https://tanstack.com/form/latest/docs/devtools', author: 'TanStack', framework: 'react', isNew: true, tags: ['TanStack', 'forms', 'validation'], }, '@tanstack/solid-form-devtools': { packageName: '@tanstack/solid-form-devtools', title: 'TanStack Form Devtools', description: 'Debug form state, validation, and field values', requires: { packageName: '@tanstack/solid-form', minVersion: '1.23.0', }, pluginImport: { importName: 'FormDevtoolsPlugin', type: 'function', }, pluginId: 'tanstack-form', docsUrl: 'https://tanstack.com/form/latest/docs/devtools', author: 'TanStack', isNew: true, framework: 'solid', tags: ['TanStack', 'forms', 'validation'], }, // TanStack Pacer (Example - adjust as needed) '@tanstack/react-pacer-devtools': { packageName: '@tanstack/react-pacer-devtools', title: 'Pacer Devtools', description: 'Monitor and debug your Pacer animations and transitions', requires: { packageName: '@tanstack/react-pacer', minVersion: '0.16.4', }, author: 'TanStack', framework: 'react', isNew: true, // New plugin banner tags: ['TanStack'], }, '@tanstack/solid-pacer-devtools': { packageName: '@tanstack/solid-pacer-devtools', title: 'Pacer Devtools', description: 'Monitor and debug your Pacer animations and transitions', requires: { packageName: '@tanstack/solid-pacer', minVersion: '0.14.4', }, author: 'TanStack', framework: 'solid', isNew: true, // New plugin banner tags: ['TanStack'], }, // TanStack A11y Devtools '@tanstack/devtools-a11y': { packageName: '@tanstack/devtools-a11y', title: 'Accessibility Devtools', description: 'Audit accessibility issues in real-time with axe-core. Supports WCAG 2.1/2.2, live monitoring, and visual overlays.', pluginImport: { importName: 'createA11yPlugin', type: 'function', }, pluginId: 'devtools-a11y', docsUrl: 'https://tanstack.com/devtools/latest/docs/plugins/a11y', author: 'TanStack', framework: 'react', isNew: true, tags: ['TanStack', 'a11y'], }, // TanStack AI '@tanstack/react-ai-devtools': { packageName: '@tanstack/react-ai-devtools', title: 'TanStack AI Devtools', description: 'Debug TanStack AI - inspect messages, token usage, streaming chunks, tool calls, and reasoning.', requires: { packageName: '@tanstack/ai-react', minVersion: '0.8.0', }, pluginImport: { importName: 'aiDevtoolsPlugin', type: 'function', }, pluginId: 'tanstack-ai', docsUrl: 'https://tanstack.com/ai', repoUrl: 'https://github.com/TanStack/ai', author: 'TanStack', framework: 'react', isNew: true, tags: ['TanStack', 'AI', 'streaming'], }, // ========================================== // THIRD-PARTY PLUGINS - Examples // ========================================== // External contributors can add their plugins below! // Dimano — Prefetch Heatmap for TanStack Router '@dimano/ts-devtools-plugin-prefetch-heatmap': { packageName: '@dimano/ts-devtools-plugin-prefetch-heatmap', title: 'Prefetch Heatmap', description: 'Visualize TanStack Router prefetch intent, hits, and waste with a color overlay and a live metrics panel.', requires: { packageName: '@tanstack/react-router', minVersion: '1.0.0', }, // default export registers the plugin pluginImport: { importName: 'registerPrefetchHeatmapPlugin', type: 'function', }, // helps the host match your plugin deterministically pluginId: 'prefetch-heatmap', // show a nice card in the marketplace logoUrl: 'https://raw.githubusercontent.com/dimitrianoudi/tanstack-prefetch-heatmap/main/assets/prefetch-heatmap-card.png', docsUrl: 'https://github.com/dimitrianoudi/tanstack-prefetch-heatmap#prefetch-heatmap-devtools-plugin', repoUrl: 'https://github.com/dimitrianoudi/tanstack-prefetch-heatmap', author: 'Dimitris Anoudis (@dimitrianoudi)', framework: 'react', isNew: true, tags: ['Router', 'Prefetch', 'Analytics', 'Overlay', 'TanStack'], }, // Santos Vilanculos — Inertia 3 Devtools for React '@santosvilanculos/bevor-react': { packageName: '@santosvilanculos/bevor-react', title: 'Inertia 3 Devtools', description: 'Inertia 3 devtools built on top of TanStack DevTools', pluginImport: { importName: 'inertiaDevtoolsPlugin', type: 'function', }, pluginId: 'inertia-devtools', logoUrl: 'https://raw.githubusercontent.com/santosvilanculos/bevor/main/logo.png', docsUrl: 'https://github.com/SantosVilanculos/bevor/tree/main/packages/react', repoUrl: 'https://github.com/SantosVilanculos/bevor', author: 'Santos Vilanculos (santosvilanculos@yahoo.com)', framework: 'react', isNew: true, tags: ['TanStack', 'React', 'Inertia', 'Laravel'], }, } /** * Get all registered plugin metadata */ export function getAllPluginMetadata(): Array<PluginMetadata> { return Object.values(PLUGIN_REGISTRY) }