Course contentsShow
← React Native
Lesson 223 of 1,5553. Core Primitive ComponentsFree lesson

Implementing Global Error Boundaries

Learners will catch runtime errors in the component tree and show fallback UI states.

Implementing Global Error Boundaries

In this lesson, you will learn how to prevent your entire app from crashing when a component encounters an unexpected runtime error by implementing a "Global Error Boundary."

Why do we need this?

In React Native, if a piece of code inside a component fails (like trying to read a property of undefined), the entire app often crashes or displays a "Red Screen of Death" during development. In production, this leads to a poor user experience. An Error Boundary acts like a safety net: it catches errors occurring in the component tree below it and allows you to render a clean, friendly fallback UI instead of letting the app collapse.

How it works

Think of an Error Boundary as a protective wrapper. If a child component throws an error during rendering, the boundary catches it and swaps the broken view for a "Something went wrong" screen.

In React, Error Boundaries are class components that use a specific method called static getDerivedStateFromError. Here is a basic implementation:

import React from 'react';
import { View, Text, Button } from 'react-native';

class GlobalErrorBoundary extends React.Component {
  state = { hasError: false };

  static getDerivedStateFromError(error) {
    // Update state so the next render shows the fallback UI
    return { hasError: true };
  }

  render() {
    if (this.state.hasError) {
      // You can render any custom fallback UI
      return (
        <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
          <Text>Oops! Something went wrong.</Text>
          <Button title="Try Again" onPress={() => this.setState({ hasError: false })} />
        </View>
      );
    }

    return this.props.children;
  }
}

To use it, simply wrap your main application components (or specific sections of your navigation) with this component:

<GlobalErrorBoundary>
  <YourMainAppNavigation />
</GlobalErrorBoundary>

By placing this at the top level of your component hierarchy, you ensure that no matter where an error occurs, the user is greeted with a helpful recovery screen rather than a frozen app.

Key Takeaway: Error Boundaries catch runtime errors in your component tree, allowing you to gracefully display a fallback UI instead of crashing the entire application.