Skip to content
Skill Authoring
Skill

/react-useeffect

React useEffect best practices from official docs. Use when writing/reviewing useEffect, useState for derived values, data fetching, or state synchronization. Teaches when NOT to use Effect and better alternatives.

BOOST
From plugin
jarrodwatts-claude-code-config
1.1k5 skills4 agents1 command4 hooks
Install
$ npx -y skills add jarrodwatts/claude-code-config --skill react-useeffect --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/react-useeffect

Context preview

The summary Claude sees to decide when to auto-load this skill.

React useEffect best practices from official docs. Use when writing/reviewing useEffect, useState for derived values, data fetching, or state synchronization. Teaches when NOT to use Effect and better alternatives.

SKILL.md

react-useeffect.SKILL.md
name: react-useeffect
description: React useEffect best practices from official docs. Use when writing/reviewing useEffect, useState for derived values, data fetching, or state synchronization. Teaches when NOT to use Effect and better alternatives.

You Might Not Need an Effect

Effects are an **escape hatch** from React. They let you synchronize with external systems. If there is no external system involved, you shouldn't need an Effect.

Quick Reference

| Situation | DON'T | DO | |-----------|-------|-----| | Derived state from props/state | `useState` + `useEffect` | Calculate during render | | Expensive calculations | `useEffect` to cache | `useMemo` | | Reset state on prop change | `useEffect` with `setState` | `key` prop | | User event responses | `useEffect` watching state | Event handler directly | | Notify parent of changes | `useEffect` calling `onChange` | Call in event handler | | Fetch data | `useEffect` without cleanup | `useEffect` with cleanup OR framework |

When You DO Need Effects

  • Synchronizing with **external systems** (non-React widgets, browser APIs)
  • **Subscriptions** to external stores (use `useSyncExternalStore` when possible)
  • **Analytics/logging** that runs because component displayed
  • **Data fetching** with proper cleanup (or use framework's built-in mechanism)

When You DON'T Need Effects

1. **Transforming data for rendering** - Calculate at top level, re-runs automatically 2. **Handling user events** - Use event handlers, you know exactly what happened 3. **Deriving state** - Just compute it: `const fullName = firstName + ' ' + lastName` 4. **Chaining state updates** - Calculate all next state in the event handler

Decision Tree

Need to respond to something?
├── User interaction (click, submit, drag)?
│   └── Use EVENT HANDLER
├── Component appeared on screen?
│   └── Use EFFECT (external sync, analytics)
├── Props/state changed and need derived value?
│   └── CALCULATE DURING RENDER
│       └── Expensive? Use useMemo
└── Need to reset state when prop changes?
    └── Use KEY PROP on component

Detailed Guidance

  • [Anti-Patterns](./anti-patterns.md) - Common mistakes with fixes
  • [Better Alternatives](./alternatives.md) - useMemo, key prop, lifting state, useSyncExternalStore
Read more
Ships withjarrodwatts-claude-code-config

my personal claude code configuration - mostly not created by me, but sourced from many talented people in the community.

Get the whole plugin