Skip to content

Commit 3aca6a3

Browse files
committed
[compiler][gating] Experimental directive based gating (facebook#33149)
Adds `dynamicGating` as an experimental option for testing rollout DX at Meta. If specified, this enables dynamic gating which matches `use memo if(...)` directives. #### Example usage Input file ```js // @dynamicGating:{"source":"myModule"} export function MyComponent() { 'use memo if(isEnabled)'; return <div>...</div>; } ``` Compiler output ```js import {isEnabled} from 'myModule'; export const MyComponent = isEnabled() ? <optimized version> : <original version>; ``` --- [//]: # (BEGIN SAPLING FOOTER) Stack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/facebook/react/pull/33149). * __->__ facebook#33149 * facebook#33148 DiffTrain build for [459a2c4](facebook@459a2c4)
1 parent 314222b commit 3aca6a3

26 files changed

+916
-501
lines changed

compiled-rn/VERSION_NATIVE_FB

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
19.2.0-native-fb-d38c7e10-20250520
1+
19.2.0-native-fb-459a2c42-20250521

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-dev.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<6354e4bbab6aa803cd18acb3e6b94bb8>>
10+
* @generated SignedSource<<b54409e321be2dda465b9ee4b439c822>>
1111
*/
1212

1313
"use strict";
@@ -404,5 +404,5 @@ __DEV__ &&
404404
exports.useFormStatus = function () {
405405
return resolveDispatcher().useHostTransitionStatus();
406406
};
407-
exports.version = "19.2.0-native-fb-d38c7e10-20250520";
407+
exports.version = "19.2.0-native-fb-459a2c42-20250521";
408408
})();

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-prod.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<c0320e4a35d3eef5b2194342ed1d4a32>>
10+
* @generated SignedSource<<cba25d16e906fd3d3e8831ee06d0cc24>>
1111
*/
1212

