Bird
Raised Fist0
Reactframework~10 mins

Using error boundaries in React - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Using error boundaries
Render Parent Component
↓
Render Child Component
↓
Error Occurs in Child?
No→Display Child Output
Yes↓
Error Boundary Catches Error
↓
Render Fallback UI
↓
User Interaction or Retry
↓
Try Rendering Child Again
The parent renders a child component. If the child throws an error, the error boundary catches it and shows fallback UI instead of crashing the whole app.
Execution Sample
React
class ErrorBoundary extends React.Component {
  state = { hasError: false };

  static getDerivedStateFromError(error) {
    return { hasError: true };
  }

  handleRetry = () => {
    this.setState({ hasError: false });
  };

  render() {
    if (this.state.hasError) {
      return (
        <div>
          Error occurred
          <button onClick={this.handleRetry}>Retry</button>
        </div>
      );
    }

    return this.props.children;
  }
}
A simple error boundary component that catches errors in its children and shows a fallback message.
Execution Table
StepActionError Thrown?Error Boundary StateRendered Output
1Render ErrorBoundary with ChildNohasError = falseChild component output
2Child throws error during renderYeshasError = falseNo output yet
3ErrorBoundary catches errorYeshasError = trueFallback UI shown: 'Error occurred'
4User triggers retry (re-render)NohasError = falseChild component output
5No error on retryNohasError = falseChild component output
6Execution endsNohasError = falseNormal UI displayed
💡 Execution stops when no error occurs and UI renders normally.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4Final
hasErrorfalsefalsefalsetruefalsefalse
Key Moments - 3 Insights
Why does the error boundary show fallback UI instead of crashing the whole app?
Because in step 3 of the execution_table, the error boundary catches the error and sets hasError to true, which triggers rendering the fallback UI instead of the broken child.
Does the error boundary catch errors thrown inside event handlers?
No, error boundaries only catch errors during rendering, lifecycle methods, and constructors of child components, as shown in step 2 where the error occurs during render.
How does the error boundary reset to try rendering the child again?
In step 4, user interaction triggers a re-render that resets hasError to false, allowing the child to render again.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of hasError after step 3?
Afalse
Bundefined
Ctrue
Dnull
💡 Hint
Check the variable_tracker row for hasError at After Step 3.
At which step does the fallback UI first appear?
AStep 3
BStep 2
CStep 1
DStep 4
💡 Hint
Look at the Rendered Output column in the execution_table.
If the child component never throws an error, what will the error boundary render?
ANothing
BChild component output
CFallback UI
DError message in console
💡 Hint
Refer to Step 1 and Step 6 in the execution_table where no error occurs.
Concept Snapshot
Error boundaries catch errors in child components during rendering.
They prevent the whole app from crashing.
Use state to track if an error occurred.
Render fallback UI when error happens.
Reset state to retry rendering children.
Full Transcript
This visual execution shows how React error boundaries work. First, the parent component renders a child. If the child throws an error during rendering, the error boundary catches it and sets a state variable hasError to true. This causes the error boundary to render fallback UI instead of the broken child. When the user triggers a retry, the error boundary resets hasError to false and tries rendering the child again. If no error occurs, the child renders normally. Error boundaries only catch errors during rendering, lifecycle methods, and constructors of child components, not in event handlers. This prevents the entire app from crashing and improves user experience.

Practice

(1/5)
1. What is the main purpose of an error boundary in React?
easy
A. To handle user input validation in forms
B. To manage state updates in functional components
C. To catch JavaScript errors in child components and display a fallback UI
D. To optimize rendering performance by memoizing components

Solution

  1. Step 1: Understand error boundaries role

    Error boundaries catch errors in the rendering phase of child components to prevent the whole app from crashing.
  2. Step 2: Identify the correct purpose

    They show a fallback UI instead of letting the error crash the app, improving user experience.
  3. Final Answer:

    To catch JavaScript errors in child components and display a fallback UI -> Option C
  4. Quick Check:

    Error boundaries catch errors = D [OK]
Hint: Error boundaries catch errors and show fallback UI [OK]
Common Mistakes:
  • Thinking error boundaries manage state
  • Confusing error boundaries with performance tools
  • Assuming error boundaries handle form validation
2. Which of the following is the correct way to define an error boundary component in React?
easy
A. A class component implementing static getDerivedStateFromError and componentDidCatch methods
B. A functional component using useErrorBoundary hook
C. A class component with only render method
D. A functional component with useEffect to catch errors

