faq.title

faq.description

faq.categories.general

faq.questions.what-is-zustand.q

faq.questions.what-is-zustand.a

faq.questions.why-use-zustand.q

faq.questions.why-use-zustand.a

faq.questions.zustand-vs-redux.q

faq.questions.zustand-vs-redux.a

faq.questions.bundle-size.q

faq.questions.bundle-size.a

faq.categories.usage

faq.questions.create-store.q

faq.questions.create-store.a

import { create } from 'zustand'

const useStore = create((set) => ({
  count: 0,
  increment: () => set((state) => ({ count: state.count + 1 })),
}))
faq.questions.update-state.q

faq.questions.update-state.a

// Partial update
set({ count: 10 })

// Functional update
set((state) => ({ count: state.count + 1 }))

// Replace entire state
set({ count: 0 }, true)
faq.questions.async-actions.q

faq.questions.async-actions.a

const useStore = create((set) => ({
  data: null,
  loading: false,
  fetchData: async () => {
    set({ loading: true })
    const response = await fetch('/api/data')
    const data = await response.json()
    set({ data, loading: false })
  },
}))
faq.questions.selectors.q

faq.questions.selectors.a

// Select specific state
const count = useStore((state) => state.count)

// Shallow comparison for objects
import { shallow } from 'zustand/shallow'
const { a, b } = useStore(
  (state) => ({ a: state.a, b: state.b }),
  shallow
)

faq.categories.advanced

faq.questions.middleware.q

faq.questions.middleware.a

faq.questions.persist-state.q

faq.questions.persist-state.a

faq.questions.devtools.q

faq.questions.devtools.a

faq.questions.typescript.q

faq.questions.typescript.a

faq.categories.troubleshooting

faq.questions.rerender-issues.q

faq.questions.rerender-issues.a

faq.questions.state-not-updating.q

faq.questions.state-not-updating.a

faq.questions.ssr-issues.q

faq.questions.ssr-issues.a

faq.questions.memory-leaks.q

faq.questions.memory-leaks.a

faq.stillHaveQuestions.title

faq.stillHaveQuestions.description