1313
"use strict";
@@ -203,4 +203,4 @@ exports.useFormState = function (action, initialState, permalink) {
203203
exports.useFormStatus = function () {
204204
return ReactSharedInternals.H.useHostTransitionStatus();
205205
};
206-
exports.version = "19.2.0-native-fb-d38c7e10-20250520";
206+
exports.version = "19.2.0-native-fb-459a2c42-20250521";

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-profiling.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<c0320e4a35d3eef5b2194342ed1d4a32>>
10+
* @generated SignedSource<<cba25d16e906fd3d3e8831ee06d0cc24>>
1111
*/
1212

1313
"use strict";
@@ -203,4 +203,4 @@ exports.useFormState = function (action, initialState, permalink) {
203203
exports.useFormStatus = function () {
204204
return ReactSharedInternals.H.useHostTransitionStatus();
205205
};
206-
exports.version = "19.2.0-native-fb-d38c7e10-20250520";
206+
exports.version = "19.2.0-native-fb-459a2c42-20250521";

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-dev.js

Lines changed: 62 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<3d29db32a0fa1a5c960c5feea3e179bf>>
10+
* @generated SignedSource<<4710c19bfc6b0b8775c62c626520099a>>
1111
*/
1212

1313
/*
@@ -13195,11 +13195,16 @@ __DEV__ &&
1319513195
}
1319613196
}
1319713197
function commitNewChildToFragmentInstances(fiber, parentFragmentInstances) {
13198-
for (var i = 0; i < parentFragmentInstances.length; i++)
13199-
commitNewChildToFragmentInstance(
13200-
fiber.stateNode,
13201-
parentFragmentInstances[i]
13202-
);
13198+
if (
13199+
5 === fiber.tag &&
13200+
null === fiber.alternate &&
13201+
null !== parentFragmentInstances
13202+
)
13203+
for (var i = 0; i < parentFragmentInstances.length; i++)
13204+
commitNewChildToFragmentInstance(
13205+
fiber.stateNode,
13206+
parentFragmentInstances[i]
13207+
);
1320313208
}
1320413209
function commitFragmentInstanceDeletionEffects(fiber) {
1320513210
for (var parent = fiber.return; null !== parent; ) {
@@ -13259,39 +13264,36 @@ __DEV__ &&
1325913264
parentFragmentInstances
1326013265
) {
1326113266
var tag = node.tag;
13262-
if (5 === tag || 6 === tag) {
13263-
var stateNode = node.stateNode;
13264-
before
13265-
? (warnForReactChildrenConflict(parent),
13266-
(parent =
13267-
9 === parent.nodeType
13268-
? parent.body
13269-
: "HTML" === parent.nodeName
13270-
? parent.ownerDocument.body
13271-
: parent),
13272-
supportsMoveBefore && null !== stateNode.parentNode
13273-
? parent.moveBefore(stateNode, before)
13274-
: parent.insertBefore(stateNode, before))
13275-
: (warnForReactChildrenConflict(parent),
13276-
(before =
13277-
9 === parent.nodeType
13278-
? parent.body
13279-
: "HTML" === parent.nodeName
13280-
? parent.ownerDocument.body
13281-
: parent),
13282-
supportsMoveBefore && null !== stateNode.parentNode
13283-
? before.moveBefore(stateNode, null)
13284-
: before.appendChild(stateNode),
13285-
(stateNode = parent._reactRootContainer),
13286-
(null !== stateNode && void 0 !== stateNode) ||
13287-
null !== before.onclick ||
13288-
(before.onclick = noop$1));
13289-
enableFragmentRefs &&
13290-
5 === tag &&
13291-
null === node.alternate &&
13292-
null !== parentFragmentInstances &&
13293-
commitNewChildToFragmentInstances(node, parentFragmentInstances);
13294-
} else if (
13267+
if (5 === tag || 6 === tag)
13268+
(tag = node.stateNode),
13269+
before
13270+
? (warnForReactChildrenConflict(parent),
13271+
(parent =
13272+
9 === parent.nodeType
13273+
? parent.body
13274+
: "HTML" === parent.nodeName
13275+
? parent.ownerDocument.body
13276+
: parent),
13277+
supportsMoveBefore && null !== tag.parentNode
13278+
? parent.moveBefore(tag, before)
13279+
: parent.insertBefore(tag, before))
13280+
: (warnForReactChildrenConflict(parent),
13281+
(before =
13282+
9 === parent.nodeType
13283+
? parent.body
13284+
: "HTML" === parent.nodeName
13285+
? parent.ownerDocument.body
13286+
: parent),
13287+
supportsMoveBefore && null !== tag.parentNode
13288+
? before.moveBefore(tag, null)
13289+
: before.appendChild(tag),
13290+
(tag = parent._reactRootContainer),
13291+
(null !== tag && void 0 !== tag) ||
13292+
null !== before.onclick ||
13293+
(before.onclick = noop$1)),
13294+
enableFragmentRefs &&
13295+
commitNewChildToFragmentInstances(node, parentFragmentInstances);
13296+
else if (
1329513297
4 !== tag &&
1329613298
(27 === tag &&
1329713299
isSingletonScope(node.type) &&
@@ -13325,22 +13327,19 @@ __DEV__ &&
1332513327
parentFragmentInstances
1332613328
) {
1332713329
var tag = node.tag;
13328-
if (5 === tag || 6 === tag) {
13329-
var stateNode = node.stateNode;
13330-
before
13331-
? supportsMoveBefore && null !== stateNode.parentNode
13332-
? parent.moveBefore(stateNode, before)
13333-
: parent.insertBefore(stateNode, before)
13334-
: ((before = parent),
13335-
supportsMoveBefore && null !== stateNode.parentNode
13336-
? before.moveBefore(stateNode, null)
13337-
: before.appendChild(stateNode));
13338-
enableFragmentRefs &&
13339-
5 === tag &&
13340-
null === node.alternate &&
13341-
null !== parentFragmentInstances &&
13342-
commitNewChildToFragmentInstances(node, parentFragmentInstances);
13343-
} else if (
13330+
if (5 === tag || 6 === tag)
13331+
(tag = node.stateNode),
13332+
before
13333+
? supportsMoveBefore && null !== tag.parentNode
13334+
? parent.moveBefore(tag, before)
13335+
: parent.insertBefore(tag, before)
13336+
: ((before = parent),
13337+
supportsMoveBefore && null !== tag.parentNode
13338+
? before.moveBefore(tag, null)
13339+
: before.appendChild(tag)),
13340+
enableFragmentRefs &&
13341+
commitNewChildToFragmentInstances(node, parentFragmentInstances);
13342+
else if (
1334413343
4 !== tag &&
1334513344
(27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),
1334613345
(node = node.child),
@@ -21249,20 +21248,20 @@ __DEV__ &&
2124921248
}
2125021249
return -1;
2125121250
}
21252-
function commitNewChildToFragmentInstance(childElement, fragmentInstance) {
21251+
function commitNewChildToFragmentInstance(childInstance, fragmentInstance) {
2125321252
var eventListeners = fragmentInstance._eventListeners;
2125421253
if (null !== eventListeners)
2125521254
for (var i = 0; i < eventListeners.length; i++) {
2125621255
var _eventListeners$i2 = eventListeners[i];
21257-
childElement.addEventListener(
21256+
childInstance.addEventListener(
2125821257
_eventListeners$i2.type,
2125921258
_eventListeners$i2.listener,
2126021259
_eventListeners$i2.optionsOrUseCapture
2126121260
);
2126221261
}
2126321262
null !== fragmentInstance._observers &&
2126421263
fragmentInstance._observers.forEach(function (observer) {
21265-
observer.observe(childElement);
21264+
observer.observe(childInstance);
2126621265
});
2126721266
}
2126821267
function clearContainerSparingly(container) {
@@ -27027,11 +27026,11 @@ __DEV__ &&
2702727026
};
2702827027
(function () {
2702927028
var isomorphicReactPackageVersion = React.version;
27030-
if ("19.2.0-native-fb-d38c7e10-20250520" !== isomorphicReactPackageVersion)
27029+
if ("19.2.0-native-fb-459a2c42-20250521" !== isomorphicReactPackageVersion)
2703127030
throw Error(
2703227031
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
2703327032
(isomorphicReactPackageVersion +
27034-
"\n - react-dom: 19.2.0-native-fb-d38c7e10-20250520\nLearn more: https://react.dev/warnings/version-mismatch")
27033+
"\n - react-dom: 19.2.0-native-fb-459a2c42-20250521\nLearn more: https://react.dev/warnings/version-mismatch")
2703527034
);
2703627035
})();
2703727036
("function" === typeof Map &&
@@ -27068,10 +27067,10 @@ __DEV__ &&
2706827067
!(function () {
2706927068
var internals = {
2707027069
bundleType: 1,
27071-
version: "19.2.0-native-fb-d38c7e10-20250520",
27070+
version: "19.2.0-native-fb-459a2c42-20250521",
2707227071
rendererPackageName: "react-dom",
2707327072
currentDispatcherRef: ReactSharedInternals,
27074-
reconcilerVersion: "19.2.0-native-fb-d38c7e10-20250520"
27073+
reconcilerVersion: "19.2.0-native-fb-459a2c42-20250521"
2707527074
};
2707627075
internals.overrideHookState = overrideHookState;
2707727076
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -27209,5 +27208,5 @@ __DEV__ &&
2720927208
listenToAllSupportedEvents(container);
2721027209
return new ReactDOMHydrationRoot(initialChildren);
2721127210
};
27212-
exports.version = "19.2.0-native-fb-d38c7e10-20250520";
27211+
exports.version = "19.2.0-native-fb-459a2c42-20250521";
2721327212
})();

0 commit comments

Comments
 (0)