Add RN$Bridgeless flag, use it to conditionally skip bridge setup

Summary:
In bridgeless mode we don't want to set up the batched bridge, which is set up as part of InitializeCore. Instead of deleting InitializeCore completely, let's just skip this step if we're in bridgeless mode, which we'll detect using a global variable set on the runtime from cpp (`RN$Bridgeless`).

This way you still get an error if the bridge is somehow not set up properly when you're not in bridgeless mode (it won't fail silently).

Reviewed By: fkgozali

Differential Revision: D15721940

fbshipit-source-id: 73896e25874dd000f37d1abc9cf6be549ab3434f
This commit is contained in:
Emily Janzer authored and Facebook Github Bot committed 2019-06-10 15:03:01 -07:00
1 parent 5c399a9f74
commit 4e7155ee53
1 file changed
+42 -36
+42 -36
View File
@@ -10,42 +10,48 @@
'use strict';
/**
* Set up the BatchedBridge. This must be done after the other steps in
* InitializeCore to ensure that the JS environment has been initialized.
* You can use this module directly, or just require InitializeCore.
* We don't set up the batched bridge in bridgeless mode. Once we've migrated
* everything over to bridgeless we can just delete this file.
*/
const BatchedBridge = require('../BatchedBridge/BatchedBridge');
BatchedBridge.registerLazyCallableModule('Systrace', () =>
require('../Performance/Systrace'),
);
BatchedBridge.registerLazyCallableModule('JSTimers', () =>
require('./Timers/JSTimers'),
);
BatchedBridge.registerLazyCallableModule('HeapCapture', () =>
require('../HeapCapture/HeapCapture'),
);
BatchedBridge.registerLazyCallableModule('SamplingProfiler', () =>
require('../Performance/SamplingProfiler'),
);
BatchedBridge.registerLazyCallableModule('RCTLog', () =>
require('../Utilities/RCTLog'),
);
BatchedBridge.registerLazyCallableModule('RCTDeviceEventEmitter', () =>
require('../EventEmitter/RCTDeviceEventEmitter'),
);
BatchedBridge.registerLazyCallableModule('RCTNativeAppEventEmitter', () =>
require('../EventEmitter/RCTNativeAppEventEmitter'),
);
BatchedBridge.registerLazyCallableModule('GlobalPerformanceLogger', () =>
require('../Utilities/GlobalPerformanceLogger'),
);
BatchedBridge.registerLazyCallableModule('JSDevSupportModule', () =>
require('../Utilities/JSDevSupportModule'),
);
if (__DEV__ && !global.__RCTProfileIsProfiling) {
BatchedBridge.registerCallableModule(
'HMRClient',
require('../Utilities/HMRClient'),
if (!global.RN$Bridgeless) {
/**
* Set up the BatchedBridge. This must be done after the other steps in
* InitializeCore to ensure that the JS environment has been initialized.
* You can use this module directly, or just require InitializeCore.
*/
const BatchedBridge = require('../BatchedBridge/BatchedBridge');
BatchedBridge.registerLazyCallableModule('Systrace', () =>
require('../Performance/Systrace'),
);
BatchedBridge.registerLazyCallableModule('JSTimers', () =>
require('./Timers/JSTimers'),
);
BatchedBridge.registerLazyCallableModule('HeapCapture', () =>
require('../HeapCapture/HeapCapture'),
);
BatchedBridge.registerLazyCallableModule('SamplingProfiler', () =>
require('../Performance/SamplingProfiler'),
);
BatchedBridge.registerLazyCallableModule('RCTLog', () =>
require('../Utilities/RCTLog'),
);
BatchedBridge.registerLazyCallableModule('RCTDeviceEventEmitter', () =>
require('../EventEmitter/RCTDeviceEventEmitter'),
);
BatchedBridge.registerLazyCallableModule('RCTNativeAppEventEmitter', () =>
require('../EventEmitter/RCTNativeAppEventEmitter'),
);
BatchedBridge.registerLazyCallableModule('GlobalPerformanceLogger', () =>
require('../Utilities/GlobalPerformanceLogger'),
);
BatchedBridge.registerLazyCallableModule('JSDevSupportModule', () =>
require('../Utilities/JSDevSupportModule'),
);
if (__DEV__ && !global.__RCTProfileIsProfiling) {
BatchedBridge.registerCallableModule(
'HMRClient',
require('../Utilities/HMRClient'),
);
}
}