From c906b2e5004a045a81fd973643c35864d7e9a103 Mon Sep 17 00:00:00 2001 From: Brian Vaughn Date: Mon, 20 Nov 2017 13:39:50 -0800 Subject: [PATCH 1/2] Forked ReactFeatureFlags for React Native to enable debugRenderPhaseSideEffects GK --- .../src/ReactNativeFeatureFlags.js | 37 +++++++++++++++++++ scripts/rollup/bundles.js | 1 + 2 files changed, 38 insertions(+) create mode 100644 packages/react-native-renderer/src/ReactNativeFeatureFlags.js diff --git a/packages/react-native-renderer/src/ReactNativeFeatureFlags.js b/packages/react-native-renderer/src/ReactNativeFeatureFlags.js new file mode 100644 index 0000000000000..754f93d448d68 --- /dev/null +++ b/packages/react-native-renderer/src/ReactNativeFeatureFlags.js @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + */ + +import invariant from 'fbjs/lib/invariant'; + +import typeof * as FeatureFlagsType from 'shared/ReactFeatureFlags'; +import typeof * as FeatureFlagsShimType from './ReactNativeFeatureFlags'; + +// Re-export dynamic flags from the fbsource version. +export const {debugRenderPhaseSideEffects} = require('ReactFeatureFlags'); + +// The rest of the flags are static for better dead code elimination. +export const enableAsyncSubtreeAPI = true; +export const enableAsyncSchedulingByDefaultInReactDOM = false; +export const enableReactFragment = false; +export const enableCreateRoot = false; +export const enableUserTimingAPI = __DEV__; +export const enableMutatingReconciler = true; +export const enableNoopReconciler = false; +export const enablePersistentReconciler = false; + +// Only used in www builds. +export function addUserTimingListener() { + invariant(false, 'Not implemented.'); +} + +// Flow magic to verify the exports of this file match the original version. +// eslint-disable-next-line no-unused-vars +type Check<_X, Y: _X, X: Y = _X> = null; +// eslint-disable-next-line no-unused-expressions +(null: Check); diff --git a/scripts/rollup/bundles.js b/scripts/rollup/bundles.js index 199d3a80dc8bb..86a60df7ee8ee 100644 --- a/scripts/rollup/bundles.js +++ b/scripts/rollup/bundles.js @@ -129,6 +129,7 @@ const bundles = [ 'deepFreezeAndThrowOnMutationInDev', 'flattenStyle', ], + featureFlags: 'react-native-renderer/src/ReactNativeFeatureFlags', }, /******* React Native RT *******/ From e530d7688a4bde32d894b1a68b6e049eb66307df Mon Sep 17 00:00:00 2001 From: Brian Vaughn Date: Mon, 20 Nov 2017 13:47:29 -0800 Subject: [PATCH 2/2] Changed debugRenderPhaseSideEffects in www feature flags to be runtime as well --- scripts/rollup/shims/rollup/ReactFeatureFlags-www.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/rollup/shims/rollup/ReactFeatureFlags-www.js b/scripts/rollup/shims/rollup/ReactFeatureFlags-www.js index 56c0c83771410..1ff8d3a20443b 100644 --- a/scripts/rollup/shims/rollup/ReactFeatureFlags-www.js +++ b/scripts/rollup/shims/rollup/ReactFeatureFlags-www.js @@ -12,11 +12,11 @@ import typeof * as FeatureFlagsShimType from './ReactFeatureFlags-www'; // Re-export dynamic flags from the www version. export const { + debugRenderPhaseSideEffects, enableAsyncSchedulingByDefaultInReactDOM, } = require('ReactFeatureFlags'); // The rest of the flags are static for better dead code elimination. -export const debugRenderPhaseSideEffects = false; export const enableAsyncSubtreeAPI = true; export const enableReactFragment = false; export const enableCreateRoot = true;