gitextract_mot3st09/ ├── .codesandbox/ │ └── ci.json ├── .github/ │ ├── DISCUSSION_TEMPLATE/ │ │ └── bug-report.yml │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── config.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── compressed-size.yml │ ├── ecosystem-ci.yml │ ├── livecodes-post-comment.yml │ ├── livecodes-preview.yml │ ├── preview-release.yml │ ├── publish.yml │ ├── stale-discussions.yml │ ├── test-multiple-builds.yml │ ├── test-multiple-versions.yml │ ├── test-old-typescript.yml │ └── test.yml ├── .gitignore ├── .livecodes/ │ └── react.json ├── .prettierignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── babel.config.mjs ├── benchmarks/ │ ├── .gitignore │ ├── simple-read.ts │ ├── simple-write.ts │ └── subscribe-write.ts ├── docs/ │ ├── basics/ │ │ ├── comparison.mdx │ │ ├── concepts.mdx │ │ ├── functional-programming-and-jotai.mdx │ │ └── showcase.mdx │ ├── core/ │ │ ├── atom.mdx │ │ ├── provider.mdx │ │ ├── store.mdx │ │ └── use-atom.mdx │ ├── extensions/ │ │ ├── cache.mdx │ │ ├── effect.mdx │ │ ├── immer.mdx │ │ ├── location.mdx │ │ ├── optics.mdx │ │ ├── query.mdx │ │ ├── redux.mdx │ │ ├── relay.mdx │ │ ├── scope.mdx │ │ ├── trpc.mdx │ │ ├── urql.mdx │ │ ├── valtio.mdx │ │ ├── xstate.mdx │ │ └── zustand.mdx │ ├── guides/ │ │ ├── async.mdx │ │ ├── atoms-in-atom.mdx │ │ ├── composing-atoms.mdx │ │ ├── core-internals.mdx │ │ ├── debugging.mdx │ │ ├── initialize-atom-on-render.mdx │ │ ├── migrating-to-v2-api.mdx │ │ ├── nextjs.mdx │ │ ├── performance.mdx │ │ ├── persistence.mdx │ │ ├── react-native.mdx │ │ ├── remix.mdx │ │ ├── resettable.mdx │ │ ├── testing.mdx │ │ ├── typescript.mdx │ │ ├── using-store-outside-react.mdx │ │ ├── vite.mdx │ │ └── waku.mdx │ ├── index.mdx │ ├── recipes/ │ │ ├── atom-with-broadcast.mdx │ │ ├── atom-with-compare.mdx │ │ ├── atom-with-debounce.mdx │ │ ├── atom-with-listeners.mdx │ │ ├── atom-with-refresh-and-default.mdx │ │ ├── atom-with-refresh.mdx │ │ ├── atom-with-toggle-and-storage.mdx │ │ ├── atom-with-toggle.mdx │ │ ├── custom-useatom-hooks.mdx │ │ ├── large-objects.mdx │ │ ├── use-atom-effect.mdx │ │ └── use-reducer-atom.mdx │ ├── third-party/ │ │ ├── bunja.mdx │ │ ├── derive.mdx │ │ └── history.mdx │ ├── tools/ │ │ ├── babel.mdx │ │ ├── devtools.mdx │ │ └── swc.mdx │ └── utilities/ │ ├── async.mdx │ ├── callback.mdx │ ├── family.mdx │ ├── lazy.mdx │ ├── reducer.mdx │ ├── resettable.mdx │ ├── select.mdx │ ├── split.mdx │ ├── ssr.mdx │ └── storage.mdx ├── eslint.config.mjs ├── examples/ │ ├── hacker_news/ │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── src/ │ │ │ ├── App.tsx │ │ │ ├── index.tsx │ │ │ ├── styles.css │ │ │ └── vite-env.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── hello/ │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── src/ │ │ │ ├── App.tsx │ │ │ ├── index.tsx │ │ │ ├── prism.css │ │ │ ├── style.css │ │ │ └── vite-env.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── mega-form/ │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── src/ │ │ │ ├── App.tsx │ │ │ ├── index.tsx │ │ │ ├── initialValue.ts │ │ │ ├── style.css │ │ │ ├── useAtomSlice.ts │ │ │ └── vite-env.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── starter/ │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ └── vite-env.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── text_length/ │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── src/ │ │ │ ├── App.tsx │ │ │ ├── index.tsx │ │ │ └── react-app-env.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── todos/ │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── src/ │ │ │ ├── App.tsx │ │ │ ├── index.tsx │ │ │ ├── styles.css │ │ │ └── vite-env.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ └── todos_with_atomFamily/ │ ├── README.md │ ├── index.html │ ├── package.json │ ├── public/ │ │ └── index.html │ ├── src/ │ │ ├── App.tsx │ │ ├── index.tsx │ │ ├── styles.css │ │ └── vite-env.d.ts │ ├── tsconfig.json │ └── vite.config.ts ├── package.json ├── pnpm-workspace.yaml ├── rollup.config.mjs ├── src/ │ ├── babel/ │ │ ├── plugin-debug-label.ts │ │ ├── plugin-react-refresh.ts │ │ ├── preset.ts │ │ └── utils.ts │ ├── index.ts │ ├── react/ │ │ ├── Provider.ts │ │ ├── useAtom.ts │ │ ├── useAtomValue.ts │ │ ├── useSetAtom.ts │ │ ├── utils/ │ │ │ ├── useAtomCallback.ts │ │ │ ├── useHydrateAtoms.ts │ │ │ ├── useReducerAtom.ts │ │ │ └── useResetAtom.ts │ │ └── utils.ts │ ├── react.ts │ ├── types.d.ts │ ├── utils.ts │ ├── vanilla/ │ │ ├── atom.ts │ │ ├── internals.ts │ │ ├── store.ts │ │ ├── typeUtils.ts │ │ ├── utils/ │ │ │ ├── atomFamily.ts │ │ │ ├── atomWithDefault.ts │ │ │ ├── atomWithLazy.ts │ │ │ ├── atomWithObservable.ts │ │ │ ├── atomWithReducer.ts │ │ │ ├── atomWithRefresh.ts │ │ │ ├── atomWithReset.ts │ │ │ ├── atomWithStorage.ts │ │ │ ├── constants.ts │ │ │ ├── freezeAtom.ts │ │ │ ├── loadable.ts │ │ │ ├── selectAtom.ts │ │ │ ├── splitAtom.ts │ │ │ └── unwrap.ts │ │ └── utils.ts │ └── vanilla.ts ├── tests/ │ ├── babel/ │ │ ├── plugin-debug-label.test.ts │ │ ├── plugin-react-refresh.test.ts │ │ └── preset.test.ts │ ├── react/ │ │ ├── abortable.test.tsx │ │ ├── async.test.tsx │ │ ├── async2.test.tsx │ │ ├── basic.test.tsx │ │ ├── dependency.test.tsx │ │ ├── error.test.tsx │ │ ├── items.test.tsx │ │ ├── onmount.test.tsx │ │ ├── optimization.test.tsx │ │ ├── provider.test.tsx │ │ ├── transition.test.tsx │ │ ├── types.test.tsx │ │ ├── useAtomValue.test.tsx │ │ ├── useSetAtom.test.tsx │ │ ├── utils/ │ │ │ ├── types.test.tsx │ │ │ ├── useAtomCallback.test.tsx │ │ │ ├── useHydrateAtoms.test.tsx │ │ │ ├── useReducerAtom.test.tsx │ │ │ └── useResetAtom.test.tsx │ │ └── vanilla-utils/ │ │ ├── atomFamily.test.tsx │ │ ├── atomWithDefault.test.tsx │ │ ├── atomWithObservable.test.tsx │ │ ├── atomWithReducer.test.tsx │ │ ├── atomWithRefresh.test.tsx │ │ ├── atomWithStorage.test.tsx │ │ ├── freezeAtom.test.tsx │ │ ├── loadable.test.tsx │ │ ├── selectAtom.test.tsx │ │ └── splitAtom.test.tsx │ ├── setup.ts │ ├── test-utils.ts │ └── vanilla/ │ ├── basic.test.tsx │ ├── dependency.test.tsx │ ├── derive.test.tsx │ ├── effect.test.ts │ ├── internals.test.tsx │ ├── memoryleaks.test.ts │ ├── store.test.tsx │ ├── storedev.test.tsx │ ├── types.test.tsx │ └── utils/ │ ├── atomFamily.test.ts │ ├── atomWithDefault.test.ts │ ├── atomWithLazy.test.ts │ ├── atomWithRefresh.test.ts │ ├── atomWithReset.test.ts │ ├── loadable.test.ts │ ├── types.test.tsx │ └── unwrap.test.ts ├── tsconfig.json ├── vitest.config.mts └── website/ ├── .babelrc ├── .gitignore ├── README.md ├── api/ │ └── contact.js ├── gatsby-browser.js ├── gatsby-config.js ├── gatsby-node.js ├── gatsby-shared.js ├── gatsby-ssr.js ├── jsconfig.json ├── package.json ├── postcss.config.js ├── reach-router.js ├── src/ │ ├── api/ │ │ └── contact.js │ ├── atoms/ │ │ └── index.js │ ├── components/ │ │ ├── button.js │ │ ├── client-only.js │ │ ├── code-sandbox.js │ │ ├── code.js │ │ ├── core-demo.js │ │ ├── credits.js │ │ ├── docs.js │ │ ├── extensions-demo.js │ │ ├── external-link.js │ │ ├── footer.js │ │ ├── headline.js │ │ ├── icon.js │ │ ├── inline-code.js │ │ ├── intro.js │ │ ├── jotai.js │ │ ├── layout.js │ │ ├── logo-cloud.js │ │ ├── logo.js │ │ ├── main.js │ │ ├── mdx.js │ │ ├── menu.js │ │ ├── meta.js │ │ ├── modal.js │ │ ├── search-button.js │ │ ├── search-modal.js │ │ ├── shelf.js │ │ ├── sidebar.js │ │ ├── stackblitz.js │ │ ├── support-modal.js │ │ ├── support.js │ │ ├── tabs.js │ │ ├── toc.js │ │ ├── toggle.js │ │ ├── utilities-demo.js │ │ └── wrapper.js │ ├── hooks/ │ │ └── index.js │ ├── pages/ │ │ ├── 404.js │ │ ├── docs/ │ │ │ └── {Mdx.slug}.js │ │ └── index.js │ ├── styles/ │ │ ├── base.css │ │ ├── components.css │ │ ├── fonts.css │ │ ├── index.css │ │ ├── layout.css │ │ ├── pmndrs.css │ │ └── utilities.css │ └── utils/ │ └── index.js ├── static/ │ └── robots.txt ├── tailwind.config.js └── vercel.json