> react-native-state-management
Local and global state patterns with Context, Zustand, and Redux Toolkit. Use when choosing or implementing state management in React Native with Context, Zustand, or Redux. (triggers: **/*.tsx, **/*.ts, useState, useContext, zustand, redux, state-management)
curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/react-native-state-management?format=md"React Native State Management
Priority: P1 (OPERATIONAL)
State Strategy
- Local State: Use
useStatefor component-scoped state (forms, UI toggles). - Lifted State: Share between siblings via parent component.
- Context: Share across components without prop drilling (theme, auth).
- Zustand: Lightweight global state for small-medium apps.
- Redux Toolkit: Complex apps with time-travel debugging needs.
- Server State: Use
@tanstack/react-queryfor API data (caching, refetching).
const ThemeContext = createContext<ThemeContextType | undefined>(undefined);
export function useTheme() {
const ctx = useContext(ThemeContext);
if (!ctx) throw new Error('useTheme must be inside ThemeProvider');
return ctx;
}
Zustand (Recommended for Most Apps)
import { create } from 'zustand';
const useStore = create((set) => ({
count: 0,
increment: () => set((state) => ({ count: state.count + 1 })),
}));
// Usage
const count = useStore((state) => state.count);
Anti-Patterns
- No Redux for Everything: Start with Context/Zustand.
- No Prop Drilling: Use Context for global state.
- No Derived State in State: Compute in render.
Reference & Examples
Related Topics
react/state-management | react/hooks
> related_skills --same-repo
> typescript-tooling
Development tools, linting, and build config for TypeScript. Use when configuring ESLint, Prettier, Jest, Vitest, tsconfig, or any TS build tooling. (triggers: tsconfig.json, .eslintrc.*, jest.config.*, package.json, eslint, prettier, jest, vitest, build, compile, lint)
> typescript-security
Secure coding practices for TypeScript. Use when validating input, handling auth tokens, sanitizing data, or managing secrets and sensitive configuration. (triggers: **/*.ts, **/*.tsx, validate, sanitize, xss, injection, auth, password, secret, token)
> typescript-language
Modern TypeScript standards for type safety and maintainability. Use when working with types, interfaces, generics, enums, unions, or tsconfig settings. (triggers: **/*.ts, **/*.tsx, tsconfig.json, type, interface, generic, enum, union, intersection, readonly, const, namespace)
> typescript-best-practices
Idiomatic TypeScript patterns for clean, maintainable code. Use when writing or refactoring TypeScript classes, functions, modules, or async logic. (triggers: **/*.ts, **/*.tsx, class, function, module, import, export, async, promise)