Skip to content

React 18: Error boundaries actually catches errors in effects #21712

Closed
@eps1lon

Description

@eps1lon

Given

function ThrowInEffect() {
  React.useEffect(() => {
    throw new Error('passive effect')
  }, [])
  return null;
}

In React 17 this error got logged to the console (and triggered the error overlay in create-react-app) regardless of whether ThrowInEffect was a child of an Error Boundary or not.

In React 18 (createRoot and legacy root API) an Error Boundary will prevent logging that error to the console (and not trigger the error overlay in create-react-app).

Errors during render work like they did in React 17.

Behavior in React 17: https://codesandbox.io/s/react-17-error-boundaries-vp21e?file=/src/index.js
Behavior in React 18: https://codesandbox.io/s/react-18-error-boundaries-psd56?file=/src/index.js

Recording of effect errors in React 17 and 18 and with and without Error Boundaries_

react18-error-boundaries.mp4

Metadata

Metadata

Assignees

No one assigned

    Labels

    React 18Bug reports, questions, and general feedback about React 18Type: Discussion

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions