Treat API data as server state and use @tanstack/react-query. The query cache owns fetching, deduplication, stale times, refetching, loading, and error states, so the component reads query data directly instead of copying it into useState. Use mutations to update server data and invalidate or update affected query keys. Keep only genuinely local UI state in useState and reserve Zustand or Redux for client state that is not a cache of the server response.
Installs into .claude/skills of the current project.
Are you the author of React Native State Management?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-react-native-state-management-59d138fe)
Treat API data as server state and use @tanstack/react-query. The query cache owns fetching, deduplication, stale times, refetching, loading, and error states, so the component reads query data directly instead of copying it into useState.
Use mutations to update server data and invalidate or update affected query keys. Keep only genuinely local UI state in useState and reserve Zustand or Redux for client state that is not a cache of the server response.