About tanstack-store
A coding skill for developers working with TanStack Store, including React adapters, atoms, and derived state. It provides guidance on state design, implementation patterns, and testing.
Key features
- 01Inspect store lifetime and update patterns
- 02Guidance for selectors, atoms, and batching
- 03React usage and migration advice
- 04SSR, lifecycle, and testing checks
Use cases
- 01Designing request-scoped state for SSR
- 02Reducing component rerenders with selectors
- 03Testing derived state and subscriptions
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill tanstack-storeAfter installing, type/tanstack-storein Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
agents/openai.yamlreferences/atoms-derived-batching.mdproduction-testing.mdreact-patterns.mdsetup-core.mdsource-map.mdDetails
From the project READMETanStack Store
Use this skill when work touches TanStack Store, especially @tanstack/react-store, framework-agnostic stores, atoms, derived state, or migration from older useStore examples.
Workflow
- Inspect the local state shape before changing code:
- Package versions for
@tanstack/store,@tanstack/react-store, framework adapters, React, and test utilities. - Store lifetime: module singleton, context-provided bundle, component-lifetime store, request-scoped SSR state, or local atom.
- Read/write APIs in use:
useSelector, deprecateduseStore,_useStore,useAtom,setState, actions factories, subscriptions, or atoms. - Update expectations: immutable object updates, derived computations, batching, persistence side effects, and selector re-render behavior.
- Package versions for
- Refresh current docs and package evidence when behavior or versions matter. Start from source-map.md.
- For installation, package names, core
createStore,Store, actions, subscriptions, immutable updates, and batching, use setup-core.md. - For React usage,
useSelector, selectorcompare,useAtom,useCreateStore,useCreateAtom, contexts, anduseStoremigrations, use react-patterns.md. - For atoms, async atoms, derived stores, previous values, equality,
shallow, and reactive graph behavior, use atoms-derived-batching.md. - For SSR, testing, lifecycle, persistence, framework adapters, debugging without devtools, and production checks, use production-testing.md.
Implementation Judgment
- Prefer
useSelectorin React. TreatuseStoreas a deprecated alias and_useStoreas transitional unless the codebase deliberately adopted it. - Keep store updates immutable.
setStatereplaces the store value with the updater return, so object updates should spread or construct the complete next state. - Use narrow selectors for React rendering. Selecting the whole store couples a component to every change.
- Add
compareorshallowonly when a selector returns composite values that would otherwise churn; prefer stable primitive selections first. - Use
batchwhen multiple store or atom updates should notify subscribers once with final state. - Use action factories when a store owns domain operations; keep UI components from hand-rolling repeated update logic.
- Avoid module-scope user/session stores in SSR unless the state is truly global and public. Create request- or component-scoped stores for per-user data.
- Use
subscribefor side effects like persistence or logging, and always keep theunsubscribecleanup. Since 0.11.2, reads of other stores inside a subscriber are untracked; subscribe to every source that should trigger the effect. - Check current docs before relying on adapter details. Store remains alpha/v0, and adapter APIs are still evolving.
Verification
Prefer the repo's existing checks. For meaningful TanStack Store changes, include the relevant subset:
- Typecheck for store state, action factories, selectors, atom values, and context bundles.
- Unit tests for
setState, action methods, derived stores, atoms, async atoms, batching, and subscription cleanup. - Component tests for selector re-render boundaries,
compare,useAtomsetters, context errors, and deprecated API migrations. - SSR/request tests when changing store lifetime, module scope, context providers, or server-created initial state.
- Browser smoke for UI flows that depend on derived state, optimistic local state, persistence, or cross-component subscriptions.
Comments
Markdown supported