diff --git a/Libraries/NativeAnimation/RCTNativeAnimatedModule.m b/Libraries/NativeAnimation/RCTNativeAnimatedModule.m index 0bbc9c78711..cbaa41509b8 100644 --- a/Libraries/NativeAnimation/RCTNativeAnimatedModule.m +++ b/Libraries/NativeAnimation/RCTNativeAnimatedModule.m @@ -87,10 +87,14 @@ RCT_EXPORT_METHOD(startAnimatingNode:(nonnull NSNumber *)animationId [self addOperationBlock:^(RCTNativeAnimatedNodesManager *nodesManager) { [nodesManager startAnimatingNode:animationId nodeTag:nodeTag config:config endCallback:callBack]; }]; - if ([_nodesManager isNodeManagedByFabric:nodeTag]) { - _animIdIsManagedByFabric[animationId] = @YES; - [self flushOperationQueues]; - } + __weak RCTNativeAnimatedModule *weakSelf = self; + RCTExecuteOnMainQueue(^{ + __strong RCTNativeAnimatedModule *strongSelf = weakSelf; + if (strongSelf && [strongSelf->_nodesManager isNodeManagedByFabric:nodeTag]) { + strongSelf->_animIdIsManagedByFabric[animationId] = @YES; + [strongSelf flushOperationQueues]; + } + }); } RCT_EXPORT_METHOD(stopAnimation:(nonnull NSNumber *)animationId) diff --git a/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m b/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m index 1a47f1b7abd..9920e8a6ed6 100644 --- a/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m +++ b/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.m @@ -53,7 +53,10 @@ - (BOOL)isNodeManagedByFabric:(nonnull NSNumber *)tag { RCTAnimatedNode *node = _animationNodes[tag]; - return [node isManagedByFabric]; + if (node) { + return [node isManagedByFabric]; + } + return false; } #pragma mark -- Graph