From 58272f3d4fc3eae88f0603f128046e623eff3612 Mon Sep 17 00:00:00 2001 From: Wojciech Stanisz Date: Tue, 25 Jul 2023 15:33:09 +0200 Subject: [PATCH] Bump Reanimated to 3.4.0 --- ios/Podfile.lock | 6 +- package-lock.json | 14 +- package.json | 2 +- patches/react-native-reanimated+3.1.0.patch | 177 -------------------- 4 files changed, 12 insertions(+), 187 deletions(-) delete mode 100644 patches/react-native-reanimated+3.1.0.patch diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 9765bc89e635..4830623a40b5 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -672,11 +672,12 @@ PODS: - React-Core - RNReactNativeHapticFeedback (1.14.0): - React-Core - - RNReanimated (3.1.0): + - RNReanimated (3.4.0): - DoubleConversion - FBLazyVector - FBReactNativeSpec - glog + - hermes-engine - RCT-Folly - RCTRequired - RCTTypeSafety @@ -686,6 +687,7 @@ PODS: - React-Core/RCTWebSocket - React-CoreModules - React-cxxreact + - React-hermes - React-jsi - React-jsiexecutor - React-jsinspector @@ -1130,7 +1132,7 @@ SPEC CHECKSUMS: RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81 RNPermissions: dcdb7b99796bbeda6975a6e79ad519c41b251b1c RNReactNativeHapticFeedback: 1e3efeca9628ff9876ee7cdd9edec1b336913f8c - RNReanimated: b1220a0e5168745283ff5d53bfc7d2144b2cee1b + RNReanimated: 532818a3578a0832d95ea9d0a6a9dc0e73bbce29 RNScreens: 0df01424e9e0ed7827200d6ed1087ddd06c493f9 RNSVG: 53c661b76829783cdaf9b7a57258f3d3b4c28315 SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d diff --git a/package-lock.json b/package-lock.json index a11159dbeb76..8c217fcc03bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -85,7 +85,7 @@ "react-native-plaid-link-sdk": "^10.0.0", "react-native-qrcode-svg": "^6.2.0", "react-native-quick-sqlite": "^8.0.0-beta.2", - "react-native-reanimated": "3.1.0", + "react-native-reanimated": "3.4.0", "react-native-render-html": "6.3.1", "react-native-safe-area-context": "4.4.1", "react-native-screens": "3.17.0", @@ -36901,9 +36901,9 @@ } }, "node_modules/react-native-reanimated": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.1.0.tgz", - "integrity": "sha512-8YJR7yHnrqK6yKWzkGLVEawi1WZqJ9bGIehKEnE8zG58yLrSwUZe1T220XTbftpkA3r37Sy0kJJ/HOOiaIU+HQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.4.0.tgz", + "integrity": "sha512-B5cZJseoIkYlZTRBRN0xuU1NBxUza/6GSHhiEBQfbOufWVlUMMcWUecIRVglW49l8d2wXbfCdQlNyVoFqmHkaQ==", "dependencies": { "@babel/plugin-transform-object-assign": "^7.16.7", "@babel/preset-typescript": "^7.16.7", @@ -68601,9 +68601,9 @@ "requires": {} }, "react-native-reanimated": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.1.0.tgz", - "integrity": "sha512-8YJR7yHnrqK6yKWzkGLVEawi1WZqJ9bGIehKEnE8zG58yLrSwUZe1T220XTbftpkA3r37Sy0kJJ/HOOiaIU+HQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.4.0.tgz", + "integrity": "sha512-B5cZJseoIkYlZTRBRN0xuU1NBxUza/6GSHhiEBQfbOufWVlUMMcWUecIRVglW49l8d2wXbfCdQlNyVoFqmHkaQ==", "requires": { "@babel/plugin-transform-object-assign": "^7.16.7", "@babel/preset-typescript": "^7.16.7", diff --git a/package.json b/package.json index b3149e1cde49..67c9b62b05b4 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "react-native-plaid-link-sdk": "^10.0.0", "react-native-qrcode-svg": "^6.2.0", "react-native-quick-sqlite": "^8.0.0-beta.2", - "react-native-reanimated": "3.1.0", + "react-native-reanimated": "3.4.0", "react-native-render-html": "6.3.1", "react-native-safe-area-context": "4.4.1", "react-native-screens": "3.17.0", diff --git a/patches/react-native-reanimated+3.1.0.patch b/patches/react-native-reanimated+3.1.0.patch deleted file mode 100644 index 6dc6e0d3bc9b..000000000000 --- a/patches/react-native-reanimated+3.1.0.patch +++ /dev/null @@ -1,177 +0,0 @@ -diff --git a/node_modules/react-native-reanimated/ios/REANodesManager.mm b/node_modules/react-native-reanimated/ios/REANodesManager.mm -index 26bb253..4108293 100644 ---- a/node_modules/react-native-reanimated/ios/REANodesManager.mm -+++ b/node_modules/react-native-reanimated/ios/REANodesManager.mm -@@ -85,19 +85,77 @@ - (void)runSyncUIUpdatesWithObserver:(id)observer - - @end - --@interface REANodesManager () -+#ifndef RCT_NEW_ARCH_ENABLED - -+@interface REASyncUpdateObserver : NSObject - @end - -+@implementation REASyncUpdateObserver { -+ volatile void (^_mounting)(void); -+ volatile BOOL _waitTimedOut; -+ dispatch_semaphore_t _semaphore; -+} -+ -+- (instancetype)init -+{ -+ self = [super init]; -+ if (self) { -+ _mounting = nil; -+ _waitTimedOut = NO; -+ _semaphore = dispatch_semaphore_create(0); -+ } -+ return self; -+} -+ -+- (void)dealloc -+{ -+ RCTAssert(_mounting == nil, @"Mouting block was set but never executed. This may lead to UI inconsistencies"); -+} -+ -+- (void)unblockUIThread -+{ -+ RCTAssertUIManagerQueue(); -+ dispatch_semaphore_signal(_semaphore); -+} -+ -+- (void)waitAndMountWithTimeout:(NSTimeInterval)timeout -+{ -+ RCTAssertMainQueue(); -+ long result = dispatch_semaphore_wait(_semaphore, dispatch_time(DISPATCH_TIME_NOW, timeout * NSEC_PER_SEC)); -+ if (result != 0) { -+ @synchronized(self) { -+ _waitTimedOut = YES; -+ } -+ } -+ if (_mounting) { -+ _mounting(); -+ _mounting = nil; -+ } -+} -+ -+- (BOOL)uiManager:(RCTUIManager *)manager performMountingWithBlock:(RCTUIManagerMountingBlock)block -+{ -+ RCTAssertUIManagerQueue(); -+ @synchronized(self) { -+ if (_waitTimedOut) { -+ return NO; -+ } else { -+ _mounting = block; -+ return YES; -+ } -+ } -+} -+ -+@end -+ -+#endif -+ - @implementation REANodesManager { - CADisplayLink *_displayLink; - BOOL _wantRunUpdates; - NSMutableArray *_onAnimationCallbacks; - BOOL _tryRunBatchUpdatesSynchronously; - REAEventHandler _eventHandler; -- volatile void (^_mounting)(void); -- NSObject *_syncLayoutUpdatesWaitLock; -- volatile BOOL _syncLayoutUpdatesWaitTimedOut; - NSMutableDictionary *_componentUpdateBuffer; - NSMutableDictionary *_viewRegistry; - #ifdef RCT_NEW_ARCH_ENABLED -@@ -125,7 +183,6 @@ - (nonnull instancetype)initWithModule:(REAModule *)reanimatedModule - _operationsInBatch = [NSMutableDictionary new]; - _componentUpdateBuffer = [NSMutableDictionary new]; - _viewRegistry = [_uiManager valueForKey:@"_viewRegistry"]; -- _syncLayoutUpdatesWaitLock = [NSObject new]; - } - - _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(onAnimationFrame:)]; -@@ -241,19 +298,6 @@ - (void)onAnimationFrame:(CADisplayLink *)displayLink - } - } - --- (BOOL)uiManager:(RCTUIManager *)manager performMountingWithBlock:(RCTUIManagerMountingBlock)block --{ -- RCTAssert(_mounting == nil, @"Mouting block is expected to not be set"); -- @synchronized(_syncLayoutUpdatesWaitLock) { -- if (_syncLayoutUpdatesWaitTimedOut) { -- return NO; -- } else { -- _mounting = block; -- return YES; -- } -- } --} -- - - (void)performOperations - { - #ifdef RCT_NEW_ARCH_ENABLED -@@ -268,8 +312,7 @@ - (void)performOperations - _tryRunBatchUpdatesSynchronously = NO; - - __weak __typeof__(self) weakSelf = self; -- dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); -- _syncLayoutUpdatesWaitTimedOut = NO; -+ REASyncUpdateObserver *syncUpdateObserver = [REASyncUpdateObserver new]; - RCTExecuteOnUIManagerQueue(^{ - __typeof__(self) strongSelf = weakSelf; - if (strongSelf == nil) { -@@ -278,7 +321,7 @@ - (void)performOperations - BOOL canUpdateSynchronously = trySynchronously && ![strongSelf.uiManager hasEnqueuedUICommands]; - - if (!canUpdateSynchronously) { -- dispatch_semaphore_signal(semaphore); -+ [syncUpdateObserver unblockUIThread]; - } - - for (int i = 0; i < copiedOperationsQueue.count; i++) { -@@ -286,8 +329,8 @@ - (void)performOperations - } - - if (canUpdateSynchronously) { -- [strongSelf.uiManager runSyncUIUpdatesWithObserver:strongSelf]; -- dispatch_semaphore_signal(semaphore); -+ [strongSelf.uiManager runSyncUIUpdatesWithObserver:syncUpdateObserver]; -+ [syncUpdateObserver unblockUIThread]; - } - // In case canUpdateSynchronously=true we still have to send uiManagerWillPerformMounting event - // to observers because some components (e.g. TextInput) update their UIViews only on that event. -@@ -298,17 +341,7 @@ - (void)performOperations - // from CADisplayLink but it is easier to hardcode it for the time being. - // The reason why we use frame duration here is that if takes longer than one frame to complete layout tasks - // there is no point of synchronizing layout with the UI interaction as we get that one frame delay anyways. -- long result = dispatch_semaphore_wait(semaphore, dispatch_time(DISPATCH_TIME_NOW, 16 * NSEC_PER_MSEC)); -- if (result != 0) { -- @synchronized(_syncLayoutUpdatesWaitLock) { -- _syncLayoutUpdatesWaitTimedOut = YES; -- } -- } -- } -- -- if (_mounting) { -- _mounting(); -- _mounting = nil; -+ [syncUpdateObserver waitAndMountWithTimeout:0.016]; - } - } - _wantRunUpdates = NO; -diff --git a/node_modules/react-native-reanimated/mock.js b/node_modules/react-native-reanimated/mock.js -index 68b20d2..b088001 100644 ---- a/node_modules/react-native-reanimated/mock.js -+++ b/node_modules/react-native-reanimated/mock.js -@@ -41,6 +41,9 @@ const Reanimated = { - createAnimatedComponent: (Component) => Component, - addWhitelistedUIProps: NOOP, - addWhitelistedNativeProps: NOOP, -+ -+ // used by react-navigation fork -+ isConfigured: () => true, - }; - - module.exports = {