Jotai DevTools

π Features
- Debug π atom values with ease
- β³ Time-travel through your atoms and find bugs faster than before
- Out-of-the-box π support for async/suspendable atoms
- Built-in Dark mode π
- β
Supports custom
store
- β
Works with provider-less mode
- β
Works with Next.js
- β
Supports custom
nonce
for CSP
- β
Hides private atoms with ability to configure
- β
Parses all the JavaScript values with JSON Tree view
- β
Diff checking with additions and deletion highlights
πΊ Preview
βοΈ Prerequisites
- Jotai version
>=v2.12.3
- React version
>=17.0.0
π¦ Setup
(See complete setup guide for UI-based devtools below)
yarn add jotai-devtools
npm install jotai-devtools --save
β¨ UI DevTools
Enhance your development experience with the UI based Jotai DevTool

Babel plugin setup - (Optional but highly recommended)
Use Jotai babel plugins for optimal debugging experience. Find the complete
guide on jotai.org
Eg.
{
"plugins": [
"jotai/babel/plugin-react-refresh",
"jotai/babel/plugin-debug-label"
]
}
Next JS setup
You may skip this section if you're not using Next.js.
Enable transpilePackages
for the UI CSS and components to be transpiled
correctly.
const nextConfig = {
transpilePackages: ['jotai-devtools'],
};
module.exports = nextConfig;
Available props
type DevToolsProps = {
isInitialOpen?: boolean;
store?: Store;
theme?: 'dark' | 'light';
position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
nonce?: string;
options?: {
shouldShowPrivateAtoms?: boolean;
shouldExpandJsonTreeViewInitially?: boolean;
timeTravelPlaybackInterval?: number;
snapshotHistoryLimit?: number;
};
};
Provider-less
import { DevTools } from './JotaiDevTools';
import 'jotai-devtools/styles.css';
const App = () => {
return (
<>
<DevTools />
{/* your app */}
</>
);
};
With Provider
import { createStore } from 'jotai';
import { DevTools } from 'jotai-devtools';
import 'jotai-devtools/styles.css';
const customStore = createStore();
const App = () => {
return (
<Provider store={customStore}>
<DevTools store={customStore} />
{/* your app */}
</Provider>
);
};
Tree-shaking
Jotai DevTools is currently only available in development mode. We're changing
this in the future to allow it to be used in production as well.
Therefore, we recommend wrapping the DevTools in a conditional statement and
tree-shake it out in production to avoid any accidental usage in production.
Vite
import { DevTools } from 'jotai-devtools';
import css from 'jotai-devtools/styles.css?inline';
const JotaiDevTools = () =>
process.env.NODE_ENV !== 'production' ? (
<>
<style>{css}</style>
<DevTools />
</>
) : null;
const App = () => {
return (
<>
<JotaiDevTools />
{/* your app */}
</>
);
};
NextJS
Create a DevTools.tsx
file in your project and export the DevTools
component.
import 'jotai-devtools/styles.css';
export { DevTools } from 'jotai-devtools';
Then, in your app, import the DevTools
component conditionally.
import dynamic from "next/dynamic";
import type { ComponentType } from "react";
import type { DevToolsProps } from "jotai-devtools";
let DevTools: ComponentType<DevToolsProps> | null = null;
if (process.env.NODE_ENV !== "production") {
DevTools = dynamic(
() => import("./DevTools").then((mod) => ({ default: mod.DevTools })),
{ ssr: false }
);
}
const App = () => {
return (
<>
{DevTools && <DevTools />}
{/* your app */}
</>
);
Hooks
Detailed documentation is available on
https://jotai.org/docs/api/devtools
import {
useAtomsSnapshot,
useGotoAtomsSnapshot,
useAtomsDebugValue,
useAtomDevtools,
useAtomsDevtools,
} from 'jotai-devtools';
Migration guides
Migrate Ζrom @emotion/react to native CSS
With the latest release, Jotai DevTools no longer depends on @emotion/react
and is replaced it with native CSS.
-
Remove @emotion/react
from your dependencies
yarn remove @emotion/react
npm uninstall @emotion/react
-
Replace @emotion/react
with jotai-devtools/styles.css
in your code
Note that this css file may get included in your production builds please import
it conditionally if you want to avoid that.
import { DevTools } from 'jotai-devtools';
+ import 'jotai-devtools/styles.css';
Migrate Jotai to V2
Find the official migration guide on
jotai.org
Migrate jotai/react/devtools
to jotai-devtools
-
Install this package
npm install jotai-devtools --save
yarn add jotai-devtools
-
Update imports from jotai/react/devtools
to jotai-devtools
import {
useAtomsSnapshot,
useGotoAtomsSnapshot,
useAtomsDebugValue,
// Redux devtool integration hooks
useAtomDevtools,
useAtomsDevtools,
- } from 'jotai/react/devtools';
+ } from 'jotai-devtools';
Inspirations
Redux DevTools
React Query DevTools
Other announcements
β¨ First announcement