← Docs

Jotai atom patterns

Recipes for derived atoms, write-only atoms, and atom families in Meridian.

Derived atom

import { atom } from 'jotai'

export const countAtom = atom(0)
export const doubleAtom = atom((get) => get(countAtom) * 2)

Recomputes whenever countAtom changes.

Write-only atom

import { atom } from 'jotai'

export const logAtom = atom(null, (_get, set, msg: string) => {
  console.log(msg)
  set(countAtom, 0)
})

No readable value — fires side effects on write.

Atom family

import { atomFamily } from 'jotai/utils'

export const userAtom = atomFamily((id: string) =>
  atom({ name: '', loaded: false })
)

Parametric atoms — one instance per id.

Async derived

import { atom } from 'jotai'

export const dataAtom = atom(async () => {
  const res = await fetch('/api/data')
  return res.json()
})

Use with Suspense or Jotai's loadable.