← ClaudeAtlas

react-ban-use-effectlisted

Review or replace React useEffect calls, or enforce a no-direct-effect policy. Use for effect implementation, refactoring, or lint policy; excludes unrelated React work and non-React effect systems.
uinaf/agent-skills · ★ 4 · Code & Development · score 74
Install: claude install-skill uinaf/agent-skills
# React Ban useEffect Treat direct effects as an external-synchronization escape hatch, not a default state-management tool. ## Scope Effect replacement changes the touched behavior. Repository-wide lint enforcement is a separate task: apply it when requested or required by existing repository policy. A review request produces findings; an implementation request authorizes in-scope replacements and verification without another approval checkpoint. ## Workflow 1. Search the touched React surface for direct imports, namespace calls, and wrappers around `useEffect`. 2. Classify each effect before editing: - render-time derivation - server data or client-owned server state - user-caused work - identity-driven reset - external store or system synchronization - async UI or performance staging 3. Apply the matching pattern in [replacements](references/replacements.md). Read [alternatives](references/alternatives.md) only when the effect exposes a broader data, form, store, or performance ownership problem. 4. Preserve the repository's framework, data layer, lint shape, and dependency policy. Add a library only when the request or repository policy authorizes it. 5. Run lint, type, and test gates plus the smallest real UI or hook check for the changed behavior. ## Decision Order Prefer, in order: 1. render-time calculation 2. server, loader, or framework data API 3. repository-owned server-state layer 4. event handler, action, or mutation 5