FRONT010warningPro

useeffect-timer-no-cleanup

useEffect schedules setInterval/setTimeout without returning a cleanup function that clears it.

Applies to: JavaScript, TypeScript

Why this matters

React calls your useEffect on every dependency change and once more on unmount. If the effect starts a setInterval without returning a cleanup that calls clearInterval, each re-render layers a new timer on top of the old ones. The old timers still hold closures over props/state/refs, so React cannot garbage-collect the associated component trees. Over long-lived dev sessions — or production dashboards that rarely unmount — this accumulates into a visible memory leak. Return () => clearInterval(id) / clearTimeout(id) from the effect so every re-run releases the previous timer.

Catch it before it ships

pip install stablestack # or: npx stablestackstablestack # scans your project, FRONT010 includedstablestack explain FRONT010

FRONT010 is part of the Pro rule set. See pricing — the free tier ships 24 checks with no signup.

False positive in your codebase? Suppress a single line with # noqa: FRONT010