Skip to content

Native crash autocapture double-reports fatal React Native JS errors (RCTFatalException) #653

@ioannisj

Description

@ioannisj

Problem

When the React Native SDK enables native crash autocapture (@posthog/react-native-plugin, errorTracking.autocapture.nativeCrashes, see PostHog/posthog-js#3677), a fatal JS error can be captured twice:

  1. The JS layer captures it via uncaughtExceptions autocapture (with the JS stack trace), and
  2. React Native rethrows fatal JS errors on the native side through RCTFatal(...), which raises an uncaught NSException named RCTFatalException. posthog-ios' crash reporter then captures that as a separate native crash (with a native stack trace).

The result is two $exception events for one logical error.

Suggested fix

posthog-ios should expose a way to ignore native exceptions that originate from React Native's fatal-JS path, and/or skip reporting uncaught NSExceptions whose name is RCTFatalException, so the JS-captured event is the single source of truth.

For reference, sentry-react-native does the equivalent on the native side:

// React native internally throws a JavascriptException. we want to ignore it on the native side to avoid sending it twice.

(addIgnoredExceptionForType(...) — they ignore the RN-internal exception type so it isn't sent twice.)

Notes

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions