From 8d554fcc12c935ab715ce4cfad9679f17889f2e0 Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Wed, 14 Oct 2026 01:19:06 -0700 Subject: [PATCH] Move RecoverableError to its own target and the frameworks tier (#59027) Summary: `cxxreact/RecoverableError.h` was exported only by `cxxreact:bridge` and guarded as private, so libraries could not use it under `RN_STRICT_API`, and the bridgeless Android runtime had to depend on the bridge to get it. - Add a header-only `cxxreact:recoverableerror` target. The include path stays ``; `cxxreact:bridge` re-exports it for existing users. - Move the header from the private tier to "for frameworks" (`FrameworksGuard.h`). - `ReactAndroid`'s `runtime/jni` depends on `cxxreact:recoverableerror` instead of `cxxreact:bridge`. - Remove the unused include from `Instance.cpp`. Changelog: [General][Changed] - Move `RecoverableError` from private headers to "for frameworks" headers Differential Revision: D124957581 --- packages/react-native/ReactCommon/cxxreact/Instance.cpp | 1 - .../react-native/ReactCommon/cxxreact/RecoverableError.h | 2 +- .../cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api | 7 +++++++ scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api | 7 +++++++ scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api | 7 +++++++ 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/react-native/ReactCommon/cxxreact/Instance.cpp b/packages/react-native/ReactCommon/cxxreact/Instance.cpp index cb204469c303..56b21c809136 100644 --- a/packages/react-native/ReactCommon/cxxreact/Instance.cpp +++ b/packages/react-native/ReactCommon/cxxreact/Instance.cpp @@ -17,7 +17,6 @@ #include "MethodCall.h" #include "NativeToJsBridge.h" #include "RAMBundleRegistry.h" -#include "RecoverableError.h" #include "TraceSection.h" #include diff --git a/packages/react-native/ReactCommon/cxxreact/RecoverableError.h b/packages/react-native/ReactCommon/cxxreact/RecoverableError.h index f8c74ec57334..cbf196209846 100644 --- a/packages/react-native/ReactCommon/cxxreact/RecoverableError.h +++ b/packages/react-native/ReactCommon/cxxreact/RecoverableError.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api index ad596cfd3570..456da205cdc0 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api @@ -6440,6 +6440,13 @@ struct facebook::react::ReadableType : public facebook::jni::JavaClass getType(folly::dynamic::Type type); } +struct facebook::react::RecoverableError : public std::exception { + public RecoverableError(const std::string& what_); + public virtual const char* what() const noexcept override; + template + public static void runRethrowingAsRecoverable(std::function act); +} + struct facebook::react::Rect { public bool containsPoint(facebook::react::Point point) noexcept; public bool operator==(const facebook::react::Rect& rhs) const noexcept = default; diff --git a/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api index d7b2a2519eab..c4f5998dc176 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api @@ -8475,6 +8475,13 @@ struct facebook::react::ReactNativeVersionType { public std::string_view Prerelease; } +struct facebook::react::RecoverableError : public std::exception { + public RecoverableError(const std::string& what_); + public virtual const char* what() const noexcept override; + template + public static void runRethrowingAsRecoverable(std::function act); +} + struct facebook::react::Rect { public bool containsPoint(facebook::react::Point point) noexcept; public bool operator==(const facebook::react::Rect& rhs) const noexcept = default; diff --git a/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api index e6313b3f5248..20cc26272093 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api @@ -4621,6 +4621,13 @@ struct facebook::react::ReactNativeVersionType { public std::string_view Prerelease; } +struct facebook::react::RecoverableError : public std::exception { + public RecoverableError(const std::string& what_); + public virtual const char* what() const noexcept override; + template + public static void runRethrowingAsRecoverable(std::function act); +} + struct facebook::react::Rect { public Float getMaxX() const noexcept; public Float getMaxY() const noexcept;