Skip to main content
Next.js & React · Developer Error Resolution Lab

Fix React 'Maximum update depth exceeded' in useEffect Loops

Break circular state dependency loops in useEffect and custom hooks.

Triggered Error Message:

Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate.

Customize Solution for Your Environment
import { useEffect, useMemo } from "react";

// Option 1: Depend directly on primitive string/number:
useEffect(() => {
  fetchData(userId);
}, [userId]);

// Option 2: Wrap objects in useMemo if required by sub-functions:
const options = useMemo(() => ({ id: userId }), [userId]);

Root Cause & Mechanism Analysis

Why does this error occur?

A `useEffect` hook triggers a state update, and that updated state or an unstable object reference is listed in the dependency array, causing the effect to run repeatedly forever.

Frequently Asked Questions

Why do object dependencies cause re-render loops in React?
In JavaScript, `{ a: 1 } !== { a: 1 }`. Every render creates a new memory reference, tricking React into thinking dependencies changed.
Browse All 35 Guides