diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.cpp index c9d828ac2fd6..4ac660d40bac 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/runtime/hermes/jni/JHermesInstance.cpp @@ -7,13 +7,31 @@ #include "JHermesInstance.h" +#include #include +#include + +#include namespace facebook::react { +static void hermesFatalHandler(const std::string& reason) { + __android_log_assert(nullptr, "Hermes", "%s", reason.c_str()); +} + +static constinit std::once_flag flag; + jni::local_ref JHermesInstance::initHybrid( jni::alias_ref /* unused */, bool allocInOldGenBeforeTTI) { + std::call_once(flag, []() { + auto* fatalHandlerInterface = + jsi::castInterface( + facebook::hermes::makeHermesRootAPI()); + if (fatalHandlerInterface) { + fatalHandlerInterface->setFatalHandler(hermesFatalHandler); + } + }); return makeCxxInstance(allocInOldGenBeforeTTI); }