Skip to content

Commit aabb356

Browse files
committed
jsx: Remove unnecessary hasOwnProperty check (#28775)
Follow up to #28768. The modern JSX runtime (`jsx`) does not need to check if each prop is a direct property with `hasOwnProperty` because the compiler always passes a plain object. I'll leave the check in the old JSX runtime (`createElement`) since that one can be called manually with any kind of object, and if there were old user code that relied on this for some reason, it would be using that runtime. DiffTrain build for [0b3b8a6](0b3b8a6)
1 parent c093e5b commit aabb356

11 files changed

+29
-49
lines changed

compiled/facebook-www/JSXDEVRuntime-dev.classic.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1410,11 +1410,8 @@ if (__DEV__) {
14101410
props = {};
14111411

14121412
for (var propName in config) {
1413-
if (
1414-
hasOwnProperty.call(config, propName) && // Skip over reserved prop names
1415-
propName !== "key" &&
1416-
(enableRefAsProp || propName !== "ref")
1417-
) {
1413+
// Skip over reserved prop names
1414+
if (propName !== "key" && (enableRefAsProp || propName !== "ref")) {
14181415
if (enableRefAsProp && !disableStringRefs && propName === "ref") {
14191416
props.ref = coerceStringRef(
14201417
config[propName],

compiled/facebook-www/JSXDEVRuntime-dev.modern.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1412,11 +1412,8 @@ if (__DEV__) {
14121412
props = {};
14131413

14141414
for (var propName in config) {
1415-
if (
1416-
hasOwnProperty.call(config, propName) && // Skip over reserved prop names
1417-
propName !== "key" &&
1418-
(enableRefAsProp || propName !== "ref")
1419-
) {
1415+
// Skip over reserved prop names
1416+
if (propName !== "key" && (enableRefAsProp || propName !== "ref")) {
14201417
if (enableRefAsProp && !disableStringRefs && propName === "ref") {
14211418
props.ref = coerceStringRef(
14221419
config[propName],

compiled/facebook-www/REVISION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2acfb7b60922bdc8376dd144ca7bc532df78254b
1+
0b3b8a6a354b90fe76a9d82bb34487e5d2f71203

compiled/facebook-www/React-dev.classic.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ if (__DEV__) {
2424
) {
2525
__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
2626
}
27-
var ReactVersion = "19.0.0-www-classic-4511ca3e";
27+
var ReactVersion = "19.0.0-www-classic-87084f69";
2828

2929
// ATTENTION
3030
// When adding new symbols to this file,
@@ -1818,11 +1818,8 @@ if (__DEV__) {
18181818
props = {};
18191819

18201820
for (var propName in config) {
1821-
if (
1822-
hasOwnProperty.call(config, propName) && // Skip over reserved prop names
1823-
propName !== "key" &&
1824-
(enableRefAsProp || propName !== "ref")
1825-
) {
1821+
// Skip over reserved prop names
1822+
if (propName !== "key" && (enableRefAsProp || propName !== "ref")) {
18261823
if (enableRefAsProp && !disableStringRefs && propName === "ref") {
18271824
props.ref = coerceStringRef(
18281825
config[propName],

compiled/facebook-www/React-dev.modern.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ if (__DEV__) {
2424
) {
2525
__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
2626
}
27-
var ReactVersion = "19.0.0-www-modern-8e3891bc";
27+
var ReactVersion = "19.0.0-www-modern-7116ae62";
2828

2929
// ATTENTION
3030
// When adding new symbols to this file,
@@ -1820,11 +1820,8 @@ if (__DEV__) {
18201820
props = {};
18211821

18221822
for (var propName in config) {
1823-
if (
1824-
hasOwnProperty.call(config, propName) && // Skip over reserved prop names
1825-
propName !== "key" &&
1826-
(enableRefAsProp || propName !== "ref")
1827-
) {
1823+
// Skip over reserved prop names
1824+
if (propName !== "key" && (enableRefAsProp || propName !== "ref")) {
18281825
if (enableRefAsProp && !disableStringRefs && propName === "ref") {
18291826
props.ref = coerceStringRef(
18301827
config[propName],

compiled/facebook-www/React-prod.classic.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,8 @@ function jsxProd(type, config, maybeKey) {
121121
(ref = coerceStringRef(ref, ReactCurrentOwner.current, type)));
122122
maybeKey = {};
123123
for (var propName in config)
124-
hasOwnProperty.call(config, propName) &&
125-
"key" !== propName &&
126-
(enableRefAsProp || "ref" !== propName) &&
124+
"key" === propName ||
125+
(!enableRefAsProp && "ref" === propName) ||
127126
(enableRefAsProp && "ref" === propName
128127
? (maybeKey.ref = coerceStringRef(
129128
config[propName],
@@ -704,4 +703,4 @@ exports.useSyncExternalStore = function (
704703
exports.useTransition = function () {
705704
return ReactCurrentDispatcher.current.useTransition();
706705
};
707-
exports.version = "19.0.0-www-classic-36e8d411";
706+
exports.version = "19.0.0-www-classic-544fd05e";

compiled/facebook-www/React-prod.modern.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,8 @@ function jsxProd(type, config, maybeKey) {
121121
(ref = coerceStringRef(ref, ReactCurrentOwner.current, type)));
122122
maybeKey = {};
123123
for (var propName in config)
124-
hasOwnProperty.call(config, propName) &&
125-
"key" !== propName &&
126-
(enableRefAsProp || "ref" !== propName) &&
124+
"key" === propName ||
125+
(!enableRefAsProp && "ref" === propName) ||
127126
(enableRefAsProp && "ref" === propName
128127
? (maybeKey.ref = coerceStringRef(
129128
config[propName],
@@ -704,4 +703,4 @@ exports.useSyncExternalStore = function (
704703
exports.useTransition = function () {
705704
return ReactCurrentDispatcher.current.useTransition();
706705
};
707-
exports.version = "19.0.0-www-modern-36e8d411";
706+
exports.version = "19.0.0-www-modern-544fd05e";

compiled/facebook-www/React-profiling.classic.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,8 @@ function jsxProd(type, config, maybeKey) {
125125
(ref = coerceStringRef(ref, ReactCurrentOwner.current, type)));
126126
maybeKey = {};
127127
for (var propName in config)
128-
hasOwnProperty.call(config, propName) &&
129-
"key" !== propName &&
130-
(enableRefAsProp || "ref" !== propName) &&
128+
"key" === propName ||
129+
(!enableRefAsProp && "ref" === propName) ||
131130
(enableRefAsProp && "ref" === propName
132131
? (maybeKey.ref = coerceStringRef(
133132
config[propName],
@@ -708,7 +707,7 @@ exports.useSyncExternalStore = function (
708707
exports.useTransition = function () {
709708
return ReactCurrentDispatcher.current.useTransition();
710709
};
711-
exports.version = "19.0.0-www-classic-718fc0c7";
710+
exports.version = "19.0.0-www-classic-c3069b6b";
712711
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
713712
"function" ===
714713
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

compiled/facebook-www/React-profiling.modern.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,8 @@ function jsxProd(type, config, maybeKey) {
125125
(ref = coerceStringRef(ref, ReactCurrentOwner.current, type)));
126126
maybeKey = {};
127127
for (var propName in config)
128-
hasOwnProperty.call(config, propName) &&
129-
"key" !== propName &&
130-
(enableRefAsProp || "ref" !== propName) &&
128+
"key" === propName ||
129+
(!enableRefAsProp && "ref" === propName) ||
131130
(enableRefAsProp && "ref" === propName
132131
? (maybeKey.ref = coerceStringRef(
133132
config[propName],
@@ -708,7 +707,7 @@ exports.useSyncExternalStore = function (
708707
exports.useTransition = function () {
709708
return ReactCurrentDispatcher.current.useTransition();
710709
};
711-
exports.version = "19.0.0-www-modern-718fc0c7";
710+
exports.version = "19.0.0-www-modern-c3069b6b";
712711
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
713712
"function" ===
714713
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

compiled/facebook-www/ReactServer-dev.modern.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1530,11 +1530,8 @@ if (__DEV__) {
15301530
props = {};
15311531

15321532
for (var propName in config) {
1533-
if (
1534-
hasOwnProperty.call(config, propName) && // Skip over reserved prop names
1535-
propName !== "key" &&
1536-
(enableRefAsProp || propName !== "ref")
1537-
) {
1533+
// Skip over reserved prop names
1534+
if (propName !== "key" && (enableRefAsProp || propName !== "ref")) {
15381535
if (enableRefAsProp && !disableStringRefs && propName === "ref") {
15391536
props.ref = coerceStringRef(
15401537
config[propName],
@@ -3134,7 +3131,7 @@ if (__DEV__) {
31343131

31353132
function noop() {}
31363133

3137-
var ReactVersion = "19.0.0-www-modern-4e2ff20e";
3134+
var ReactVersion = "19.0.0-www-modern-c9d5711a";
31383135

31393136
// Patch fetch
31403137
var Children = {

compiled/facebook-www/ReactServer-prod.modern.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,8 @@ function jsxProd(type, config, maybeKey) {
8282
(ref = coerceStringRef(ref, ReactCurrentOwner.current, type)));
8383
maybeKey = {};
8484
for (var propName in config)
85-
hasOwnProperty.call(config, propName) &&
86-
"key" !== propName &&
87-
(enableRefAsProp || "ref" !== propName) &&
85+
"key" === propName ||
86+
(!enableRefAsProp && "ref" === propName) ||
8887
(enableRefAsProp && "ref" === propName
8988
? (maybeKey.ref = coerceStringRef(
9089
config[propName],
@@ -602,4 +601,4 @@ exports.useId = function () {
602601
exports.useMemo = function (create, deps) {
603602
return ReactCurrentDispatcher.current.useMemo(create, deps);
604603
};
605-
exports.version = "19.0.0-www-modern-ea5b7988";
604+
exports.version = "19.0.0-www-modern-9b5f5653";

0 commit comments

Comments
 (0)