File: custom-devtools.md | Updated: 11/15/2025
Search...
+ K
Auto
Docs Examples GitHub Contributors
Docs Examples GitHub Contributors
Docs Examples GitHub Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Maintainers Partners Support Learn StatsBETA Discord Merch Blog GitHub Ethos Brand Guide
Documentation
Framework
React
Version
Latest
Search...
+ K
Menu
Getting Started
Guides
API Reference
Examples
Framework
React
Version
Latest
Menu
Getting Started
Guides
API Reference
Examples
React Example: Custom Devtools
============================================================================================================================================================================================================================================================================================================================================================================================================================================
Code ExplorerCode
Interactive SandboxSandbox
public
src
App.tsx
CustomDevtoolsPanel.tsx
counter.ts
eventClient.ts
index.tsx
.eslintrc.cjs
.gitignore
README.md
index.html
package.json
tsconfig.json
tsx
import { useState } from 'react'
import { createCounter } from './counter'
const counterInstance = createCounter()
export default function App() {
const [count, setCount] = useState(counterInstance.getCount())
const increment = () => {
counterInstance.increment()
setCount(counterInstance.getCount())
}
const decrement = () => {
counterInstance.decrement()
setCount(counterInstance.getCount())
}
return (
<div>
<h1>Custom plugins</h1>
<h2>Count: {count}</h2>
<div style={{ display: 'flex', gap: '4px' }}>
<button onClick={increment}>+ increase</button>
<button onClick={decrement}>ā decrease</button>
</div>
</div>
)
}
import { useState } from 'react'
import { createCounter } from './counter'
const counterInstance = createCounter()
export default function App() {
const [count, setCount] = useState(counterInstance.getCount())
const increment = () => {
counterInstance.increment()
setCount(counterInstance.getCount())
}
const decrement = () => {
counterInstance.decrement()
setCount(counterInstance.getCount())
}
return (
<div>
<h1>Custom plugins</h1>
<h2>Count: {count}</h2>
<div style={{ display: 'flex', gap: '4px' }}>
<button onClick={increment}>+ increase</button>
<button onClick={decrement}>ā decrease</button>
</div>
</div>
)
}