
Reset your jotai atoms to default values with ease
jotai-resetter makes it easy to reset your jotai atoms to their default values.
First import the ResetProvider from jotai-resetter, and replace Provider from jotai with ResetProvider
// Replace
import { Provider } from "jotai";
<Provider>{/* App */}</Provider>;
// With
import { ResetProvider } from "jotai-resetter";
<ResetProvider>{/* App */}</ResetProvider>;To reset use the useResetJotai hook. It will return the reset function that you can call to reset all jotai atoms to their default values.
Component.tsx
import { useResetJotai } from "jotai-resetter";
function MyComponent() {
const reset = useResetJotai();
const handleReset = () => {
// use reset function to reset jotai
reset();
};
return (
<button onClick={handleReset}>
Reset All Atoms
</button>
);
}To use jotai-resetter with Next.js you have to first make a CSR (Client Side Rendering) component for that.
provider.jsx
// provider.jsx
"use client";
import { ResetProvider } from "jotai-resetter";
export const Provider = ({ children }) => (
<ResetProvider>{children}</ResetProvider>
);Now use this new Provider to wrap your app in your layout or root component.
layout.tsx
import { Provider } from "./provider";
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<body>
<Provider>
{children}
</Provider>
</body>
</html>
);
}ResetProvider supports all the native props of Provider from jotai, so you can pass any configuration you would normally pass to jotai's Provider.
App.tsx
import { ResetProvider } from "jotai-resetter";
function App() {
return (
<ResetProvider
store={customStore}
// ... any other jotai Provider props
>
{/* Your app components */}
</ResetProvider>
);
}That's it! Now your jotai atoms will be in their default state when you call the reset function.
Summary
✅ Import ResetProvider from jotai-resetter
✅ Replace jotai Provider with ResetProvider
✅ Use useResetJotai hook to get reset function
✅ Call reset() to reset all atoms to default values