mcpField
R
react-effects-audit

react-effects-audit

github.com/fusengineTesting & quality3446 installsUpdated 2w ago
Repository

About react-effects-audit

react-effects-audit is a code-audit skill for React and Next.js projects. It finds nine unnecessary useEffect patterns, reports severity and locations with suggested fixes, and checks architecture guidance where applicable.

Key features

  1. 01Detects nine useEffect anti-patterns
  2. 02Reports severity and code locations
  3. 03Suggests fixes for confirmed findings
  4. 04Cross-checks React and Next.js architecture
  5. 05Avoids unreviewed automatic fixes

Use cases

  1. 01Reviewing a React codebase for unnecessary Effects
  2. 02Finding fetch Effects without cleanup
  3. 03Checking data-fetching Effects in Next.js
  4. 04Assessing Effect chains and event logic

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/fusengine/agents --skill react-effects-audit

After installing, type/react-effects-auditin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
anti-patterns.md
detection-rules.md
fix-patterns-advanced.md
fix-patterns-core.md
report-format.md

Details

From the project README
React Effects Audit scans a target file or directory for the 9 `useEffect` anti-patterns described in React's official "You Might Not Need an Effect" guidance -- derived state, expensive calculations, state resets, event logic, parent notification, effect chains, missing fetch cleanup, manual store subscriptions, and app-init logic -- each flagged with a severity (CRITICAL/WARNING/INFO), its exact location, and a proposed fix.

When the target is a Next.js or React project, it cross-references the matching SOLID skill (solid-nextjs or solid-react) to also catch architecture-level violations like data-fetching Effects that should be Server Components or TanStack Query instead. It never auto-fixes without showing the finding first.

Target: $ARGUMENTS

React Effects Audit

Overview

Scan React codebases to detect unnecessary useEffect usage based on official React documentation ("You Might Not Need an Effect"). Reports anti-patterns with severity, location, and recommended fixes.


Agent Workflow (MANDATORY)

PHASE 1: Scan target files (Glob *.tsx, *.jsx, *.ts, *.js)
PHASE 2: Detect anti-patterns (Grep detection rules)
PHASE 3: Analyze context (Read flagged files)
PHASE 4: Generate report with fixes

Anti-Pattern Summary

#Anti-PatternSeverityDetection
1Derived state in EffectWARNINGuseEffect + setState from other state/props
2Expensive calculation in EffectWARNINGuseEffect + setState with filter/map/reduce
3State reset via EffectWARNINGuseEffect resets state when prop changes
4Event logic in EffectCRITICALUser interaction logic inside useEffect
5Parent notification via EffectWARNINGuseEffect calls parent onChange/onUpdate
6Effect chainsCRITICALMultiple useEffect triggering each other
7Missing cleanup in fetchCRITICALuseEffect fetch without cleanup/AbortController
8Manual store subscriptionWARNINGaddEventListener/subscribe in useEffect
9App init in EffectINFOOne-time init logic in useEffect(fn, [])

Severity Levels

LevelMeaningAction
CRITICALBugs, race conditions, memory leaksFix immediately
WARNINGPerformance issues, unnecessary re-rendersFix same session
INFOReadability, minor inefficiencyFix if time allows

Reference Guide

Skill References
ReferenceWhen to Consult
anti-patterns.mdUnderstanding each anti-pattern
detection-rules.mdGrep patterns for scanning
fix-patterns-core.mdFix examples #1-5
fix-patterns-advanced.mdFix examples #6-9
report-format.mdGenerating audit report
SOLID Cross-References (MANDATORY)

This audit complements existing SOLID skills. Always cross-reference:

Project TypeSOLID SkillKey Rule
Next.jsfuse-nextjs:solid-nextjsNo useEffect for data fetching; use Server Components
Reactfuse-react:solid-reactNo useEffect for data fetching; use TanStack Query

Integration: When auditing a Next.js or React project, also load the corresponding SOLID skill to check architecture-level violations (file size, interface separation, business logic in components).


Quick Start

1. Glob **/*.{tsx,jsx} in target directory
2. Detect project type (next.config.* → Next.js, package.json → React)
3. Load corresponding SOLID skill references if applicable
4. For each detection rule in detection-rules.md:
   → Grep pattern across all files
   → Read flagged files for context analysis
   → Confirm or dismiss (false positive check)
5. For each confirmed finding:
   → Identify severity from anti-patterns.md
   → Propose fix from fix-patterns-core.md or fix-patterns-advanced.md
   → Cross-check with SOLID rules (SRP, file size, hooks separation)
6. Output report using report-format.md

React 19+ Considerations

FeatureImpact on Audit
React CompilerAuto-memoizes; useMemo less needed but Effect anti-patterns still apply
useEffectEventStable in 19.2; solves stale closure in Effects without adding deps
Activity APIAlternative to conditional rendering; reduces mount/unmount Effects
useSyncExternalStoreReplaces manual subscription Effects (anti-pattern #8)
Server ComponentsEliminates many data-fetching Effects entirely

Forbidden Behaviors

  • Do NOT auto-fix without showing the finding first
  • Do NOT flag Effects that synchronize with external systems (valid use)
  • Do NOT flag data fetching Effects that have proper cleanup
  • Do NOT ignore context: always Read the file before confirming a finding

Comments

Markdown supported