Skip to content

Commit

Permalink
Improve Error Messages when Access Client References (#26059)
Browse files Browse the repository at this point in the history
This renames Module References to Client References, since they are in
the server->client direction.

I also changed the Proxies exposed from the `node-register` loader to
provide better error messages. Ideally, some of this should be
replicated in the ESM loader too but neither are the source of truth.
We'll replicate this in the static form in the Next.js loaders. cc
@huozhi @shuding

- All references are now functions so that when you call them on the
server, we can yield a better error message.
- References that are themselves already referring to an export name are
now proxies that error when you dot into them.
- `use(...)` can now be used on a client reference to unwrap it server
side and then pass a reference to the awaited value.

DiffTrain build for [ce09ace](ce09ace)
[View git log for this commit](https://github.com/facebook/react/commits/ce09ace9a23b61dfba53f5a83d52b377bc642bae)
  • Loading branch information
sebmarkbage committed Jan 28, 2023
1 parent d2a83f3 commit c3a0c0e
Show file tree
Hide file tree
Showing 43 changed files with 132 additions and 98 deletions.
4 changes: 2 additions & 2 deletions compiled/facebook-www/JSXDEVRuntime-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ var enableProfilerNestedUpdateScheduledHook =

var enableSchedulingProfiler = dynamicFeatureFlags.enableSchedulingProfiler; // Note: we'll want to remove this when we to userland implementation.

var REACT_MODULE_REFERENCE = Symbol.for("react.module.reference");
var REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
function isValidElementType(type) {
if (typeof type === "string" || typeof type === "function") {
return true;
Expand Down Expand Up @@ -168,7 +168,7 @@ function isValidElementType(type) {
// types supported by any Flight configuration anywhere since
// we don't know which Flight build this will end up being used
// with.
type.$$typeof === REACT_MODULE_REFERENCE ||
type.$$typeof === REACT_CLIENT_REFERENCE ||
type.getModuleId !== undefined
) {
return true;
Expand Down
4 changes: 2 additions & 2 deletions compiled/facebook-www/JSXDEVRuntime-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ var enableProfilerNestedUpdateScheduledHook =

var enableSchedulingProfiler = dynamicFeatureFlags.enableSchedulingProfiler; // Note: we'll want to remove this when we to userland implementation.

var REACT_MODULE_REFERENCE = Symbol.for("react.module.reference");
var REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
function isValidElementType(type) {
if (typeof type === "string" || typeof type === "function") {
return true;
Expand Down Expand Up @@ -168,7 +168,7 @@ function isValidElementType(type) {
// types supported by any Flight configuration anywhere since
// we don't know which Flight build this will end up being used
// with.
type.$$typeof === REACT_MODULE_REFERENCE ||
type.$$typeof === REACT_CLIENT_REFERENCE ||
type.getModuleId !== undefined
) {
return true;
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/REVISION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
78c4bec207795e718b5f4acc48ade19c8b94bf1f
ce09ace9a23b61dfba53f5a83d52b377bc642bae
2 changes: 1 addition & 1 deletion compiled/facebook-www/REVISION_TRANSFORMS
Original file line number Diff line number Diff line change
@@ -1 +1 @@
78c4bec207795e718b5f4acc48ade19c8b94bf1f
ce09ace9a23b61dfba53f5a83d52b377bc642bae
6 changes: 3 additions & 3 deletions compiled/facebook-www/React-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ if (
}
"use strict";

var ReactVersion = "18.3.0-www-classic-78c4bec20-20230127";
var ReactVersion = "18.3.0-www-classic-ce09ace9a-20230127";

// ATTENTION
// When adding new symbols to this file,
Expand Down Expand Up @@ -1685,7 +1685,7 @@ function forwardRef(render) {
return elementType;
}

var REACT_MODULE_REFERENCE = Symbol.for("react.module.reference");
var REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
function isValidElementType(type) {
if (typeof type === "string" || typeof type === "function") {
return true;
Expand Down Expand Up @@ -1717,7 +1717,7 @@ function isValidElementType(type) {
// types supported by any Flight configuration anywhere since
// we don't know which Flight build this will end up being used
// with.
type.$$typeof === REACT_MODULE_REFERENCE ||
type.$$typeof === REACT_CLIENT_REFERENCE ||
type.getModuleId !== undefined
) {
return true;
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/React-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ if (
}
"use strict";

var ReactVersion = "18.3.0-www-modern-78c4bec20-20230127";
var ReactVersion = "18.3.0-www-modern-ce09ace9a-20230127";

// ATTENTION
// When adding new symbols to this file,
Expand Down Expand Up @@ -1685,7 +1685,7 @@ function forwardRef(render) {
return elementType;
}

var REACT_MODULE_REFERENCE = Symbol.for("react.module.reference");
var REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
function isValidElementType(type) {
if (typeof type === "string" || typeof type === "function") {
return true;
Expand Down Expand Up @@ -1717,7 +1717,7 @@ function isValidElementType(type) {
// types supported by any Flight configuration anywhere since
// we don't know which Flight build this will end up being used
// with.
type.$$typeof === REACT_MODULE_REFERENCE ||
type.$$typeof === REACT_CLIENT_REFERENCE ||
type.getModuleId !== undefined
) {
return true;
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-prod.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -643,4 +643,4 @@ exports.useSyncExternalStore = function(
);
};
exports.useTransition = useTransition;
exports.version = "18.3.0-www-classic-78c4bec20-20230127";
exports.version = "18.3.0-www-classic-ce09ace9a-20230127";
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -635,4 +635,4 @@ exports.useSyncExternalStore = function(
);
};
exports.useTransition = useTransition;
exports.version = "18.3.0-www-modern-78c4bec20-20230127";
exports.version = "18.3.0-www-modern-ce09ace9a-20230127";
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-profiling.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,7 @@ exports.useSyncExternalStore = function(
);
};
exports.useTransition = useTransition;
exports.version = "18.3.0-www-classic-78c4bec20-20230127";
exports.version = "18.3.0-www-classic-ce09ace9a-20230127";

/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
if (
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-profiling.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -646,7 +646,7 @@ exports.useSyncExternalStore = function(
);
};
exports.useTransition = useTransition;
exports.version = "18.3.0-www-modern-78c4bec20-20230127";
exports.version = "18.3.0-www-modern-ce09ace9a-20230127";

/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
if (
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/ReactART-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ function _assertThisInitialized(self) {
return self;
}

var ReactVersion = "18.3.0-www-classic-78c4bec20-20230127";
var ReactVersion = "18.3.0-www-classic-ce09ace9a-20230127";

var LegacyRoot = 0;
var ConcurrentRoot = 1;
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/ReactART-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ function _assertThisInitialized(self) {
return self;
}

var ReactVersion = "18.3.0-www-modern-78c4bec20-20230127";
var ReactVersion = "18.3.0-www-modern-ce09ace9a-20230127";

var LegacyRoot = 0;
var ConcurrentRoot = 1;
Expand Down
4 changes: 2 additions & 2 deletions compiled/facebook-www/ReactART-prod.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -9804,7 +9804,7 @@ var slice = Array.prototype.slice,
return null;
},
bundleType: 0,
version: "18.3.0-www-classic-78c4bec20-20230127",
version: "18.3.0-www-classic-ce09ace9a-20230127",
rendererPackageName: "react-art"
};
var internals$jscomp$inline_1318 = {
Expand Down Expand Up @@ -9835,7 +9835,7 @@ var internals$jscomp$inline_1318 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-78c4bec20-20230127"
reconcilerVersion: "18.3.0-next-ce09ace9a-20230127"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1319 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
Expand Down
4 changes: 2 additions & 2 deletions compiled/facebook-www/ReactART-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -9471,7 +9471,7 @@ var slice = Array.prototype.slice,
return null;
},
bundleType: 0,
version: "18.3.0-www-modern-78c4bec20-20230127",
version: "18.3.0-www-modern-ce09ace9a-20230127",
rendererPackageName: "react-art"
};
var internals$jscomp$inline_1309 = {
Expand Down Expand Up @@ -9502,7 +9502,7 @@ var internals$jscomp$inline_1309 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-78c4bec20-20230127"
reconcilerVersion: "18.3.0-next-ce09ace9a-20230127"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1310 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/ReactDOM-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -42646,7 +42646,7 @@ function createFiberRoot(
return root;
}

var ReactVersion = "18.3.0-www-classic-78c4bec20-20230127";
var ReactVersion = "18.3.0-www-classic-ce09ace9a-20230127";

function createPortal(
children,
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/ReactDOM-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -42370,7 +42370,7 @@ function createFiberRoot(
return root;
}

var ReactVersion = "18.3.0-www-modern-78c4bec20-20230127";
var ReactVersion = "18.3.0-www-modern-ce09ace9a-20230127";

function createPortal(
children,
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactDOM-prod.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -15529,7 +15529,7 @@ Internals.Events = [
var devToolsConfig$jscomp$inline_1750 = {
findFiberByHostInstance: getClosestInstanceFromNode,
bundleType: 0,
version: "18.3.0-www-classic-78c4bec20-20230127",
version: "18.3.0-www-classic-ce09ace9a-20230127",
rendererPackageName: "react-dom"
};
var internals$jscomp$inline_2134 = {
Expand Down Expand Up @@ -15559,7 +15559,7 @@ var internals$jscomp$inline_2134 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-78c4bec20-20230127"
reconcilerVersion: "18.3.0-next-ce09ace9a-20230127"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_2135 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
Expand Down Expand Up @@ -15801,4 +15801,4 @@ exports.unstable_renderSubtreeIntoContainer = function(
);
};
exports.unstable_runWithPriority = runWithPriority;
exports.version = "18.3.0-next-78c4bec20-20230127";
exports.version = "18.3.0-next-ce09ace9a-20230127";
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactDOM-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -15090,7 +15090,7 @@ Internals.Events = [
var devToolsConfig$jscomp$inline_1718 = {
findFiberByHostInstance: getClosestInstanceFromNode,
bundleType: 0,
version: "18.3.0-www-modern-78c4bec20-20230127",
version: "18.3.0-www-modern-ce09ace9a-20230127",
rendererPackageName: "react-dom"
};
var internals$jscomp$inline_2109 = {
Expand Down Expand Up @@ -15121,7 +15121,7 @@ var internals$jscomp$inline_2109 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-78c4bec20-20230127"
reconcilerVersion: "18.3.0-next-ce09ace9a-20230127"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_2110 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
Expand Down Expand Up @@ -15309,4 +15309,4 @@ exports.unstable_flushControlled = function(fn) {
}
};
exports.unstable_runWithPriority = runWithPriority;
exports.version = "18.3.0-next-78c4bec20-20230127";
exports.version = "18.3.0-next-ce09ace9a-20230127";
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactDOM-profiling.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -16299,7 +16299,7 @@ Internals.Events = [
var devToolsConfig$jscomp$inline_1824 = {
findFiberByHostInstance: getClosestInstanceFromNode,
bundleType: 0,
version: "18.3.0-www-classic-78c4bec20-20230127",
version: "18.3.0-www-classic-ce09ace9a-20230127",
rendererPackageName: "react-dom"
};
(function(internals) {
Expand Down Expand Up @@ -16343,7 +16343,7 @@ var devToolsConfig$jscomp$inline_1824 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-78c4bec20-20230127"
reconcilerVersion: "18.3.0-next-ce09ace9a-20230127"
});
assign(Internals, {
ReactBrowserEventEmitter: {
Expand Down Expand Up @@ -16572,7 +16572,7 @@ exports.unstable_renderSubtreeIntoContainer = function(
);
};
exports.unstable_runWithPriority = runWithPriority;
exports.version = "18.3.0-next-78c4bec20-20230127";
exports.version = "18.3.0-next-ce09ace9a-20230127";

/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
if (
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactDOM-profiling.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -15850,7 +15850,7 @@ Internals.Events = [
var devToolsConfig$jscomp$inline_1792 = {
findFiberByHostInstance: getClosestInstanceFromNode,
bundleType: 0,
version: "18.3.0-www-modern-78c4bec20-20230127",
version: "18.3.0-www-modern-ce09ace9a-20230127",
rendererPackageName: "react-dom"
};
(function(internals) {
Expand Down Expand Up @@ -15895,7 +15895,7 @@ var devToolsConfig$jscomp$inline_1792 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-78c4bec20-20230127"
reconcilerVersion: "18.3.0-next-ce09ace9a-20230127"
});
exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals;
exports.createPortal = function(children, container) {
Expand Down Expand Up @@ -16070,7 +16070,7 @@ exports.unstable_flushControlled = function(fn) {
}
};
exports.unstable_runWithPriority = runWithPriority;
exports.version = "18.3.0-next-78c4bec20-20230127";
exports.version = "18.3.0-next-ce09ace9a-20230127";

/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
if (
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/ReactDOMServer-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ if (__DEV__) {
var React = require("react");
var ReactDOM = require("react-dom");

var ReactVersion = "18.3.0-www-classic-78c4bec20-20230127";
var ReactVersion = "18.3.0-www-classic-ce09ace9a-20230127";

// This refers to a WWW module.
var warningWWW = require("warning");
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/ReactDOMServer-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ if (__DEV__) {
var React = require("react");
var ReactDOM = require("react-dom");

var ReactVersion = "18.3.0-www-modern-78c4bec20-20230127";
var ReactVersion = "18.3.0-www-modern-ce09ace9a-20230127";

// This refers to a WWW module.
var warningWWW = require("warning");
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/ReactDOMServer-prod.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -3633,4 +3633,4 @@ exports.renderToString = function(children, options) {
'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server'
);
};
exports.version = "18.3.0-www-classic-78c4bec20-20230127";
exports.version = "18.3.0-www-classic-ce09ace9a-20230127";
2 changes: 1 addition & 1 deletion compiled/facebook-www/ReactDOMServer-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -3546,4 +3546,4 @@ exports.renderToString = function(children, options) {
'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server'
);
};
exports.version = "18.3.0-www-modern-78c4bec20-20230127";
exports.version = "18.3.0-www-modern-ce09ace9a-20230127";
2 changes: 1 addition & 1 deletion compiled/facebook-www/ReactDOMTesting-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -31185,7 +31185,7 @@ function createFiberRoot(
return root;
}

var ReactVersion = "18.3.0-www-classic-78c4bec20-20230127";
var ReactVersion = "18.3.0-www-classic-ce09ace9a-20230127";

function createPortal(
children,
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/ReactDOMTesting-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -38498,7 +38498,7 @@ function createFiberRoot(
return root;
}

var ReactVersion = "18.3.0-www-modern-78c4bec20-20230127";
var ReactVersion = "18.3.0-www-modern-ce09ace9a-20230127";

function createPortal(
children,
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactDOMTesting-prod.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -11328,7 +11328,7 @@ Internals.Events = [
var devToolsConfig$jscomp$inline_1518 = {
findFiberByHostInstance: getClosestInstanceFromNode,
bundleType: 0,
version: "18.3.0-www-classic-78c4bec20-20230127",
version: "18.3.0-www-classic-ce09ace9a-20230127",
rendererPackageName: "react-dom"
};
var internals$jscomp$inline_2047 = {
Expand Down Expand Up @@ -11358,7 +11358,7 @@ var internals$jscomp$inline_2047 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-78c4bec20-20230127"
reconcilerVersion: "18.3.0-next-ce09ace9a-20230127"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_2048 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
Expand Down Expand Up @@ -14847,4 +14847,4 @@ exports.unstable_renderSubtreeIntoContainer = function(
);
};
exports.unstable_runWithPriority = runWithPriority;
exports.version = "18.3.0-next-78c4bec20-20230127";
exports.version = "18.3.0-next-ce09ace9a-20230127";
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactDOMTesting-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -13967,7 +13967,7 @@ Internals.Events = [
var devToolsConfig$jscomp$inline_1673 = {
findFiberByHostInstance: getClosestInstanceFromNode,
bundleType: 0,
version: "18.3.0-www-modern-78c4bec20-20230127",
version: "18.3.0-www-modern-ce09ace9a-20230127",
rendererPackageName: "react-dom"
};
var internals$jscomp$inline_2072 = {
Expand Down Expand Up @@ -13998,7 +13998,7 @@ var internals$jscomp$inline_2072 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-78c4bec20-20230127"
reconcilerVersion: "18.3.0-next-ce09ace9a-20230127"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_2073 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
Expand Down Expand Up @@ -14321,4 +14321,4 @@ exports.unstable_flushControlled = function(fn) {
}
};
exports.unstable_runWithPriority = runWithPriority;
exports.version = "18.3.0-next-78c4bec20-20230127";
exports.version = "18.3.0-next-ce09ace9a-20230127";
Loading

0 comments on commit c3a0c0e

Please sign in to comment.