Permalink
Browse files

reactBridgeDidFinishTransaction was finally removed

Summary:
We are removing `reactBridgeDidFinishTransaction`.
Why?
 * It is a performance drain. Supporting this requires dispatching main-thread block on every single transaction complete;
 * It has "too broad" non-conceptual semantic which encouraged using this as a "band-aid solution" for poorly designed components;
 * It is conceptually incompatible with new approaches that we are trying to implement to optimize the render layer;
 * It was deprecated for very long time.

Reviewed By: mmmulani

Differential Revision: D6549729

fbshipit-source-id: 58094aab982c67cec3d7fa3b616c637cb84d697f
  • Loading branch information...
shergin authored and facebook-github-bot committed Dec 18, 2017
1 parent b263560 commit d2dc4514077ae868f85d45ccdcc7c69df7b7648b
Showing with 1 addition and 25 deletions.
  1. +1 −20 React/Modules/RCTUIManager.m
  2. +0 −5 React/Views/RCTComponent.h
@@ -68,8 +68,6 @@ @implementation RCTUIManager
// Keyed by viewName
NSDictionary *_componentDataByName;
NSMutableSet<id<RCTComponent>> *_bridgeTransactionListeners;
}
@synthesize bridge = _bridge;
@@ -107,7 +105,6 @@ - (void)invalidate
self->_rootViewTags = nil;
self->_shadowViewRegistry = nil;
self->_viewRegistry = nil;
self->_bridgeTransactionListeners = nil;
self->_bridge = nil;
[[NSNotificationCenter defaultCenter] removeObserver:self];
@@ -145,7 +142,6 @@ - (void)setBridge:(RCTBridge *)bridge
_pendingUIBlocks = [NSMutableArray new];
_rootViewTags = [NSMutableSet new];
_bridgeTransactionListeners = [NSMutableSet new];
_observerCoordinator = [RCTUIManagerObserverCoordinator new];
// Get view managers from bridge
@@ -448,10 +444,6 @@ - (void)_purgeChildren:(NSArray<id<RCTComponent>> *)children
[(id<RCTInvalidating>)subview invalidate];
}
[registry removeObjectForKey:subview.reactTag];
if (registry == (NSMutableDictionary<NSNumber *, id<RCTComponent>> *)self->_viewRegistry) {
[self->_bridgeTransactionListeners removeObject:subview];
}
});
}
}
@@ -996,9 +988,7 @@ - (void)_manageChildren:(NSNumber *)containerTag
if ([view respondsToSelector:@selector(setBackgroundColor:)]) {
((UIView *)view).backgroundColor = backgroundColor;
}
if ([view respondsToSelector:@selector(reactBridgeDidFinishTransaction)]) {
[uiManager->_bridgeTransactionListeners addObject:view];
}
uiManager->_viewRegistry[reactTag] = view;
#if RCT_DEV
@@ -1117,15 +1107,6 @@ - (void)_layoutAndMount
[self _amendPendingUIBlocksWithStylePropagationUpdateForShadowView:rootView];
}
[self addUIBlock:^(RCTUIManager *uiManager, __unused NSDictionary<NSNumber *, UIView *> *viewRegistry) {
/**
* TODO(tadeu): Remove it once and for all
*/
for (id<RCTComponent> node in uiManager->_bridgeTransactionListeners) {
[node reactBridgeDidFinishTransaction];
}
}];
[_observerCoordinator uiManagerWillPerformMounting:self];
[self flushUIBlocksWithCompletion:^{
@@ -50,11 +50,6 @@ typedef void (^RCTBubblingEventBlock)(NSDictionary *body);
*/
- (void)didUpdateReactSubviews;
// TODO: Deprecate this
// This method is called after layout has been performed for all views known
// to the RCTViewManager. It is only called on UIViews, not shadow views.
- (void)reactBridgeDidFinishTransaction;
@end
// TODO: this is kinda dumb - let's come up with a

0 comments on commit d2dc451

Please sign in to comment.