From afa4b1d5b383e195e736f5db5c6cac1ce2196e4e Mon Sep 17 00:00:00 2001 From: Kamil Paradowski Date: Mon, 13 Jul 2026 14:09:51 +0200 Subject: [PATCH 1/2] feat: add new hook shadowTreeDidCommit --- .../react/renderer/mounting/ShadowTree.cpp | 3 +++ .../react/renderer/mounting/ShadowTreeDelegate.h | 11 +++++++++++ .../react/renderer/uimanager/UIManager.cpp | 15 +++++++++++++++ .../react/renderer/uimanager/UIManager.h | 6 ++++++ .../renderer/uimanager/UIManagerCommitHook.h | 11 +++++++++++ 5 files changed, 46 insertions(+) diff --git a/packages/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp b/packages/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp index bdd301f5c3d5..d4f0722b44a7 100644 --- a/packages/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp +++ b/packages/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp @@ -463,6 +463,9 @@ CommitStatus ShadowTree::tryCommit( } } + delegate_.shadowTreeDidCommit( + *this, newRevision.rootShadowNode, affectedLayoutableNodes); + emitLayoutEvents(affectedLayoutableNodes); if (isReactBranch) { diff --git a/packages/react-native/ReactCommon/react/renderer/mounting/ShadowTreeDelegate.h b/packages/react-native/ReactCommon/react/renderer/mounting/ShadowTreeDelegate.h index 3dde9c5837c8..9bf7cb246b5f 100644 --- a/packages/react-native/ReactCommon/react/renderer/mounting/ShadowTreeDelegate.h +++ b/packages/react-native/ReactCommon/react/renderer/mounting/ShadowTreeDelegate.h @@ -11,6 +11,7 @@ namespace facebook::react { +class LayoutableShadowNode; class ShadowTree; struct ShadowTreeCommitOptions; @@ -49,6 +50,16 @@ class ShadowTreeDelegate { */ virtual void shadowTreeDidPromoteReactRevision(const ShadowTree &shadowTree) const = 0; + /* + * Called right after a Shadow Tree commits a new tree, reporting the nodes + * whose layout changed in this commit. + */ + virtual void shadowTreeDidCommit( + const ShadowTree& shadowTree, + const RootShadowNode::Shared& rootShadowNode, + const std::vector& affectedLayoutableNodes) + const noexcept {} + virtual ~ShadowTreeDelegate() noexcept = default; }; diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp index c89e439b9e3b..0c35031aa5db 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp @@ -670,6 +670,21 @@ void UIManager::shadowTreeDidPromoteReactRevision( } } +void UIManager::shadowTreeDidCommit( + const ShadowTree& shadowTree, + const RootShadowNode::Shared& rootShadowNode, + const std::vector& affectedLayoutableNodes) + const noexcept { + TraceSection s("UIManager::shadowTreeDidCommit"); + + std::shared_lock lock(commitHookMutex_); + + for (auto* commitHook : commitHooks_) { + commitHook->shadowTreeDidCommit( + shadowTree, rootShadowNode, affectedLayoutableNodes); + } +} + void UIManager::reportMount(SurfaceId surfaceId) const { TraceSection s("UIManager::reportMount"); diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h index 657d66e2128f..db5af6e67cdb 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h @@ -146,6 +146,12 @@ class UIManager final : public ShadowTreeDelegate { void shadowTreeDidPromoteReactRevision(const ShadowTree &shadowTree) const override; + void shadowTreeDidCommit( + const ShadowTree& shadowTree, + const RootShadowNode::Shared& rootShadowNode, + const std::vector& affectedLayoutableNodes) + const noexcept override; + std::shared_ptr createNode( Tag tag, const std::string &componentName, diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerCommitHook.h b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerCommitHook.h index 8c34b59ac03f..60f695c2dc7e 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerCommitHook.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerCommitHook.h @@ -11,6 +11,7 @@ namespace facebook::react { +class LayoutableShadowNode; class ShadowTree; struct ShadowTreeCommitOptions; class UIManager; @@ -54,6 +55,16 @@ class UIManagerCommitHook { return newRootShadowNode; } + /* + * Called right after a `ShadowTree` commits a new tree. + * The semantic of the method corresponds to a method of the same name + * from `ShadowTreeDelegate`. + */ + virtual void shadowTreeDidCommit( + const ShadowTree& /*shadowTree*/, + const RootShadowNode::Shared& /*rootShadowNode*/, + const std::vector& /*affectedLayoutableNodes*/) noexcept {} + virtual ~UIManagerCommitHook() noexcept = default; }; From 8c794eb72f1b02fc3be5f458a4e0863f9b2b4e2a Mon Sep 17 00:00:00 2001 From: Kamil Paradowski Date: Tue, 28 Jul 2026 17:49:28 +0200 Subject: [PATCH 2/2] feat: shadowTreeDidCommit cxx api --- scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api | 3 +++ scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api | 3 +++ scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api | 3 +++ scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api | 3 +++ scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api | 3 +++ scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api | 3 +++ scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api | 3 +++ scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api | 3 +++ scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api | 3 +++ 9 files changed, 27 insertions(+) diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api index 9686cd7e5d1b..33d3872d8d8f 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api @@ -4751,6 +4751,7 @@ class facebook::react::ShadowTree { class facebook::react::ShadowTreeDelegate { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTreeCommitOptions& commitOptions) const = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const = 0; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const = 0; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const = 0; @@ -5260,6 +5261,7 @@ class facebook::react::UIManager : public facebook::react::ShadowTreeDelegate { public std::shared_ptr cloneNode(const facebook::react::ShadowNode& shadowNode, const std::shared_ptr>>& children, facebook::react::RawProps rawProps) const; public std::shared_ptr createNode(facebook::react::Tag tag, const std::string& componentName, facebook::react::SurfaceId surfaceId, facebook::react::RawProps props, facebook::react::InstanceHandle::Shared instanceHandle) const; public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTree::CommitOptions& commitOptions) const override; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept override; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const override; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const override; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const override; @@ -5331,6 +5333,7 @@ class facebook::react::UIManagerCommitHook { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const facebook::react::RootShadowNode::Unshared& newRootShadowNode) noexcept; public virtual void commitHookWasRegistered(const facebook::react::UIManager& uiManager) noexcept = 0; public virtual void commitHookWasUnregistered(const facebook::react::UIManager& uiManager) noexcept = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const std::vector&) noexcept; public virtual ~UIManagerCommitHook() noexcept = default; } diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api index 9e4a3fa333a9..d272c2116036 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api @@ -4562,6 +4562,7 @@ class facebook::react::ShadowTree { class facebook::react::ShadowTreeDelegate { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTreeCommitOptions& commitOptions) const = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const = 0; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const = 0; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const = 0; @@ -5071,6 +5072,7 @@ class facebook::react::UIManager : public facebook::react::ShadowTreeDelegate { public std::shared_ptr cloneNode(const facebook::react::ShadowNode& shadowNode, const std::shared_ptr>>& children, facebook::react::RawProps rawProps) const; public std::shared_ptr createNode(facebook::react::Tag tag, const std::string& componentName, facebook::react::SurfaceId surfaceId, facebook::react::RawProps props, facebook::react::InstanceHandle::Shared instanceHandle) const; public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTree::CommitOptions& commitOptions) const override; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept override; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const override; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const override; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const override; @@ -5142,6 +5144,7 @@ class facebook::react::UIManagerCommitHook { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const facebook::react::RootShadowNode::Unshared& newRootShadowNode) noexcept; public virtual void commitHookWasRegistered(const facebook::react::UIManager& uiManager) noexcept = 0; public virtual void commitHookWasUnregistered(const facebook::react::UIManager& uiManager) noexcept = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const std::vector&) noexcept; public virtual ~UIManagerCommitHook() noexcept = default; } diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api index 46adc5077283..60b1449e2c48 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api @@ -4742,6 +4742,7 @@ class facebook::react::ShadowTree { class facebook::react::ShadowTreeDelegate { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTreeCommitOptions& commitOptions) const = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const = 0; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const = 0; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const = 0; @@ -5251,6 +5252,7 @@ class facebook::react::UIManager : public facebook::react::ShadowTreeDelegate { public std::shared_ptr cloneNode(const facebook::react::ShadowNode& shadowNode, const std::shared_ptr>>& children, facebook::react::RawProps rawProps) const; public std::shared_ptr createNode(facebook::react::Tag tag, const std::string& componentName, facebook::react::SurfaceId surfaceId, facebook::react::RawProps props, facebook::react::InstanceHandle::Shared instanceHandle) const; public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTree::CommitOptions& commitOptions) const override; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept override; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const override; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const override; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const override; @@ -5322,6 +5324,7 @@ class facebook::react::UIManagerCommitHook { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const facebook::react::RootShadowNode::Unshared& newRootShadowNode) noexcept; public virtual void commitHookWasRegistered(const facebook::react::UIManager& uiManager) noexcept = 0; public virtual void commitHookWasUnregistered(const facebook::react::UIManager& uiManager) noexcept = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const std::vector&) noexcept; public virtual ~UIManagerCommitHook() noexcept = default; } diff --git a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api index 6e4ab04a9d24..d2e0e86c2bef 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api @@ -6966,6 +6966,7 @@ class facebook::react::ShadowTree { class facebook::react::ShadowTreeDelegate { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTreeCommitOptions& commitOptions) const = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const = 0; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const = 0; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const = 0; @@ -7453,6 +7454,7 @@ class facebook::react::UIManager : public facebook::react::ShadowTreeDelegate { public std::shared_ptr cloneNode(const facebook::react::ShadowNode& shadowNode, const std::shared_ptr>>& children, facebook::react::RawProps rawProps) const; public std::shared_ptr createNode(facebook::react::Tag tag, const std::string& componentName, facebook::react::SurfaceId surfaceId, facebook::react::RawProps props, facebook::react::InstanceHandle::Shared instanceHandle) const; public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTree::CommitOptions& commitOptions) const override; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept override; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const override; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const override; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const override; @@ -7524,6 +7526,7 @@ class facebook::react::UIManagerCommitHook { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const facebook::react::RootShadowNode::Unshared& newRootShadowNode) noexcept; public virtual void commitHookWasRegistered(const facebook::react::UIManager& uiManager) noexcept = 0; public virtual void commitHookWasUnregistered(const facebook::react::UIManager& uiManager) noexcept = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const std::vector&) noexcept; public virtual ~UIManagerCommitHook() noexcept = default; } diff --git a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api index 02957e06c0f6..552617059548 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api @@ -6805,6 +6805,7 @@ class facebook::react::ShadowTree { class facebook::react::ShadowTreeDelegate { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTreeCommitOptions& commitOptions) const = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const = 0; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const = 0; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const = 0; @@ -7292,6 +7293,7 @@ class facebook::react::UIManager : public facebook::react::ShadowTreeDelegate { public std::shared_ptr cloneNode(const facebook::react::ShadowNode& shadowNode, const std::shared_ptr>>& children, facebook::react::RawProps rawProps) const; public std::shared_ptr createNode(facebook::react::Tag tag, const std::string& componentName, facebook::react::SurfaceId surfaceId, facebook::react::RawProps props, facebook::react::InstanceHandle::Shared instanceHandle) const; public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTree::CommitOptions& commitOptions) const override; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept override; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const override; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const override; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const override; @@ -7363,6 +7365,7 @@ class facebook::react::UIManagerCommitHook { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const facebook::react::RootShadowNode::Unshared& newRootShadowNode) noexcept; public virtual void commitHookWasRegistered(const facebook::react::UIManager& uiManager) noexcept = 0; public virtual void commitHookWasUnregistered(const facebook::react::UIManager& uiManager) noexcept = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const std::vector&) noexcept; public virtual ~UIManagerCommitHook() noexcept = default; } diff --git a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api index 94953681427d..3b2e12e5c531 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api @@ -6957,6 +6957,7 @@ class facebook::react::ShadowTree { class facebook::react::ShadowTreeDelegate { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTreeCommitOptions& commitOptions) const = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const = 0; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const = 0; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const = 0; @@ -7444,6 +7445,7 @@ class facebook::react::UIManager : public facebook::react::ShadowTreeDelegate { public std::shared_ptr cloneNode(const facebook::react::ShadowNode& shadowNode, const std::shared_ptr>>& children, facebook::react::RawProps rawProps) const; public std::shared_ptr createNode(facebook::react::Tag tag, const std::string& componentName, facebook::react::SurfaceId surfaceId, facebook::react::RawProps props, facebook::react::InstanceHandle::Shared instanceHandle) const; public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTree::CommitOptions& commitOptions) const override; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept override; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const override; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const override; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const override; @@ -7515,6 +7517,7 @@ class facebook::react::UIManagerCommitHook { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const facebook::react::RootShadowNode::Unshared& newRootShadowNode) noexcept; public virtual void commitHookWasRegistered(const facebook::react::UIManager& uiManager) noexcept = 0; public virtual void commitHookWasUnregistered(const facebook::react::UIManager& uiManager) noexcept = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const std::vector&) noexcept; public virtual ~UIManagerCommitHook() noexcept = default; } diff --git a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api index 199e5d7791f4..72e6aa89141a 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api @@ -3311,6 +3311,7 @@ class facebook::react::ShadowTree { class facebook::react::ShadowTreeDelegate { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTreeCommitOptions& commitOptions) const = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const = 0; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const = 0; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const = 0; @@ -3719,6 +3720,7 @@ class facebook::react::UIManager : public facebook::react::ShadowTreeDelegate { public std::shared_ptr cloneNode(const facebook::react::ShadowNode& shadowNode, const std::shared_ptr>>& children, facebook::react::RawProps rawProps) const; public std::shared_ptr createNode(facebook::react::Tag tag, const std::string& componentName, facebook::react::SurfaceId surfaceId, facebook::react::RawProps props, facebook::react::InstanceHandle::Shared instanceHandle) const; public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTree::CommitOptions& commitOptions) const override; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept override; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const override; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const override; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const override; @@ -3790,6 +3792,7 @@ class facebook::react::UIManagerCommitHook { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const facebook::react::RootShadowNode::Unshared& newRootShadowNode) noexcept; public virtual void commitHookWasRegistered(const facebook::react::UIManager& uiManager) noexcept = 0; public virtual void commitHookWasUnregistered(const facebook::react::UIManager& uiManager) noexcept = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const std::vector&) noexcept; public virtual ~UIManagerCommitHook() noexcept = default; } diff --git a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api index 1c1f2201f6bc..0a9b2e99513a 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api @@ -3162,6 +3162,7 @@ class facebook::react::ShadowTree { class facebook::react::ShadowTreeDelegate { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTreeCommitOptions& commitOptions) const = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const = 0; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const = 0; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const = 0; @@ -3570,6 +3571,7 @@ class facebook::react::UIManager : public facebook::react::ShadowTreeDelegate { public std::shared_ptr cloneNode(const facebook::react::ShadowNode& shadowNode, const std::shared_ptr>>& children, facebook::react::RawProps rawProps) const; public std::shared_ptr createNode(facebook::react::Tag tag, const std::string& componentName, facebook::react::SurfaceId surfaceId, facebook::react::RawProps props, facebook::react::InstanceHandle::Shared instanceHandle) const; public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTree::CommitOptions& commitOptions) const override; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept override; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const override; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const override; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const override; @@ -3641,6 +3643,7 @@ class facebook::react::UIManagerCommitHook { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const facebook::react::RootShadowNode::Unshared& newRootShadowNode) noexcept; public virtual void commitHookWasRegistered(const facebook::react::UIManager& uiManager) noexcept = 0; public virtual void commitHookWasUnregistered(const facebook::react::UIManager& uiManager) noexcept = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const std::vector&) noexcept; public virtual ~UIManagerCommitHook() noexcept = default; } diff --git a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api index 573bb02ca90d..deb936d33f7f 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api @@ -3302,6 +3302,7 @@ class facebook::react::ShadowTree { class facebook::react::ShadowTreeDelegate { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTreeCommitOptions& commitOptions) const = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const = 0; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const = 0; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const = 0; @@ -3710,6 +3711,7 @@ class facebook::react::UIManager : public facebook::react::ShadowTreeDelegate { public std::shared_ptr cloneNode(const facebook::react::ShadowNode& shadowNode, const std::shared_ptr>>& children, facebook::react::RawProps rawProps) const; public std::shared_ptr createNode(facebook::react::Tag tag, const std::string& componentName, facebook::react::SurfaceId surfaceId, facebook::react::RawProps props, facebook::react::InstanceHandle::Shared instanceHandle) const; public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& oldRootShadowNode, const facebook::react::RootShadowNode::Unshared& newRootShadowNode, const facebook::react::ShadowTree::CommitOptions& commitOptions) const override; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) const noexcept override; public virtual void shadowTreeDidFinishReactCommit(const facebook::react::ShadowTree& shadowTree) const override; public virtual void shadowTreeDidFinishTransaction(std::shared_ptr mountingCoordinator, bool mountSynchronously) const override; public virtual void shadowTreeDidPromoteReactRevision(const facebook::react::ShadowTree& shadowTree) const override; @@ -3781,6 +3783,7 @@ class facebook::react::UIManagerCommitHook { public virtual facebook::react::RootShadowNode::Unshared shadowTreeWillCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const facebook::react::RootShadowNode::Unshared& newRootShadowNode) noexcept; public virtual void commitHookWasRegistered(const facebook::react::UIManager& uiManager) noexcept = 0; public virtual void commitHookWasUnregistered(const facebook::react::UIManager& uiManager) noexcept = 0; + public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree&, const facebook::react::RootShadowNode::Shared&, const std::vector&) noexcept; public virtual ~UIManagerCommitHook() noexcept = default; }