Skip to content

A modern React Native library for global error handling (JavaScript + native) with TurboModules support and cross-platform compatibility.

License

darshan09200/react-native-global-exception-handler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

65 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

react-native-global-exception-handler

npm version npm downloads License: MIT PRs Welcome Documentation

A modern React Native library for global error handling (JavaScript + native) with TurboModules support and cross-platform compatibility.

🎬 See live demos of iOS and Android crash handling in action!

Key Features

  • πŸ”₯ Modern Architecture: Built with TurboModules for React Native 0.68+
  • πŸ“± Cross-Platform: Full iOS and Android support
  • 🎯 Dual Exception Handling: Catches both JS and native exceptions
  • πŸ”§ Highly Customizable: Configurable options for different platforms
  • πŸš€ Crash Simulation: Built-in crash testing for development
  • 🎨 Custom Error UI: Platform-specific error screens with restart functionality
  • ⚑ TypeScript Support: Full TypeScript definitions included

Why

In React Native apps, uncaught exceptions behave differently based on the environment:

  • In DEV mode: You get a helpful Red Screen error showing the stack trace
  • In production (bundled) mode: The app simply quits without any message 😱

This creates a poor user experience where users don't know:

  • What went wrong
  • Whether they should restart the app
  • If their data was saved

This library solves this by:

  1. Catching unhandled exceptions before the app crashes
  2. Allowing you to show a graceful error message to users
  3. Enabling error reporting to your development team
  4. Providing restart capabilities for recovery

Documentation

πŸ“š View Full Documentation

Quick Links

Installation

npm install react-native-global-exception-handler
# or
yarn add react-native-global-exception-handler

Requires React Native 0.68+ (TurboModules & auto-linking)

Architecture Support

Works with both:

  • Legacy Architecture (Old Architecture)
  • New Architecture (TurboModules + Fabric)

No additional configuration needed; the correct bindings are auto-selected at build time.

Quick Start

JS Exception Handling

import { setJSExceptionHandler } from 'react-native-global-exception-handler';

// Basic setup
setJSExceptionHandler((error, isFatal) => {
  console.log('JS Exception:', error);
  
  if (isFatal) {
    // Handle fatal errors - maybe show restart dialog
  } else {
    // Handle non-fatal errors - maybe just log them
  }
});

// Advanced setup with dev mode control
setJSExceptionHandler(
  (error, isFatal) => {
    // Your error handler
  },
  true // allowedInDevMode: true = enable in dev (shows instead of RedBox)
);

Native Exception Handling

import { setNativeExceptionHandler } from 'react-native-global-exception-handler';

// Basic setup with default options
setNativeExceptionHandler((errorString) => {
  console.log('Native Exception:', errorString);
  // Send to crash reporting service
});

// Advanced setup with platform-specific options
setNativeExceptionHandler(
  (errorString) => {
    console.log('Native Exception:', errorString);
  },
  {
    forceAppToQuit: true,              // Android: Force app to quit after error (default: true)
    callPreviouslyDefinedHandler: false // Call previous exception handler (default: false)
  }
);

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

Credits & Attribution

This project is inspired by the original work in react-native-exception-handler created by its original authors and community of contributors. Many foundational ideas (global JS/native handler approach, restart patterns, native popup customization) originated there.

License

MIT


Made with ❀️ for the React Native community

About

A modern React Native library for global error handling (JavaScript + native) with TurboModules support and cross-platform compatibility.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors 2

  •  
  •