Skip to content

Commit 5de9631

Browse files
feat(docs): add third party plugins documentation (#229)
1 parent 772a3dc commit 5de9631

File tree

2 files changed

+168
-1
lines changed

2 files changed

+168
-1
lines changed

docs/config.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@
2929
"label": "Vite plugin",
3030
"to": "vite-plugin"
3131
},
32+
{
33+
"label": "Third party plugins",
34+
"to": "third-party-plugins"
35+
},
3236
{
3337
"label": "Production",
3438
"to": "production"
@@ -144,4 +148,4 @@
144148
]
145149
}
146150
]
147-
}
151+
}

docs/third-party-plugins.md

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
---
2+
title: Third-party Plugins
3+
id: third-party-plugins
4+
---
5+
6+
While TanStack offers a suite of first-party plugins, we also want to open the doors to third-party developers. Hence, we created the marketplace.
7+
To be included in the marketplace registry, submit a PR to the [TanStack/devtools](https://github.com/TanStack/devtools) repository.
8+
9+
## Inclusion in the Marketplace
10+
11+
To add your plugin, submit the required information to the following file:
12+
[`packages/devtools/src/tabs/plugin-registry.ts`](https://github.com/TanStack/devtools/blob/main/packages/devtools/src/tabs/plugin-registry.ts)
13+
14+
### Example Entry
15+
16+
```tsx
17+
'@tanstack/react-pacer-devtools': {
18+
packageName: '@tanstack/react-pacer-devtools',
19+
title: 'Pacer Devtools',
20+
description: 'Monitor and debug your Pacer animations and transitions',
21+
requires: {
22+
packageName: '@tanstack/react-pacer',
23+
minVersion: '0.16.4',
24+
},
25+
author: 'TanStack',
26+
framework: 'react',
27+
tags: ['TanStack'],
28+
},
29+
```
30+
31+
## Pull Request Format
32+
33+
As shown in the example above, the registry is an object with the following structure:
34+
35+
**Key** – Your package name
36+
37+
```tsx
38+
'@tanstack/react-pacer-devtools': { PluginMetadata }
39+
```
40+
41+
**Value** – An object of type `PluginMetadata` with the following properties:
42+
43+
- **`packageName`** – The package’s name on npm
44+
45+
```ts
46+
{ packageName: string }
47+
```
48+
49+
- **`title`** – The title of the plugin card
50+
51+
```ts
52+
{ title: string }
53+
```
54+
55+
- **`description`** – A short description of your devtools *(optional)*
56+
57+
```ts
58+
{ description?: string }
59+
```
60+
61+
- **`logoUrl`** – The URL of the plugin’s logo *(optional)*
62+
63+
```ts
64+
{ logoUrl?: string }
65+
```
66+
67+
- **`requires`** – An object containing the dependencies of your devtools *(optional)*
68+
69+
```ts
70+
requires?: {
71+
/** Required package name (e.g., '@tanstack/react-query') */
72+
packageName: string
73+
/** Minimum required version (semver) */
74+
minVersion: string
75+
/** Maximum version (if there’s a known breaking change) */
76+
maxVersion?: string
77+
}
78+
```
79+
80+
- **`pluginImport`** – An object containing plugin import details *(optional)*
81+
82+
```ts
83+
pluginImport?: {
84+
/** The exact name to import from the package (e.g., 'FormDevtoolsPlugin' or 'ReactQueryDevtoolsPanel') */
85+
importName: string
86+
/** Whether this is a JSX component or a function returning a plugin */
87+
type: 'jsx' | 'function'
88+
}
89+
```
90+
91+
- **`pluginId`** – A string representing a custom plugin ID *(optional)*
92+
93+
```ts
94+
{ pluginId?: string }
95+
```
96+
97+
- **`docsUrl`** – The URL to your plugin’s documentation *(optional)*
98+
99+
```ts
100+
{ docsUrl?: string }
101+
```
102+
103+
- **`author`** – The author’s name for credit *(optional)*
104+
105+
```ts
106+
{ author?: string }
107+
```
108+
109+
- **`repoUrl`** – The URL of the plugin’s repository *(optional)*
110+
111+
```ts
112+
{ repoUrl?: string }
113+
```
114+
115+
- **`framework`** – The framework supported by the plugin
116+
117+
```ts
118+
{ framework?: 'react' | 'solid' | 'vue' | 'svelte' | 'angular' | 'other' }
119+
```
120+
121+
- **`tags`** – Tags for filtering and categorization
122+
123+
```ts
124+
{ tags?: string[] }
125+
```
126+
127+
## Submitting Multiple Plugins
128+
129+
You can submit multiple plugins if you provide devtools for different frameworks.
130+
For example, using the Pacer plugin from earlier, you might include a Solid version as well:
131+
132+
```tsx
133+
'@tanstack/react-pacer-devtools': {
134+
packageName: '@tanstack/react-pacer-devtools',
135+
title: 'Pacer Devtools',
136+
description: 'Monitor and debug your Pacer animations and transitions',
137+
requires: {
138+
packageName: '@tanstack/react-pacer',
139+
minVersion: '0.16.4',
140+
},
141+
author: 'TanStack',
142+
framework: 'react',
143+
tags: ['TanStack'],
144+
},
145+
'@tanstack/solid-pacer-devtools': {
146+
packageName: '@tanstack/solid-pacer-devtools',
147+
title: 'Pacer Devtools',
148+
description: 'Monitor and debug your Pacer animations and transitions',
149+
requires: {
150+
packageName: '@tanstack/solid-pacer',
151+
minVersion: '0.14.4',
152+
},
153+
author: 'TanStack',
154+
framework: 'solid',
155+
tags: ['TanStack'],
156+
},
157+
```
158+
159+
## Featured Plugins
160+
161+
The TanStack Marketplace includes a *Featured* section for official partners of the TanStack organization and select library authors we collaborate with.
162+
163+
To request inclusion, send an email to <[email protected]>.

0 commit comments

Comments
 (0)