Skip to content

Commit 5ccb5b7

Browse files
committed
Rename the react.element symbol to react.transitional.element (#28813)
We have changed the shape (and the runtime) of React Elements. To help avoid precompiled or inlined JSX having subtle breakages or deopting hidden classes, I renamed the symbol so that we can early error if private implementation details are used or mismatching versions are used. Why "transitional"? Well, because this is not the last time we'll change the shape. This is just a stepping stone to removing the `ref` field on the elements in the next version so we'll likely have to do it again. DiffTrain build for commit 3b551c8.
1 parent e2bb95f commit 5ccb5b7

20 files changed

+223
-180
lines changed

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-is/cjs/ReactIs-dev.js

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<4b798dcd431887c30b264d36a3b13441>>
10+
* @generated SignedSource<<67ecfa6f3ffb08a7102950c78e1002d4>>
1111
*/
1212

1313
'use strict';
@@ -18,11 +18,23 @@ if (__DEV__) {
1818

1919
var dynamicFlagsUntyped = require('ReactNativeInternalFeatureFlags');
2020

21-
// ATTENTION
21+
// Re-export dynamic flags from the internal module.
22+
var dynamicFlags = dynamicFlagsUntyped; // We destructure each value before re-exporting to avoid a dynamic look-up on
23+
// the exports object every time a flag is read.
24+
25+
var enableRenderableContext = dynamicFlags.enableRenderableContext;
26+
// The rest of the flags are static for better dead code elimination.
27+
var enableDebugTracing = false;
28+
var enableScopeAPI = false;
29+
var enableLegacyHidden = false;
30+
var enableTransitionTracing = false;
31+
2232
// When adding new symbols to this file,
2333
// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
2434
// The Symbol used to tag the ReactElement-like types.
25-
var REACT_ELEMENT_TYPE = Symbol.for('react.element');
35+
36+
var REACT_LEGACY_ELEMENT_TYPE = Symbol.for('react.element');
37+
var REACT_ELEMENT_TYPE = REACT_LEGACY_ELEMENT_TYPE;
2638
var REACT_PORTAL_TYPE = Symbol.for('react.portal');
2739
var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');
2840
var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');
@@ -38,17 +50,6 @@ var REACT_MEMO_TYPE = Symbol.for('react.memo');
3850
var REACT_LAZY_TYPE = Symbol.for('react.lazy');
3951
var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');
4052

41-
// Re-export dynamic flags from the internal module.
42-
var dynamicFlags = dynamicFlagsUntyped; // We destructure each value before re-exporting to avoid a dynamic look-up on
43-
// the exports object every time a flag is read.
44-
45-
var enableRenderableContext = dynamicFlags.enableRenderableContext;
46-
// The rest of the flags are static for better dead code elimination.
47-
var enableDebugTracing = false;
48-
var enableScopeAPI = false;
49-
var enableLegacyHidden = false;
50-
var enableTransitionTracing = false;
51-
5253
var REACT_CLIENT_REFERENCE = Symbol.for('react.client.reference');
5354
function isValidElementType(type) {
5455
if (typeof type === 'string' || typeof type === 'function') {

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-is/cjs/ReactIs-prod.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<8b4e45fcdea67ae633a64f641072fdb0>>
10+
* @generated SignedSource<<a2ec93969192b62fe71f0ed10a25ef77>>
1111
*/
1212

1313
"use strict";
14-
var dynamicFlagsUntyped = require("ReactNativeInternalFeatureFlags"),
15-
REACT_ELEMENT_TYPE = Symbol.for("react.element"),
14+
var enableRenderableContext =
15+
require("ReactNativeInternalFeatureFlags").enableRenderableContext,
16+
REACT_LEGACY_ELEMENT_TYPE = Symbol.for("react.element"),
1617
REACT_PORTAL_TYPE = Symbol.for("react.portal"),
1718
REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"),
1819
REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"),
@@ -26,13 +27,12 @@ var dynamicFlagsUntyped = require("ReactNativeInternalFeatureFlags"),
2627
REACT_MEMO_TYPE = Symbol.for("react.memo"),
2728
REACT_LAZY_TYPE = Symbol.for("react.lazy"),
2829
REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"),
29-
enableRenderableContext = dynamicFlagsUntyped.enableRenderableContext,
3030
REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
3131
function typeOf(object) {
3232
if ("object" === typeof object && null !== object) {
3333
var $$typeof = object.$$typeof;
3434
switch ($$typeof) {
35-
case REACT_ELEMENT_TYPE:
35+
case REACT_LEGACY_ELEMENT_TYPE:
3636
switch (((object = object.type), object)) {
3737
case REACT_FRAGMENT_TYPE:
3838
case REACT_PROFILER_TYPE:
@@ -67,7 +67,7 @@ exports.ContextConsumer = enableRenderableContext
6767
? REACT_CONSUMER_TYPE
6868
: REACT_CONTEXT_TYPE;
6969
exports.ContextProvider = ContextProvider;
70-
exports.Element = REACT_ELEMENT_TYPE;
70+
exports.Element = REACT_LEGACY_ELEMENT_TYPE;
7171
exports.ForwardRef = REACT_FORWARD_REF_TYPE;
7272
exports.Fragment = REACT_FRAGMENT_TYPE;
7373
exports.Lazy = REACT_LAZY_TYPE;
@@ -91,7 +91,7 @@ exports.isElement = function (object) {
9191
return (
9292
"object" === typeof object &&
9393
null !== object &&
94-
object.$$typeof === REACT_ELEMENT_TYPE
94+
object.$$typeof === REACT_LEGACY_ELEMENT_TYPE
9595
);
9696
};
9797
exports.isForwardRef = function (object) {

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-is/cjs/ReactIs-profiling.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<8b4e45fcdea67ae633a64f641072fdb0>>
10+
* @generated SignedSource<<a2ec93969192b62fe71f0ed10a25ef77>>
1111
*/
1212

1313
"use strict";
14-
var dynamicFlagsUntyped = require("ReactNativeInternalFeatureFlags"),
15-
REACT_ELEMENT_TYPE = Symbol.for("react.element"),
14+
var enableRenderableContext =
15+
require("ReactNativeInternalFeatureFlags").enableRenderableContext,
16+
REACT_LEGACY_ELEMENT_TYPE = Symbol.for("react.element"),
1617
REACT_PORTAL_TYPE = Symbol.for("react.portal"),
1718
REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"),
1819
REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"),
@@ -26,13 +27,12 @@ var dynamicFlagsUntyped = require("ReactNativeInternalFeatureFlags"),
2627
REACT_MEMO_TYPE = Symbol.for("react.memo"),
2728
REACT_LAZY_TYPE = Symbol.for("react.lazy"),
2829
REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"),
29-
enableRenderableContext = dynamicFlagsUntyped.enableRenderableContext,
3030
REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
3131
function typeOf(object) {
3232
if ("object" === typeof object && null !== object) {
3333
var $$typeof = object.$$typeof;
3434
switch ($$typeof) {
35-
case REACT_ELEMENT_TYPE:
35+
case REACT_LEGACY_ELEMENT_TYPE:
3636
switch (((object = object.type), object)) {
3737
case REACT_FRAGMENT_TYPE:
3838
case REACT_PROFILER_TYPE:
@@ -67,7 +67,7 @@ exports.ContextConsumer = enableRenderableContext
6767
? REACT_CONSUMER_TYPE
6868
: REACT_CONTEXT_TYPE;
6969
exports.ContextProvider = ContextProvider;
70-
exports.Element = REACT_ELEMENT_TYPE;
70+
exports.Element = REACT_LEGACY_ELEMENT_TYPE;
7171
exports.ForwardRef = REACT_FORWARD_REF_TYPE;
7272
exports.Fragment = REACT_FRAGMENT_TYPE;
7373
exports.Lazy = REACT_LAZY_TYPE;
@@ -91,7 +91,7 @@ exports.isElement = function (object) {
9191
return (
9292
"object" === typeof object &&
9393
null !== object &&
94-
object.$$typeof === REACT_ELEMENT_TYPE
94+
object.$$typeof === REACT_LEGACY_ELEMENT_TYPE
9595
);
9696
};
9797
exports.isForwardRef = function (object) {

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-dev.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<72055afa4818e8a565d07875c49b2d9d>>
10+
* @generated SignedSource<<46b519886f2205ba3e56e9120fea4a08>>
1111
*/
1212

1313
'use strict';
@@ -168,11 +168,12 @@ var HostHoistable = 26;
168168
var HostSingleton = 27;
169169
var IncompleteFunctionComponent = 28;
170170

171-
// ATTENTION
172171
// When adding new symbols to this file,
173172
// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
174173
// The Symbol used to tag the ReactElement-like types.
175-
var REACT_ELEMENT_TYPE = Symbol.for('react.element');
174+
175+
var REACT_LEGACY_ELEMENT_TYPE = Symbol.for('react.element');
176+
var REACT_ELEMENT_TYPE = REACT_LEGACY_ELEMENT_TYPE;
176177
var REACT_PORTAL_TYPE = Symbol.for('react.portal');
177178
var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');
178179
var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');
@@ -5422,7 +5423,11 @@ function coerceRef(returnFiber, current, workInProgress, element) {
54225423
}
54235424

54245425
function throwOnInvalidObjectType(returnFiber, newChild) {
5425-
// $FlowFixMe[method-unbinding]
5426+
if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE) {
5427+
throw new Error('A React Element from an older version of React was rendered. ' + 'This is not supported. It can happen if:\n' + '- Multiple copies of the "react" package is used.\n' + '- A library pre-bundled an old copy of "react" or "react/jsx-runtime".\n' + '- A compiler tries to "inline" JSX instead of using the runtime.');
5428+
} // $FlowFixMe[method-unbinding]
5429+
5430+
54265431
var childString = Object.prototype.toString.call(newChild);
54275432
throw new Error("Objects are not valid as a React child (found: " + (childString === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : childString) + "). " + 'If you meant to render a collection of children, use an array ' + 'instead.');
54285433
}
@@ -22978,7 +22983,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
2297822983
return root;
2297922984
}
2298022985

22981-
var ReactVersion = '19.0.0-canary-acecb093';
22986+
var ReactVersion = '19.0.0-canary-faeca3c1';
2298222987

2298322988
/*
2298422989
* The `'' + value` pattern (used in perf-sensitive code) throws for Symbol

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-prod.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<8230647a80c4b86b8cf8384768883557>>
10+
* @generated SignedSource<<9553b8ed4acfe1f92cf2f7113b446768>>
1111
*/
1212

1313
"use strict";
@@ -31,7 +31,7 @@ function _createClass(Constructor, protoProps, staticProps) {
3131
var assign = Object.assign,
3232
ReactSharedInternals =
3333
React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,
34-
REACT_ELEMENT_TYPE = Symbol.for("react.element"),
34+
REACT_LEGACY_ELEMENT_TYPE = Symbol.for("react.element"),
3535
REACT_PORTAL_TYPE = Symbol.for("react.portal"),
3636
REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"),
3737
REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"),
@@ -1385,6 +1385,10 @@ function unwrapThenable(thenable) {
13851385
return trackUsedThenable(thenableState$1, thenable, index);
13861386
}
13871387
function throwOnInvalidObjectType(returnFiber, newChild) {
1388+
if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)
1389+
throw Error(
1390+
'A React Element from an older version of React was rendered. This is not supported. It can happen if:\n- Multiple copies of the "react" package is used.\n- A library pre-bundled an old copy of "react" or "react/jsx-runtime".\n- A compiler tries to "inline" JSX instead of using the runtime.'
1391+
);
13881392
returnFiber = Object.prototype.toString.call(newChild);
13891393
throw Error(
13901394
"Objects are not valid as a React child (found: " +
@@ -1545,7 +1549,7 @@ function createChildReconciler(shouldTrackSideEffects) {
15451549
);
15461550
if ("object" === typeof newChild && null !== newChild) {
15471551
switch (newChild.$$typeof) {
1548-
case REACT_ELEMENT_TYPE:
1552+
case REACT_LEGACY_ELEMENT_TYPE:
15491553
return (
15501554
(lanes = createFiberFromTypeAndProps(
15511555
newChild.type,
@@ -1608,7 +1612,7 @@ function createChildReconciler(shouldTrackSideEffects) {
16081612
: updateTextNode(returnFiber, oldFiber, "" + newChild, lanes);
16091613
if ("object" === typeof newChild && null !== newChild) {
16101614
switch (newChild.$$typeof) {
1611-
case REACT_ELEMENT_TYPE:
1615+
case REACT_LEGACY_ELEMENT_TYPE:
16121616
return newChild.key === key
16131617
? updateElement(returnFiber, oldFiber, newChild, lanes)
16141618
: null;
@@ -1662,7 +1666,7 @@ function createChildReconciler(shouldTrackSideEffects) {
16621666
);
16631667
if ("object" === typeof newChild && null !== newChild) {
16641668
switch (newChild.$$typeof) {
1665-
case REACT_ELEMENT_TYPE:
1669+
case REACT_LEGACY_ELEMENT_TYPE:
16661670
return (
16671671
(existingChildren =
16681672
existingChildren.get(
@@ -1893,7 +1897,7 @@ function createChildReconciler(shouldTrackSideEffects) {
18931897
(newChild = newChild.props.children);
18941898
if ("object" === typeof newChild && null !== newChild) {
18951899
switch (newChild.$$typeof) {
1896-
case REACT_ELEMENT_TYPE:
1900+
case REACT_LEGACY_ELEMENT_TYPE:
18971901
a: {
18981902
for (var key = newChild.key; null !== currentFirstChild; ) {
18991903
if (currentFirstChild.key === key) {
@@ -9144,7 +9148,7 @@ var devToolsConfig$jscomp$inline_1019 = {
91449148
throw Error("TestRenderer does not support findFiberByHostInstance()");
91459149
},
91469150
bundleType: 0,
9147-
version: "19.0.0-canary-a8200c0a",
9151+
version: "19.0.0-canary-926deca4",
91489152
rendererPackageName: "react-test-renderer"
91499153
};
91509154
var internals$jscomp$inline_1238 = {
@@ -9175,7 +9179,7 @@ var internals$jscomp$inline_1238 = {
91759179
scheduleRoot: null,
91769180
setRefreshHandler: null,
91779181
getCurrentFiber: null,
9178-
reconcilerVersion: "19.0.0-canary-a8200c0a"
9182+
reconcilerVersion: "19.0.0-canary-926deca4"
91799183
};
91809184
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
91819185
var hook$jscomp$inline_1239 = __REACT_DEVTOOLS_GLOBAL_HOOK__;

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-profiling.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<9f8b5b89043962a79b6b2123a526bf46>>
10+
* @generated SignedSource<<3a52338cfe089716cbc5c55bc70f1def>>
1111
*/
1212

1313
"use strict";
@@ -31,7 +31,7 @@ function _createClass(Constructor, protoProps, staticProps) {
3131
var assign = Object.assign,
3232
ReactSharedInternals =
3333
React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,
34-
REACT_ELEMENT_TYPE = Symbol.for("react.element"),
34+
REACT_LEGACY_ELEMENT_TYPE = Symbol.for("react.element"),
3535
REACT_PORTAL_TYPE = Symbol.for("react.portal"),
3636
REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"),
3737
REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"),
@@ -1473,6 +1473,10 @@ function unwrapThenable(thenable) {
14731473
return trackUsedThenable(thenableState$1, thenable, index);
14741474
}
14751475
function throwOnInvalidObjectType(returnFiber, newChild) {
1476+
if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)
1477+
throw Error(
1478+
'A React Element from an older version of React was rendered. This is not supported. It can happen if:\n- Multiple copies of the "react" package is used.\n- A library pre-bundled an old copy of "react" or "react/jsx-runtime".\n- A compiler tries to "inline" JSX instead of using the runtime.'
1479+
);
14761480
returnFiber = Object.prototype.toString.call(newChild);
14771481
throw Error(
14781482
"Objects are not valid as a React child (found: " +
@@ -1633,7 +1637,7 @@ function createChildReconciler(shouldTrackSideEffects) {
16331637
);
16341638
if ("object" === typeof newChild && null !== newChild) {
16351639
switch (newChild.$$typeof) {
1636-
case REACT_ELEMENT_TYPE:
1640+
case REACT_LEGACY_ELEMENT_TYPE:
16371641
return (
16381642
(lanes = createFiberFromTypeAndProps(
16391643
newChild.type,
@@ -1696,7 +1700,7 @@ function createChildReconciler(shouldTrackSideEffects) {
16961700
: updateTextNode(returnFiber, oldFiber, "" + newChild, lanes);
16971701
if ("object" === typeof newChild && null !== newChild) {
16981702
switch (newChild.$$typeof) {
1699-
case REACT_ELEMENT_TYPE:
1703+
case REACT_LEGACY_ELEMENT_TYPE:
17001704
return newChild.key === key
17011705
? updateElement(returnFiber, oldFiber, newChild, lanes)
17021706
: null;
@@ -1750,7 +1754,7 @@ function createChildReconciler(shouldTrackSideEffects) {
17501754
);
17511755
if ("object" === typeof newChild && null !== newChild) {
17521756
switch (newChild.$$typeof) {
1753-
case REACT_ELEMENT_TYPE:
1757+
case REACT_LEGACY_ELEMENT_TYPE:
17541758
return (
17551759
(existingChildren =
17561760
existingChildren.get(
@@ -1981,7 +1985,7 @@ function createChildReconciler(shouldTrackSideEffects) {
19811985
(newChild = newChild.props.children);
19821986
if ("object" === typeof newChild && null !== newChild) {
19831987
switch (newChild.$$typeof) {
1984-
case REACT_ELEMENT_TYPE:
1988+
case REACT_LEGACY_ELEMENT_TYPE:
19851989
a: {
19861990
for (var key = newChild.key; null !== currentFirstChild; ) {
19871991
if (currentFirstChild.key === key) {
@@ -9760,7 +9764,7 @@ var devToolsConfig$jscomp$inline_1101 = {
97609764
throw Error("TestRenderer does not support findFiberByHostInstance()");
97619765
},
97629766
bundleType: 0,
9763-
version: "19.0.0-canary-359342b1",
9767+
version: "19.0.0-canary-1895753d",
97649768
rendererPackageName: "react-test-renderer"
97659769
};
97669770
(function (internals) {
@@ -9804,7 +9808,7 @@ var devToolsConfig$jscomp$inline_1101 = {
98049808
scheduleRoot: null,
98059809
setRefreshHandler: null,
98069810
getCurrentFiber: null,
9807-
reconcilerVersion: "19.0.0-canary-359342b1"
9811+
reconcilerVersion: "19.0.0-canary-1895753d"
98089812
});
98099813
exports._Scheduler = Scheduler;
98109814
exports.act = act;

0 commit comments

Comments
 (0)