Debugging: How to fix the "cannot update a component while rendering a different component" error in React

Join the AI Workshop to learn more about AI and how it can be applied to web development. Next cohort February 1st, 2026

The AI-first Web Development BOOTCAMP cohort starts February 24th, 2026. 10 weeks of intensive training and hands-on projects.


While working on a React / Next.js application I got this error:

Cannot update a component (`App`) while rendering a different component

I researched a bit how to solve this problem, but there was a lot of confusion in the material I found.

Here is what I was doing: I had a centralized state managed in the App component:

function MyApp({ Component, pageProps }) {
  const [lessonsRead, setLessonsRead] = useState()

  return (
    <Component
      lessonsRead={lessonsRead}
      setLessonsRead={setLessonsRead}
      {...pageProps}
    />
  )
}

and in a Next.js page component I called setLessonsRead to populate this state with data, based on the result of a SWR (fetch) call:

if (courseData && courseData.lessonsRead) {
  setLessonsRead(courseData.lessonsRead)
}

I was doing this right inside the component.

To solve this problem I had to wrap this code in useEffect, to only run it when the data changed and not on every component props update:

useEffect(() => {
  if (courseData && courseData.lessonsRead) {
    setLessonsRead(courseData.lessonsRead)
  }
}, [courseData])

Lessons in this unit:

0: Introduction
1: How to handle errors in React
2: Fix the “Objects are not valid as a React child” error
3: Fix Uncaught Error Objects are not valid as a React child
4: How to use useEffect callback with event callbacks
5: How to debug a React application
6: How to fix the dangerously SetInnerHTML did not match error in React
7: React, how to fix the TypeError: resolver is not a function error
8: ▶︎ How to fix the "cannot update a component while rendering a different component" error in React
9: Testing React components
10: How to configure HTTPS in a React app on localhost