Improve DX when combining react-dom/profiling and schedule/tracking (#13605)

* Added blessed production+profiling entry point for schedule/tracking
* Add invariant when profiling renderer is used with non-profiling schedule/tracking
This commit is contained in:
Brian Vaughn
2018-09-10 08:32:56 -07:00
committed by GitHub
parent 144328fe81
commit 03ab1efeb4
4 changed files with 48 additions and 0 deletions
+12
View File
@@ -168,6 +168,18 @@ let didWarnSetStateChildContext;
let warnAboutUpdateOnUnmounted;
let warnAboutInvalidUpdates;
if (enableSchedulerTracking) {
// Provide explicit error message when production+profiling bundle of e.g. react-dom
// is used with production (non-profiling) bundle of schedule/tracking
invariant(
__interactionsRef != null && __interactionsRef.current != null,
'It is not supported to run the profiling version of a renderer (for example, `react-dom/profiling`) ' +
'without also replacing the `schedule/tracking` module with `schedule/tracking-profiling`. ' +
'Your bundler might have a setting for aliasing both modules. ' +
'Learn more at http://fb.me/react-profiling',
);
}
if (__DEV__) {
didWarnAboutStateTransition = false;
didWarnSetStateChildContext = false;
@@ -0,0 +1,28 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
* @jest-environment node
*/
'use strict';
describe('ReactTracking', () => {
it('should error if profiling renderer and non-profiling schedule/tracking bundles are combined', () => {
jest.resetModules();
const ReactFeatureFlags = require('shared/ReactFeatureFlags');
ReactFeatureFlags.enableSchedulerTracking = false;
require('schedule/tracking');
ReactFeatureFlags.enableSchedulerTracking = true;
expect(() => require('react-dom')).toThrow(
'Learn more at http://fb.me/react-profiling',
);
});
});
@@ -0,0 +1,7 @@
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/schedule-tracking.profiling.min.js');
} else {
module.exports = require('./cjs/schedule-tracking.development.js');
}
+1
View File
@@ -20,6 +20,7 @@
"README.md",
"index.js",
"tracking.js",
"tracking-profiling.js",
"cjs/",
"umd/"
]