Solution

  1. Step 1: Recall error boundary requirements

    Error boundaries must be class components that implement static getDerivedStateFromError and componentDidCatch lifecycle methods.
  2. Step 2: Match the correct syntax

    Only a class component implementing static getDerivedStateFromError and componentDidCatch methods correctly describes this pattern; hooks or functional components cannot be error boundaries.
  3. Final Answer:

    A class component implementing static getDerivedStateFromError and componentDidCatch methods -> Option A
  4. Quick Check:

    Error boundaries require class + lifecycle methods = B [OK]
Hint: Error boundaries must be class components with special lifecycle methods [OK]
Common Mistakes:
  • Trying to use hooks for error boundaries
  • Omitting getDerivedStateFromError method
  • Using only render method without error handling
3. Given this error boundary component, what will be rendered if BuggyComponent throws an error?
class ErrorBoundary extends React.Component {
  constructor(props) {
    super(props);
    this.state = { hasError: false };
  }
  static getDerivedStateFromError(error) {
    return { hasError: true };
  }
  componentDidCatch(error, info) {
    console.log('Error caught:', error);
  }
  render() {
    if (this.state.hasError) {
      return <h1>Something went wrong.</h1>;
    }
    return this.props.children;
  }
}

// Usage
<ErrorBoundary>
  <BuggyComponent />
</ErrorBoundary>
medium
A. Nothing will render because of a syntax error
B. The original BuggyComponent UI will render normally
C. The app will crash with an uncaught error
D. An error message Something went wrong. will display

Solution

  1. Step 1: Understand error boundary behavior on error

    When BuggyComponent throws an error, getDerivedStateFromError sets hasError to true.
  2. Step 2: Check render output when error state is true

    The render method returns <h1>Something went wrong.</h1> instead of the child component UI.
  3. Final Answer:

    An error message Something went wrong. will display -> Option D
  4. Quick Check:

    Error caught shows fallback UI = A [OK]
Hint: Error sets state, triggers fallback UI render [OK]
Common Mistakes:
  • Expecting child UI to render despite error
  • Thinking app crashes without error boundary
  • Confusing syntax error with runtime error
4. Identify the error in this error boundary implementation:
class MyErrorBoundary extends React.Component {
  constructor(props) {
    super(props);
    this.state = { error: null };
  }
  componentDidCatch(error, info) {
    this.setState({ error });
  }
  render() {
    if (this.state.error) {
      return <h2>Error occurred</h2>;
    }
    return this.props.children;
  }
}
medium
A. Missing static getDerivedStateFromError method to update state on error
B. Using setState inside componentDidCatch is not allowed
C. The constructor should not initialize state
D. render method must not return JSX

Solution

  1. Step 1: Check error boundary lifecycle requirements

    Error boundaries must implement static getDerivedStateFromError to update state when an error happens.
  2. Step 2: Analyze current code

    This code updates state inside componentDidCatch, which is not recommended for triggering fallback UI.
  3. Final Answer:

    Missing static getDerivedStateFromError method to update state on error -> Option A
  4. Quick Check:

    getDerivedStateFromError required for state update = A [OK]
Hint: Use getDerivedStateFromError to update state on error [OK]
Common Mistakes:
  • Updating state only in componentDidCatch
  • Ignoring getDerivedStateFromError method
  • Thinking setState is forbidden in componentDidCatch
5. You want to use an error boundary to catch errors in multiple components but show different fallback UIs for each. How should you implement this?
hard
A. Use functional components with hooks to catch errors and render fallback UI
B. Create separate error boundary components each with its own fallback UI and wrap each target component accordingly
C. Use one error boundary with a single fallback UI and pass props to customize it dynamically
D. Wrap all components in one error boundary and conditionally render fallback UI inside children

Solution

  1. Step 1: Understand error boundary scope

    Error boundaries catch errors in their child component tree and show fallback UI defined inside them.
  2. Step 2: Different fallback UIs require separate boundaries

    To show different fallback UIs, create multiple error boundary components each wrapping the target component.
  3. Step 3: Evaluate other options

    Using one boundary with dynamic props or hooks is not supported; functional components cannot be error boundaries.
  4. Final Answer:

    Create separate error boundary components each with its own fallback UI and wrap each target component accordingly -> Option B
  5. Quick Check:

    Different fallback UIs need separate boundaries = C [OK]
Hint: Use multiple error boundaries for different fallback UIs [OK]
Common Mistakes:
  • Trying to use one boundary for all with dynamic UI
  • Using hooks or functional components as error boundaries
  • Wrapping all components in one boundary expecting different UI
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard