Do not mirror server data into `useState` and fetch it in `useEffect`. Fetch initial/server-owned data in a Server Component, or use SWR/TanStack Query when the client needs revalidation, polling, or optimistic updates. Keep `useState` for local UI state, and use a Client Component boundary only where interaction requires it.
Installs into .claude/skills of the current project.
Are you the author of Nextjs State Management?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-nextjs-state-management-6790734c)
Do not mirror server data into `useState` and fetch it in `useEffect`. Fetch initial/server-owned data in a Server Component, or use SWR/TanStack Query when the client needs revalidation, polling, or optimistic updates. Keep `useState` for local UI state, and use a Client Component boundary only where interaction requires it.