diff --git a/packages/react-dom/src/__tests__/ReactDOMInReactServer-test.js b/packages/react-dom/src/__tests__/ReactDOMInReactServer-test.js new file mode 100644 index 0000000000000..f8ff92e79ad62 --- /dev/null +++ b/packages/react-dom/src/__tests__/ReactDOMInReactServer-test.js @@ -0,0 +1,24 @@ +/** + * 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 + */ + +'use strict'; + +describe('ReactDOMInReactServer', () => { + beforeEach(() => { + jest.resetModules(); + jest.mock('react', () => require('react/react.shared-subset')); + }); + + // @gate experimental + it('can require react-dom', () => { + // In RSC this will be aliased. + require('react'); + require('react-dom'); + }); +}); diff --git a/packages/react-reconciler/src/ReactFiberClassComponent.new.js b/packages/react-reconciler/src/ReactFiberClassComponent.new.js index f04422856e368..67352b1ca1867 100644 --- a/packages/react-reconciler/src/ReactFiberClassComponent.new.js +++ b/packages/react-reconciler/src/ReactFiberClassComponent.new.js @@ -82,7 +82,9 @@ const fakeInternalInstance = {}; // React.Component uses a shared frozen object by default. // We'll use it to determine whether we need to initialize legacy refs. -export const emptyRefsObject: $FlowFixMe = new React.Component().refs; +export const emptyRefsObject: $FlowFixMe = React.Component + ? new React.Component().refs + : {}; let didWarnAboutStateAssignmentForComponent; let didWarnAboutUninitializedState; diff --git a/packages/react-reconciler/src/ReactFiberClassComponent.old.js b/packages/react-reconciler/src/ReactFiberClassComponent.old.js index ffc7b542a6c19..78962f3587ac2 100644 --- a/packages/react-reconciler/src/ReactFiberClassComponent.old.js +++ b/packages/react-reconciler/src/ReactFiberClassComponent.old.js @@ -82,7 +82,9 @@ const fakeInternalInstance = {}; // React.Component uses a shared frozen object by default. // We'll use it to determine whether we need to initialize legacy refs. -export const emptyRefsObject: $FlowFixMe = new React.Component().refs; +export const emptyRefsObject: $FlowFixMe = React.Component + ? new React.Component().refs + : {}; let didWarnAboutStateAssignmentForComponent; let didWarnAboutUninitializedState; diff --git a/packages/react/src/ReactSharedSubset.experimental.js b/packages/react/react.shared-subset.experimental.js similarity index 96% rename from packages/react/src/ReactSharedSubset.experimental.js rename to packages/react/react.shared-subset.experimental.js index 1283c51a9ad53..1948cf0aa08fb 100644 --- a/packages/react/src/ReactSharedSubset.experimental.js +++ b/packages/react/react.shared-subset.experimental.js @@ -35,4 +35,4 @@ export { useDebugValue, useMemo, version, -} from './React'; +} from './src/React'; diff --git a/packages/react/react.shared-subset.js b/packages/react/react.shared-subset.js new file mode 100644 index 0000000000000..e80a9c1e046cb --- /dev/null +++ b/packages/react/react.shared-subset.js @@ -0,0 +1,10 @@ +/** + * 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. + * + * @flow + */ + +export * from './src/ReactSharedSubset'; diff --git a/scripts/jest/setupHostConfigs.js b/scripts/jest/setupHostConfigs.js index b82367f2f493d..b4f845755e883 100644 --- a/scripts/jest/setupHostConfigs.js +++ b/scripts/jest/setupHostConfigs.js @@ -50,6 +50,14 @@ jest.mock('react', () => { return jest.requireActual(resolvedEntryPoint); }); +jest.mock('react/react.shared-subset', () => { + const resolvedEntryPoint = resolveEntryFork( + require.resolve('react/react.shared-subset'), + global.__WWW__ + ); + return jest.requireActual(resolvedEntryPoint); +}); + jest.mock('react-reconciler/src/ReactFiberReconciler', () => { return jest.requireActual( __VARIANT__ diff --git a/scripts/rollup/bundles.js b/scripts/rollup/bundles.js index 36a9627799fc5..c4603a89a374f 100644 --- a/scripts/rollup/bundles.js +++ b/scripts/rollup/bundles.js @@ -90,7 +90,7 @@ const bundles = [ { bundleTypes: [NODE_DEV, NODE_PROD], moduleType: ISOMORPHIC, - entry: 'react/src/ReactSharedSubset.js', + entry: 'react/react.shared-subset', name: 'react.shared-subset', global: 'React', minifyWithProdErrorCodes: true,