diff --git a/packages/react-native-reanimated/apple/LayoutReanimation/REASharedTransitionManager.m b/packages/react-native-reanimated/apple/LayoutReanimation/REASharedTransitionManager.m index efcb4ff4ae08..619d66790687 100644 --- a/packages/react-native-reanimated/apple/LayoutReanimation/REASharedTransitionManager.m +++ b/packages/react-native-reanimated/apple/LayoutReanimation/REASharedTransitionManager.m @@ -27,7 +27,6 @@ @implementation REASharedTransitionManager { NSMutableSet *_reattachedViews; BOOL _isStackDropped; BOOL _isAsyncSharedTransitionConfigured; - BOOL _isConfigured; BOOL _clearScreen; BOOL _isInteractive; REAUIView *_disappearingScreen; @@ -39,6 +38,14 @@ @implementation REASharedTransitionManager { different context of execution (self != REASharedTransitionManager) */ static REASharedTransitionManager *_sharedTransitionManager; +/* + It needs to be a static field because there is a possibility of instantiating + `REASharedTransitionManager` more than once, such as in Expo Go. Method swizzling + operates at the class level rather than the instance level, so `_isConfigured` + should also be a static field to inform every instance that the swizzling process + has occurred successfully. +*/ +static BOOL _isConfigured = NO; - (instancetype)initWithAnimationsManager:(REAAnimationsManager *)animationManager {