From d2eca589962dc1d3a72710fb192a59fc0aab5abe Mon Sep 17 00:00:00 2001 From: Zeya Peng Date: Thu, 9 Oct 2025 19:01:20 -0700 Subject: [PATCH] use processor flag -DRN_USE_ANIMATION_BACKEND to gate animation backend dep (#54091) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/54091 ## Changelog: [Internal] [Changed] - use processor flag -DRN_USE_ANIMATION_BACKEND to gate animation backend dep So it's only enabled for catalyst and fantom when building with BUCK while gated from other meta apps, and enabled by default in oss version Reviewed By: sammy-SC Differential Revision: D84157729 fbshipit-source-id: e822f11c4b64b77b17a698bf3b60b5c5a4faf4f4 --- .../ReactCommon/react/renderer/animated/CMakeLists.txt | 1 + .../renderer/animated/NativeAnimatedNodesManager.cpp | 9 ++++++++- .../react/renderer/animated/NativeAnimatedNodesManager.h | 4 ++++ .../animated/NativeAnimatedNodesManagerProvider.cpp | 4 ++++ private/react-native-fantom/runner/executables/tester.js | 3 +++ private/react-native-fantom/runner/utils.js | 5 +++++ 6 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/react-native/ReactCommon/react/renderer/animated/CMakeLists.txt b/packages/react-native/ReactCommon/react/renderer/animated/CMakeLists.txt index cb226be7ac1..cceac9a5a40 100644 --- a/packages/react-native/ReactCommon/react/renderer/animated/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/renderer/animated/CMakeLists.txt @@ -32,3 +32,4 @@ target_link_libraries(react_renderer_animated ) target_compile_reactnative_options(react_renderer_animated PRIVATE) target_compile_options(react_renderer_animated PRIVATE -Wpedantic) +target_compile_definitions(react_renderer_animated PRIVATE RN_USE_ANIMATION_BACKEND) diff --git a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp index 0e797af126e..a71cf20763d 100644 --- a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +++ b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp @@ -33,9 +33,12 @@ #include #include #include -#include #include +#ifdef RN_USE_ANIMATION_BACKEND +#include +#endif + namespace facebook::react { // Global function pointer for getting current time. Current time @@ -515,11 +518,13 @@ NativeAnimatedNodesManager::ensureEventEmitterListener() noexcept { void NativeAnimatedNodesManager::startRenderCallbackIfNeeded() { if (ReactNativeFeatureFlags::useSharedAnimatedBackend()) { +#ifdef RN_USE_ANIMATION_BACKEND if (auto animationBackend = std::static_pointer_cast(animationBackend_)) { animationBackend->start( [this](float /*f*/) { return pullAnimationMutations(); }); } +#endif return; } @@ -887,6 +892,7 @@ void NativeAnimatedNodesManager::schedulePropsCommit( } } +#ifdef RN_USE_ANIMATION_BACKEND AnimationMutations NativeAnimatedNodesManager::pullAnimationMutations() { if (!ReactNativeFeatureFlags::useSharedAnimatedBackend()) { return {}; @@ -1005,6 +1011,7 @@ AnimationMutations NativeAnimatedNodesManager::pullAnimationMutations() { } return mutations; } +#endif void NativeAnimatedNodesManager::onRender() { if (ReactNativeFeatureFlags::useSharedAnimatedBackend()) { diff --git a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h index 4aead3b39ed..90b50923212 100644 --- a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +++ b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h @@ -17,7 +17,9 @@ #include #include #include +#ifdef RN_USE_ANIMATION_BACKEND #include +#endif #include #include #include @@ -114,7 +116,9 @@ class NativeAnimatedNodesManager { void setAnimatedNodeOffset(Tag tag, double offset); +#ifdef RN_USE_ANIMATION_BACKEND AnimationMutations pullAnimationMutations(); +#endif #pragma mark - Drivers diff --git a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp index 7b040da44b0..8f45b416490 100644 --- a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp +++ b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp @@ -11,7 +11,9 @@ #include #include #include +#ifdef RN_USE_ANIMATION_BACKEND #include +#endif #include namespace facebook::react { @@ -66,6 +68,7 @@ NativeAnimatedNodesManagerProvider::getOrCreate( }; if (ReactNativeFeatureFlags::useSharedAnimatedBackend()) { +#ifdef RN_USE_ANIMATION_BACKEND // TODO: this should be initialized outside of animated, but for now it // was convenient to do it here animationBackend_ = std::make_shared( @@ -74,6 +77,7 @@ NativeAnimatedNodesManagerProvider::getOrCreate( std::move(directManipulationCallback), std::move(fabricCommitCallback), uiManager); +#endif nativeAnimatedNodesManager_ = std::make_shared(animationBackend_); diff --git a/private/react-native-fantom/runner/executables/tester.js b/private/react-native-fantom/runner/executables/tester.js index bc26e39109f..2e173a41de9 100644 --- a/private/react-native-fantom/runner/executables/tester.js +++ b/private/react-native-fantom/runner/executables/tester.js @@ -15,6 +15,7 @@ import {NATIVE_BUILD_OUTPUT_PATH} from '../paths'; import { getBuckModesForPlatform, getBuckOptionsForHermes, + getConfigForAnimationBackend, getDebugInfoFromCommandResult, runBuck2, runBuck2Sync, @@ -54,6 +55,7 @@ export function build(options: TesterOptions): void { 'build', ...getBuckModesForPlatform(options.isOptimizedMode), ...getBuckOptionsForHermes(options.hermesVariant), + ...getConfigForAnimationBackend(), FANTOM_TESTER_BUCK_TARGET, '--out', tmpPath, @@ -94,6 +96,7 @@ export function run( 'run', ...getBuckModesForPlatform(options.isOptimizedMode), ...getBuckOptionsForHermes(options.hermesVariant), + ...getConfigForAnimationBackend(), FANTOM_TESTER_BUCK_TARGET, '--', ...args, diff --git a/private/react-native-fantom/runner/utils.js b/private/react-native-fantom/runner/utils.js index 25cdb319bcf..8271d77dc4e 100644 --- a/private/react-native-fantom/runner/utils.js +++ b/private/react-native-fantom/runner/utils.js @@ -104,6 +104,11 @@ export function getBuckModesForPlatform( return ['@//xplat/mode/react-native/granite', osPlatform]; } +// TODO: T240293839 Remove when we get rid of RN_USE_ANIMATION_BACKEND preprocessor flag +export function getConfigForAnimationBackend(): $ReadOnlyArray { + return ['-c rn.use_animationbackend=true']; +} + export type AsyncCommandResult = { originalCommand: string, childProcess: ReturnType,