Skip to content

Commit e9fdf63

Browse files
authored
Merge branch 'main' into feat-custom_trigger
2 parents 14cbc44 + 24a3a59 commit e9fdf63

52 files changed

Lines changed: 1320 additions & 112 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/config.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
"label": "Configuration",
2222
"to": "configuration"
2323
},
24+
{
25+
"label": "Plugin Configuration",
26+
"to": "plugin-configuration"
27+
},
2428
{
2529
"label": "Installation",
2630
"to": "installation"
@@ -29,6 +33,10 @@
2933
"label": "Vite plugin",
3034
"to": "vite-plugin"
3135
},
36+
{
37+
"label": "Third party plugins",
38+
"to": "third-party-plugins"
39+
},
3240
{
3341
"label": "Production",
3442
"to": "production"

docs/configuration.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ createRoot(document.getElementById('root')!).render(
112112
{
113113
name: 'TanStack Form',
114114
render: <FormDevtools />,
115+
defaultOpen: true,
115116
},
116117
]}
117118
/>

docs/framework/react/guides/custom-plugins.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class CustomEventClient extends EventClient<EventMap> {
6262
}
6363

6464
// This is where the magic happens, it'll be used throughout your application.
65-
export const DevtoolsEventClient = new FormEventClient()
65+
export const DevtoolsEventClient = new CustomEventClient()
6666
```
6767

6868
## Event Client Integration

docs/plugin-configuration.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
title: Plugin Configuration
3+
id: plugin-configuration
4+
---
5+
6+
7+
# Plugin Configuration
8+
9+
You can configure TanStack Devtools plugins by passing them as an array to the `plugins` prop of the `TanStackDevtools` component.
10+
11+
Each plugin can have the following configuration options:
12+
- `render` (required) - A React component that renders the plugin's UI
13+
- `defaultOpen` (optional) - A boolean that determines if the plugin panel is open by default (default: false).
14+
- `id` (optional) - A unique identifier for the plugin. If not provided, a random id will be generated.
15+
16+
Here's an example of how to configure plugins in the `TanStackDevtools` component:
17+
18+
```tsx
19+
import { TanStackDevtools } from '@tanstack/react-devtools'
20+
import { FormDevtools } from '@tanstack/react-form-devtools'
21+
22+
function App() {
23+
return (
24+
<>
25+
<YourApp />
26+
<TanStackDevtools
27+
plugins={[
28+
{
29+
name: 'TanStack Form',
30+
render: <FormDevtools />,
31+
defaultOpen: true,
32+
},
33+
]}
34+
/>
35+
</>
36+
)
37+
}
38+
```
39+
40+
## Default open
41+
42+
You can set a plugin to be open by default by setting the `defaultOpen` property to `true` when configuring the plugin. This will make the plugin panel open when the devtools are first loaded.
43+
44+
If you only have 1 plugin it will automatically be opened regardless of the `defaultOpen` setting.
45+
46+
The limit to open plugins is at 3 panels at a time. If more than 3 plugins are set to `defaultOpen: true`, only the first 3 will be opened.
47+
48+
This does not override the settings saved in localStorage. If you have previously opened the plugin panel, and selected some plugins to be open or closed, those settings will take precedence over the `defaultOpen` setting.

docs/quick-start.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,12 @@ function App() {
6969
{
7070
name: 'TanStack Query',
7171
render: <ReactQueryDevtoolsPanel />,
72+
defaultOpen: true
7273
},
7374
{
7475
name: 'TanStack Router',
7576
render: <TanStackRouterDevtoolsPanel />,
77+
defaultOpen: false
7678
},
7779
]} />
7880
</QueryClientProvider>

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 <partners+devtools@tanstack.com>.

examples/react/basic/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
},
1111
"dependencies": {
1212
"@tanstack/devtools-client": "0.0.3",
13-
"@tanstack/devtools-event-client": "0.3.3",
14-
"@tanstack/react-devtools": "^0.7.7",
13+
"@tanstack/devtools-event-client": "0.3.4",
14+
"@tanstack/react-devtools": "^0.7.11",
1515
"@tanstack/react-form": "^1.23.7",
1616
"@tanstack/react-query": "^5.90.1",
1717
"@tanstack/react-query-devtools": "^5.90.1",
@@ -22,8 +22,8 @@
2222
"zod": "^4.1.11"
2323
},
2424
"devDependencies": {
25-
"@tanstack/devtools-ui": "0.4.3",
26-
"@tanstack/devtools-vite": "0.3.9",
25+
"@tanstack/devtools-ui": "0.4.4",
26+
"@tanstack/devtools-vite": "0.3.10",
2727
"@tanstack/react-form-devtools": "^0.1.7",
2828
"@types/react": "^19.1.13",
2929
"@types/react-dom": "^19.1.9",

examples/react/custom-devtools/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
"test:types": "tsc"
1010
},
1111
"dependencies": {
12-
"@tanstack/devtools-event-client": "0.3.3",
13-
"@tanstack/react-devtools": "^0.7.7",
12+
"@tanstack/devtools-event-client": "0.3.4",
13+
"@tanstack/react-devtools": "^0.7.11",
1414
"react": "19.1.1",
1515
"react-dom": "19.1.1"
1616
},

examples/react/drizzle/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@
88
"start": "vite start"
99
},
1010
"dependencies": {
11-
"@tanstack/react-devtools": "^0.7.7",
11+
"@tanstack/react-devtools": "^0.7.11",
1212
"@tanstack/react-router": "^1.131.50",
1313
"@tanstack/react-router-devtools": "^1.131.50",
1414
"@tanstack/react-start": "1.132.0-alpha.25",
1515
"react": "19.1.1",
1616
"react-dom": "19.1.1"
1717
},
1818
"devDependencies": {
19-
"@tanstack/devtools-vite": "0.3.9",
19+
"@tanstack/devtools-vite": "0.3.10",
2020
"@types/node": "^22.15.2",
2121
"@types/react": "^19.1.13",
2222
"@types/react-dom": "^19.1.9",

examples/react/https/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
"test:types": "tsc"
1010
},
1111
"dependencies": {
12-
"@tanstack/devtools-event-client": "0.3.3",
13-
"@tanstack/react-devtools": "^0.7.7",
12+
"@tanstack/devtools-event-client": "0.3.4",
13+
"@tanstack/react-devtools": "^0.7.11",
1414
"@tanstack/react-query": "^5.90.1",
1515
"@tanstack/react-query-devtools": "^5.90.1",
1616
"@tanstack/react-router": "^1.131.50",
@@ -20,8 +20,8 @@
2020
"zod": "^4.1.11"
2121
},
2222
"devDependencies": {
23-
"@tanstack/devtools-ui": "0.4.3",
24-
"@tanstack/devtools-vite": "0.3.9",
23+
"@tanstack/devtools-ui": "0.4.4",
24+
"@tanstack/devtools-vite": "0.3.10",
2525
"@types/react": "^19.1.13",
2626
"@types/react-dom": "^19.1.9",
2727
"@vitejs/plugin-react": "^4.7.0",

0 commit comments

Comments
 (0)