From d72070b62e1b775124998441480c6b9c039fb505 Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Wed, 14 Oct 2026 02:42:06 -0700 Subject: [PATCH] Cover `react/nativemodule/viewtransition` with Stable API guards (#59058) Summary: Marks `react/nativemodule/viewtransition` as a private target under the C++ Stable API: `NativeViewTransition.h` includes ``, and BUCK, CMake, and the podspec depend on `cxxstableapi`. The guard is inert unless `RN_STRICT_API` is defined, so there is no behavior change. Changelog: [Internal] ___ landed-with-radar-review Differential Revision: D125183881 --- .../react/nativemodule/viewtransition/CMakeLists.txt | 1 + .../nativemodule/viewtransition/NativeViewTransition.h | 2 ++ .../React-viewtransitionnativemodule.podspec | 1 + scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api | 8 -------- .../cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api | 8 -------- scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api | 8 -------- scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api | 8 -------- scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api | 8 -------- scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api | 8 -------- scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api | 8 -------- scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api | 8 -------- scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api | 8 -------- .../cxx-api/api-snapshots/ReactCommonFrameworksCxx.api | 8 -------- scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api | 8 -------- scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api | 8 -------- 15 files changed, 4 insertions(+), 96 deletions(-) diff --git a/packages/react-native/ReactCommon/react/nativemodule/viewtransition/CMakeLists.txt b/packages/react-native/ReactCommon/react/nativemodule/viewtransition/CMakeLists.txt index d71facd0e5f6..c0edaba9c1dd 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/viewtransition/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/nativemodule/viewtransition/CMakeLists.txt @@ -16,6 +16,7 @@ target_include_directories(react_nativemodule_viewtransition PUBLIC ${REACT_COMM target_link_libraries(react_nativemodule_viewtransition react_codegen_rncore react_cxxreact + react_cxxstableapi react_renderer_bridging react_renderer_core react_renderer_uimanager diff --git a/packages/react-native/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.h b/packages/react-native/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.h index 55593f7c2f60..a1dea66d4a07 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.h +++ b/packages/react-native/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec b/packages/react-native/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec index 0db805c4e317..cd21751bd0c0 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec +++ b/packages/react-native/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec @@ -53,6 +53,7 @@ Pod::Spec.new do |s| s.dependency "ReactCommon/turbomodule/core" add_dependency(s, "React-Fabric") s.dependency "React-Fabric/bridging" + s.dependency "React-cxxstableapi" add_dependency(s, "React-runtimeexecutor", :additional_framework_paths => ["platform/ios"]) add_dependency(s, "React-RCTFBReactNativeSpec") diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api index 241db0ffda91..81314826dc2d 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api @@ -2077,14 +2077,6 @@ class facebook::react::NativeVibrationSpecJSI : public facebook::react::JavaTurb public NativeVibrationSpecJSI(const facebook::react::JavaTurboModule::InitParams& params); } -class facebook::react::NativeViewTransition : public facebook::react::NativeViewTransitionCxxSpec { - public NativeViewTransition(std::shared_ptr jsInvoker); - public facebook::jsi::Value findPseudoElementShadowNodeByTag(facebook::jsi::Runtime& rt, double reactTag); - public std::optional getViewTransitionInstance(facebook::jsi::Runtime& rt, const std::string& name, const std::string& pseudo); - public void transitionAnimationFinished(facebook::jsi::Runtime& rt, double animationId); - public void waitForTransitionAnimation(facebook::jsi::Runtime& rt, double animationId); -} - class facebook::react::NativeWebSocketModuleSpecJSI : public facebook::react::JavaTurboModule { public NativeWebSocketModuleSpecJSI(const facebook::react::JavaTurboModule::InitParams& params); } diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api index 011a67c223d2..8471fa8ff2aa 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api @@ -3126,14 +3126,6 @@ class facebook::react::NativeVibrationSpecJSI : public facebook::react::JavaTurb public NativeVibrationSpecJSI(const facebook::react::JavaTurboModule::InitParams& params); } -class facebook::react::NativeViewTransition : public facebook::react::NativeViewTransitionCxxSpec { - public NativeViewTransition(std::shared_ptr jsInvoker); - public facebook::jsi::Value findPseudoElementShadowNodeByTag(facebook::jsi::Runtime& rt, double reactTag); - public std::optional getViewTransitionInstance(facebook::jsi::Runtime& rt, const std::string& name, const std::string& pseudo); - public void transitionAnimationFinished(facebook::jsi::Runtime& rt, double animationId); - public void waitForTransitionAnimation(facebook::jsi::Runtime& rt, double animationId); -} - class facebook::react::NativeWebSocketModuleSpecJSI : public facebook::react::JavaTurboModule { public NativeWebSocketModuleSpecJSI(const facebook::react::JavaTurboModule::InitParams& params); } diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api index 7bae72ea9b37..513ce4b079f2 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api @@ -2076,14 +2076,6 @@ class facebook::react::NativeVibrationSpecJSI : public facebook::react::JavaTurb public NativeVibrationSpecJSI(const facebook::react::JavaTurboModule::InitParams& params); } -class facebook::react::NativeViewTransition : public facebook::react::NativeViewTransitionCxxSpec { - public NativeViewTransition(std::shared_ptr jsInvoker); - public facebook::jsi::Value findPseudoElementShadowNodeByTag(facebook::jsi::Runtime& rt, double reactTag); - public std::optional getViewTransitionInstance(facebook::jsi::Runtime& rt, const std::string& name, const std::string& pseudo); - public void transitionAnimationFinished(facebook::jsi::Runtime& rt, double animationId); - public void waitForTransitionAnimation(facebook::jsi::Runtime& rt, double animationId); -} - class facebook::react::NativeWebSocketModuleSpecJSI : public facebook::react::JavaTurboModule { public NativeWebSocketModuleSpecJSI(const facebook::react::JavaTurboModule::InitParams& params); } diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api index 7bae72ea9b37..513ce4b079f2 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api @@ -2076,14 +2076,6 @@ class facebook::react::NativeVibrationSpecJSI : public facebook::react::JavaTurb public NativeVibrationSpecJSI(const facebook::react::JavaTurboModule::InitParams& params); } -class facebook::react::NativeViewTransition : public facebook::react::NativeViewTransitionCxxSpec { - public NativeViewTransition(std::shared_ptr jsInvoker); - public facebook::jsi::Value findPseudoElementShadowNodeByTag(facebook::jsi::Runtime& rt, double reactTag); - public std::optional getViewTransitionInstance(facebook::jsi::Runtime& rt, const std::string& name, const std::string& pseudo); - public void transitionAnimationFinished(facebook::jsi::Runtime& rt, double animationId); - public void waitForTransitionAnimation(facebook::jsi::Runtime& rt, double animationId); -} - class facebook::react::NativeWebSocketModuleSpecJSI : public facebook::react::JavaTurboModule { public NativeWebSocketModuleSpecJSI(const facebook::react::JavaTurboModule::InitParams& params); } diff --git a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api index 75f6b681b9d3..86b44f13ab4b 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api @@ -4330,14 +4330,6 @@ class facebook::react::NativeVibrationSpecJSI : public facebook::react::ObjCTurb public NativeVibrationSpecJSI(const facebook::react::ObjCTurboModule::InitParams& params); } -class facebook::react::NativeViewTransition : public facebook::react::NativeViewTransitionCxxSpec { - public NativeViewTransition(std::shared_ptr jsInvoker); - public facebook::jsi::Value findPseudoElementShadowNodeByTag(facebook::jsi::Runtime& rt, double reactTag); - public std::optional getViewTransitionInstance(facebook::jsi::Runtime& rt, const std::string& name, const std::string& pseudo); - public void transitionAnimationFinished(facebook::jsi::Runtime& rt, double animationId); - public void waitForTransitionAnimation(facebook::jsi::Runtime& rt, double animationId); -} - class facebook::react::NativeWebSocketModuleSpecJSI : public facebook::react::ObjCTurboModule { public NativeWebSocketModuleSpecJSI(const facebook::react::ObjCTurboModule::InitParams& params); } diff --git a/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api index d4bb31bd721b..fd483036255f 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api @@ -5308,14 +5308,6 @@ class facebook::react::NativeVibrationSpecJSI : public facebook::react::ObjCTurb public NativeVibrationSpecJSI(const facebook::react::ObjCTurboModule::InitParams& params); } -class facebook::react::NativeViewTransition : public facebook::react::NativeViewTransitionCxxSpec { - public NativeViewTransition(std::shared_ptr jsInvoker); - public facebook::jsi::Value findPseudoElementShadowNodeByTag(facebook::jsi::Runtime& rt, double reactTag); - public std::optional getViewTransitionInstance(facebook::jsi::Runtime& rt, const std::string& name, const std::string& pseudo); - public void transitionAnimationFinished(facebook::jsi::Runtime& rt, double animationId); - public void waitForTransitionAnimation(facebook::jsi::Runtime& rt, double animationId); -} - class facebook::react::NativeWebSocketModuleSpecJSI : public facebook::react::ObjCTurboModule { public NativeWebSocketModuleSpecJSI(const facebook::react::ObjCTurboModule::InitParams& params); } diff --git a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api index 540845dc7eb9..99c55f6a83b5 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api @@ -4321,14 +4321,6 @@ class facebook::react::NativeVibrationSpecJSI : public facebook::react::ObjCTurb public NativeVibrationSpecJSI(const facebook::react::ObjCTurboModule::InitParams& params); } -class facebook::react::NativeViewTransition : public facebook::react::NativeViewTransitionCxxSpec { - public NativeViewTransition(std::shared_ptr jsInvoker); - public facebook::jsi::Value findPseudoElementShadowNodeByTag(facebook::jsi::Runtime& rt, double reactTag); - public std::optional getViewTransitionInstance(facebook::jsi::Runtime& rt, const std::string& name, const std::string& pseudo); - public void transitionAnimationFinished(facebook::jsi::Runtime& rt, double animationId); - public void waitForTransitionAnimation(facebook::jsi::Runtime& rt, double animationId); -} - class facebook::react::NativeWebSocketModuleSpecJSI : public facebook::react::ObjCTurboModule { public NativeWebSocketModuleSpecJSI(const facebook::react::ObjCTurboModule::InitParams& params); } diff --git a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api index 23d1a62bc2d9..e8f373665f30 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api @@ -4329,14 +4329,6 @@ class facebook::react::NativeVibrationSpecJSI : public facebook::react::ObjCTurb public NativeVibrationSpecJSI(const facebook::react::ObjCTurboModule::InitParams& params); } -class facebook::react::NativeViewTransition : public facebook::react::NativeViewTransitionCxxSpec { - public NativeViewTransition(std::shared_ptr jsInvoker); - public facebook::jsi::Value findPseudoElementShadowNodeByTag(facebook::jsi::Runtime& rt, double reactTag); - public std::optional getViewTransitionInstance(facebook::jsi::Runtime& rt, const std::string& name, const std::string& pseudo); - public void transitionAnimationFinished(facebook::jsi::Runtime& rt, double animationId); - public void waitForTransitionAnimation(facebook::jsi::Runtime& rt, double animationId); -} - class facebook::react::NativeWebSocketModuleSpecJSI : public facebook::react::ObjCTurboModule { public NativeWebSocketModuleSpecJSI(const facebook::react::ObjCTurboModule::InitParams& params); } diff --git a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api index 0ef5fda7c553..597be3d7f6c4 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api @@ -943,14 +943,6 @@ class facebook::react::NativeMethodCallInvoker { public virtual ~NativeMethodCallInvoker() = default; } -class facebook::react::NativeViewTransition : public NativeViewTransitionCxxSpec { - public NativeViewTransition(std::shared_ptr jsInvoker); - public facebook::jsi::Value findPseudoElementShadowNodeByTag(facebook::jsi::Runtime& rt, double reactTag); - public std::optional getViewTransitionInstance(facebook::jsi::Runtime& rt, const std::string& name, const std::string& pseudo); - public void transitionAnimationFinished(facebook::jsi::Runtime& rt, double animationId); - public void waitForTransitionAnimation(facebook::jsi::Runtime& rt, double animationId); -} - class facebook::react::Props : public virtual facebook::react::Sealable, public virtual facebook::react::DebugStringConvertible { public Props() = default; public Props(const facebook::react::Props& other) = default; diff --git a/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api index b3011c1fec07..dc1d4adcdc75 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api @@ -1799,14 +1799,6 @@ class facebook::react::NativeModulePerfLogger { public virtual ~NativeModulePerfLogger() = default; } -class facebook::react::NativeViewTransition : public NativeViewTransitionCxxSpec { - public NativeViewTransition(std::shared_ptr jsInvoker); - public facebook::jsi::Value findPseudoElementShadowNodeByTag(facebook::jsi::Runtime& rt, double reactTag); - public std::optional getViewTransitionInstance(facebook::jsi::Runtime& rt, const std::string& name, const std::string& pseudo); - public void transitionAnimationFinished(facebook::jsi::Runtime& rt, double animationId); - public void waitForTransitionAnimation(facebook::jsi::Runtime& rt, double animationId); -} - class facebook::react::ParagraphAttributes : public facebook::react::DebugStringConvertible { public Float minimumFontScale; public Float minimumFontSize; diff --git a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api index a3cbf8e8077f..cdfa953716e5 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api @@ -942,14 +942,6 @@ class facebook::react::NativeMethodCallInvoker { public virtual ~NativeMethodCallInvoker() = default; } -class facebook::react::NativeViewTransition : public NativeViewTransitionCxxSpec { - public NativeViewTransition(std::shared_ptr jsInvoker); - public facebook::jsi::Value findPseudoElementShadowNodeByTag(facebook::jsi::Runtime& rt, double reactTag); - public std::optional getViewTransitionInstance(facebook::jsi::Runtime& rt, const std::string& name, const std::string& pseudo); - public void transitionAnimationFinished(facebook::jsi::Runtime& rt, double animationId); - public void waitForTransitionAnimation(facebook::jsi::Runtime& rt, double animationId); -} - class facebook::react::Props : public virtual facebook::react::Sealable, public virtual facebook::react::DebugStringConvertible { public Props() = default; public Props(const facebook::react::Props& other) = default; diff --git a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api index a3cbf8e8077f..cdfa953716e5 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api @@ -942,14 +942,6 @@ class facebook::react::NativeMethodCallInvoker { public virtual ~NativeMethodCallInvoker() = default; } -class facebook::react::NativeViewTransition : public NativeViewTransitionCxxSpec { - public NativeViewTransition(std::shared_ptr jsInvoker); - public facebook::jsi::Value findPseudoElementShadowNodeByTag(facebook::jsi::Runtime& rt, double reactTag); - public std::optional getViewTransitionInstance(facebook::jsi::Runtime& rt, const std::string& name, const std::string& pseudo); - public void transitionAnimationFinished(facebook::jsi::Runtime& rt, double animationId); - public void waitForTransitionAnimation(facebook::jsi::Runtime& rt, double animationId); -} - class facebook::react::Props : public virtual facebook::react::Sealable, public virtual facebook::react::DebugStringConvertible { public Props() = default; public Props(const facebook::react::Props& other) = default;