Skip to content
Agentmart
Submit a tool

jotai-atom-architecture

Use when designing Jotai state architecture, setting up atom composition patterns, managing large objects, or debugging re-render issues - ensures proper atom…

Skill by nocksock

IndexedMIT★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/nocksock-jotai-atom-architecture

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Use when designing Jotai state architecture, setting up atom composition patterns, managing large objects, or debugging re-render issues - ensures proper atom structure, memory management, and granular reactivity for maintainable atomic state

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/jotai-atom-architecture

What's inside

Skill name
jotai-atom-architecture
Description
Use when designing Jotai state architecture, setting up atom composition patterns, managing large objects, or debugging re-render issues - ensures proper atom structure, memory management, and granular reactivity for maintainable atomic state
License
MIT
Instructions
361 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Jotai Atom Architecture Skill

## When This Skill Applies

Use this skill when:
- Designing new Jotai state architecture for a feature
- Refactoring existing state management to Jotai
- Managing dynamic collections or large objects
- Experiencing unnecessary re-renders
- Setting up atom families for parameterized state
- Implementing async data fetching with atoms
- Debugging memory leaks in atom-based state
- Integrating Jotai with React Three Fiber or other libraries

## Atom Architecture Checklist

Follow this systematic approach when working with Jotai atoms:

### ☐ 1. Identify State Granularity

**Determine atomic units:**

```typescript
// WRONG: Monolithic state
const appStateAtom = atom({
  user: {...},
  todos: [...],
  settings: {...},
  ui: {...}
})

// CORRECT: Atomic granularity
const userAtom = atom({...})
const todosAtom = atom([...])
const settingsAtom = atom({...})
const uiStateAtom = atom({...})
```

**Principle**: "One atom per independent piece of state"

**Ask yourself**:
- Can this state be updated independently?
- Do different components need different parts?
- Will updates to one part affect unrelated components?

### ☐ 2. Choose Appropriate Atom Type

**Match pattern to use case:**

| Use Case | Atom Type | Example |
|----------|-----------|---------|
| Simple value | `atom(initial)` | `atom(0)` |
| Derived/computed | `atom((get) => ...)` | `atom((get) => get(a) + get(b))` |
| Async data | `atom(async (get) => ...)` | `atom(async () => fetch(...))` |
| Resettable | `atomWithReset(initial)` | `atomWithReset(0)` |
| Refreshable async | `atomWithRefresh(async () => ...)` | Pull-to-refresh |
| Persisted | `atomWithStorage('key', initial)` | localStorage sync |
| Reducer-based | `atomWithReducer(initial, reducer)` | Redux-like |
| Parameterized | `atomFamily((param) => atom(...))` | Dynamic collections |

### ☐ 3. Apply Focused Subscriptions for Large Objects

**Prevent unnecessary re-renders:**

```typescript
import { focusAtom } from 'jotai-optics'

const largeObjectAtom = atom({
  users: [...], // 1000 users
  posts: [...], // 5000 posts
  comments: [...] // 10000 comments
})

// WRONG: Component re-renders on ANY property change
const data = useAtomValue(largeObjectAtom)

// CORRECT: Only re-renders when users change
const usersAtom = focusAtom(largeObjectAtom, (optic) => optic.prop('users'))
const users = useAtomValue(usersAtom)
```

**Impact**: Eliminates re-renders from unrelated data changes.

### ☐ 4. Use splitAtom for Array Management

**Enable item-level reactivity:**

```typescript
import { splitAtom } from 'jotai/utils'

const todosAtom = atom([...])
const todoAtomsAtom = splitAtom(todosAtom)

function TodoList() {
  const [todoAtoms, dispatch] = useAtom(todoAtomsAtom)

  return todoAtoms.map(todoAtom => (
    <TodoItem
      key={`${todoAtom}`} // Use atom.toString() as stable key
      todoAtom={todoAtom}
      onRemove={() => dispatch({ type: 'remove', atom: todoAtom })}
    />
  ))
}

function TodoItem({ todoAtom }) {
  const [todo, setTodo] = useAtom(todoAtom)
  // Only THIS item re-renders when updated
  return <div>{todo.text}</div>
}
```

**Benefit**: Updating one item doesn't re-render the list or other items.

### ☐ 5. Implement Atom Families with Memory Management

**For dynamic parameterized state:**

```typescript

From nocksock/superpowers, MIT.

More from nocksock/superpowers

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
Mar 18, 2026 (7 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from nocksock

Cite this page

jotai-atom-architecture skill. Agent Mart. https://agentmart.dev/skills/nocksock-jotai-atom-architecture (last updated 2026-10-24)