Nothing to hand? Load the — a raw useEffect fetch, an uncleared poll, derived state synced by effects, index keys and an in-place mutation — the , where it works but hoisting, memoization and semantics are wrong, or the , which should come back sound.
Paste the React
One file, several files with // ... comment headers, a screen with its hooks, or a grab-bag of components - JSX or TSX, JavaScript or TypeScript. The instant prescan reads it for free while you type and lists what it mechanically found: raw useEffect fetches, effects that subscribe or start timers with no cleanup, async effect callbacks, effects with no dependency array, derived state synced by effects, index-based and per-render list keys, in-place state mutation, conditional hooks, blanket memoization, class components, clickable divs, dangerouslySetInnerHTML and direct DOM access - plus the components, custom hooks and contexts declared and the useState, useEffect, memo-hook, list-render, event-handler, test and line counts in your paste.
The AI reviews it
A sound/refactor/rework verdict; severity-ranked findings, each quoting the component, hook, prop, state variable or expression it concerns and carrying corrected JSX/TSX code; a twelve-item React checklist scored pass, fail or not-observable against your paste; and an honest health check across State & data flow, Hooks & effects, Rendering & performance, Composition & reuse, and Accessibility & semantics. Every prescan hit is confirmed or explicitly set aside — including the false positives, like class components in a codebase that is honestly still pre-hooks.
Take the rewrite and go
Your own code refined — same screen, same intent, same naming: derived state moved into render, effects given cleanups and honest dependencies, raw fetches moved behind the right lane, keys made stable, in-place mutations replaced with copies, memoization pruned, hoisted state restored to the caller, clickable divs made buttons, labels added — as a downloadable Refined.tsx or as a unified diff against your own paste that git apply accepts, plus the ordered next steps, the findings as CSV, a PR review comment, and review history kept on your account and mirrored to this device with restore. The prescan re-reads the rewrite for free and says which of the smells it matched are actually gone; take the rewrite back into the box as your new input and it keeps scoring your edits against the last review, so you only pay for a second review once it is worth running. Markdown and JSON export throughout.
Derived from the @affaan-m/react-patterns skill (MIT).