react-native/React/Modules
Nick Lockwood c55ca61396 Dispatch view creation immediately instead of waiting for layout
Summary:All UIManager operations that affect the view hierarchy are executed via the `addUIBlock:` method, which queues them up to be executed after layout has been completed on the shadow queue.

One of the most expensive view operations is view creation, but since this doesn't actually depend on layout, there's no reason to delay it until the shadow operations have finished.

This diff modifies the `createView` method to dispatch view creation directly to the main thread instead of adding it to the UIBlock queue. This seems to result a measurable improvement in TTI.

(Credit to astreet, for implementing the same idea on Android, and thanks to oli for telling me about it!)

Reviewed By: javache

Differential Revision: D3155709

fb-gh-sync-id: 3ad1da9a8fee687aa7e0e023d668192d94dba340
fbshipit-source-id: 3ad1da9a8fee687aa7e0e023d668192d94dba340
2016-04-11 05:06:20 -07:00
..
RCTAccessibilityManager.h Replaced RCTSparseArray with NSDictionary 2015-11-14 10:28:28 -08:00
RCTAccessibilityManager.m Refactored module access to allow for lazy loading 2015-11-25 04:49:45 -08:00
RCTAlertManager.h Remove an existing UIAlertViews when invalidating the RCTAlertManager 2015-09-18 08:45:27 -07:00
RCTAlertManager.m Actually use the 'defaultValue' property in AlertViewIOS. 2016-03-15 04:26:25 -07:00
RCTAppState.h [ReactNative] s/ReactKit/React/g 2015-03-26 02:42:24 -08:00
RCTAppState.m Use 'background' app state when app is foregrounded from notif 2016-03-21 18:39:21 -07:00
RCTAsyncLocalStorage.h Added lightweight generic annotations 2015-11-03 14:49:30 -08:00
RCTAsyncLocalStorage.m Increase RN devtools retry timeout 2016-04-01 07:02:25 -07:00
RCTClipboard.h add Clipboard component for ios and android 2015-12-09 10:04:21 -08:00
RCTClipboard.m Minor fixes to clipboard and Linking to remove TODOs 2016-02-10 12:25:51 -08:00
RCTDevLoadingView.h [RCTDevLoadingView] Add ability to disable during development. 2015-09-04 03:46:06 -08:00
RCTDevLoadingView.m Prevent loading message from resetting simulator orientation on every reload. 2016-04-01 12:31:21 -07:00
RCTDevMenu.h Refactor hot loading implementation on iOS 2016-01-04 10:40:32 -08:00
RCTDevMenu.m Added support for JavaScript third-party debuggers 2016-04-07 13:15:58 -07:00
RCTExceptionsManager.h Refactored module access to allow for lazy loading 2015-11-25 04:49:45 -08:00
RCTExceptionsManager.m Replaced RegExp method parser with recursive descent 2015-12-10 10:12:29 -08:00
RCTRedBox.h Added lightweight generic annotations 2015-11-03 14:49:30 -08:00
RCTRedBox.m Hot Loading Sourcemaps 2016-01-27 14:55:36 -08:00
RCTSourceCode.h Use JSStringCreateWithUTF8CString and skip NSString decoding when loading the bundle 2015-10-16 08:11:25 -07:00
RCTSourceCode.m Fix promises on iOS to no longer wrap values in Arrays 2016-02-10 07:25:35 -08:00
RCTStatusBarManager.h Removed deprecated RCT_EXPORT + code paths 2015-06-05 09:58:25 -08:00
RCTStatusBarManager.m Export method to get current status bar height 2016-01-04 04:31:26 -08:00
RCTTiming.h [ReactNative] Use a single DisplayLink held by the bridge 2015-04-15 07:07:48 -08:00
RCTTiming.m Don't warn when jsSchedulingOverhead is negative 2016-03-04 17:30:06 -08:00
RCTUIManager.h Extracted rootview-specific shadowview logic into new class 2016-03-21 03:21:27 -07:00
RCTUIManager.m Dispatch view creation immediately instead of waiting for layout 2016-04-11 05:06:20 -07:00