[Fiber] Don't wait on Suspensey Images if we guess that we don't load them all in time anyway (#34481)

Stacked on #34478.

In general we don't like to deal with timeouts in suspense world. We've
had that in the past but in general it doesn't work well because if you
have a timeout and then give up you made everything wait longer for no
benefit at the end. That's why the recommendation is to remove a
Suspense boundary if you expect it to be fast and add one if you expect
it to be slow. You have to estimate as the developer.

Suspensey images suffer from this same problem. We want to apply
suspensey images to as much as possible so that it's the default to
avoid flashing because if just a few images flash it's still almost as
bad as all of them. However, we do know that it's also very common to
use images and on a slow connection or many images, it's not worth it so
we have the timeout to eventually give up.

However, this means that in cases that are always slow or connections
that are always slow, you're always punished for no reason.

Suspensey images is mainly a polish feature to make high end experiences
on high end connections better but we don't want to unnecessarily punish
all slow connections in the process or things like lots of images below
the viewport.

This PR adds an estimate for whether or not we'll likely be able to load
all the images within the timeout on a high end enough connection. If
not, we'll still do a short suspend (unless we've already exceeded the
wait time adjusted for #34478) to allow loading from cache if available.

This estimate is based on two heuristics:

1) We compute an estimated bandwidth available on the current device in
mbps. This is computed from performance entries that have loaded static
resources already on the site. E.g. this can be other images, css, or
scripts. We see how long they took. If we don't have any entries (or if
they're all cross-origin in Safari) we fallback to
`navigator.connection.downlink` in Chrome or a 5mbps default in
Firefox/Safari.
2) To estimate how many bytes we'll have to download we use the
width/height props of the img tag if available (or a 100 pixel default)
times the device pixel ratio. We assume that a good img implementation
downloads proper resolution image for the device and defines a
width/height up front to avoid layout trash. Then we estimate that it
takes about 0.25 bytes per pixel which is somewhat conservative
estimate.

This is somewhat conservative given that the image could've been
preloaded and be better compressed.

So it really only kicks in for high end connections that are known to
load fast.

In a follow up, we can add an additional wait for View Transitions that
does the same estimate but only for the images that turn out to be in
viewport.

DiffTrain build for [ae22247dce](https://github.com/facebook/react/commit/ae22247dce1449574cd324cae0d8aa0d4824a937)
This commit is contained in:
sebmarkbage
2025-09-15 13:16:12 -07:00
parent eabed3aebd
commit 02ca3f9422
24 changed files with 579 additions and 149 deletions
+1 -1
View File
@@ -1 +1 @@
19.2.0-native-fb-e3f19180-20250915
19.2.0-native-fb-ae22247d-20250915
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<7843507958dab8de6d8cd79d77778079>>
* @generated SignedSource<<23cc05fee84e9c81ab6a7406c14940e4>>
*/
"use strict";
@@ -404,5 +404,5 @@ __DEV__ &&
exports.useFormStatus = function () {
return resolveDispatcher().useHostTransitionStatus();
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
})();
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<3c9853534e2eba8cfe4d1792a871aad8>>
* @generated SignedSource<<f1a85f07f5eb7f943a9570b9d401499f>>
*/
"use strict";
@@ -203,4 +203,4 @@ exports.useFormState = function (action, initialState, permalink) {
exports.useFormStatus = function () {
return ReactSharedInternals.H.useHostTransitionStatus();
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<3c9853534e2eba8cfe4d1792a871aad8>>
* @generated SignedSource<<f1a85f07f5eb7f943a9570b9d401499f>>
*/
"use strict";
@@ -203,4 +203,4 @@ exports.useFormState = function (action, initialState, permalink) {
exports.useFormStatus = function () {
return ReactSharedInternals.H.useHostTransitionStatus();
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<067121c2f01030f44e5bc3c0acd60ecf>>
* @generated SignedSource<<e3366cdf976d39d2536c708f8a0a9f81>>
*/
/*
@@ -17676,6 +17676,7 @@ __DEV__ &&
stylesheets: null,
count: 0,
imgCount: 0,
imgBytes: 0,
waitingForImages: !0,
unsuspend: noop$1
}),
@@ -23165,6 +23166,71 @@ __DEV__ &&
);
}
}
function isLikelyStaticResource(initiatorType) {
switch (initiatorType) {
case "css":
case "script":
case "font":
case "img":
case "image":
case "input":
case "link":
return !0;
default:
return !1;
}
}
function estimateBandwidth() {
if ("function" === typeof performance.getEntriesByType) {
for (
var count = 0,
bits = 0,
resourceEntries = performance.getEntriesByType("resource"),
i = 0;
i < resourceEntries.length;
i++
) {
var entry = resourceEntries[i],
transferSize = entry.transferSize,
initiatorType = entry.initiatorType,
duration = entry.duration;
if (
transferSize &&
duration &&
isLikelyStaticResource(initiatorType)
) {
initiatorType = 0;
duration = entry.responseEnd;
for (i += 1; i < resourceEntries.length; i++) {
var overlapEntry = resourceEntries[i],
overlapStartTime = overlapEntry.startTime;
if (overlapStartTime > duration) break;
var overlapTransferSize = overlapEntry.transferSize,
overlapInitiatorType = overlapEntry.initiatorType;
overlapTransferSize &&
isLikelyStaticResource(overlapInitiatorType) &&
((overlapEntry = overlapEntry.responseEnd),
(initiatorType +=
overlapTransferSize *
(overlapEntry < duration
? 1
: (duration - overlapStartTime) /
(overlapEntry - overlapStartTime))));
}
--i;
bits +=
(8 * (transferSize + initiatorType)) / (entry.duration / 1e3);
count++;
if (10 < count) break;
}
}
if (0 < count) return bits / count / 1e6;
}
return navigator.connection &&
((count = navigator.connection.downlink), "number" === typeof count)
? count
: 5;
}
function getOwnerDocumentFromRootContainer(rootContainerElement) {
return 9 === rootContainerElement.nodeType
? rootContainerElement
@@ -24639,15 +24705,20 @@ __DEV__ &&
return 0 < state.count || 0 < state.imgCount
? function (commit) {
var stylesheetTimer = setTimeout(function () {
state.stylesheets &&
insertSuspendedStylesheets(state, state.stylesheets);
if (state.unsuspend) {
var unsuspend = state.unsuspend;
state.unsuspend = null;
unsuspend();
}
}, SUSPENSEY_STYLESHEET_TIMEOUT + timeoutOffset),
imgTimer = setTimeout(function () {
state.stylesheets &&
insertSuspendedStylesheets(state, state.stylesheets);
if (state.unsuspend) {
var unsuspend = state.unsuspend;
state.unsuspend = null;
unsuspend();
}
}, SUSPENSEY_STYLESHEET_TIMEOUT + timeoutOffset);
0 < state.imgBytes &&
0 === estimatedBytesWithinLimit &&
(estimatedBytesWithinLimit =
125 * estimateBandwidth() * SUSPENSEY_IMAGE_TIME_ESTIMATE);
var imgTimer = setTimeout(
function () {
state.waitingForImages = !1;
if (
0 === state.count &&
@@ -24659,7 +24730,11 @@ __DEV__ &&
state.unsuspend = null;
unsuspend();
}
}, SUSPENSEY_IMAGE_TIMEOUT + timeoutOffset);
},
(state.imgBytes > estimatedBytesWithinLimit
? 50
: SUSPENSEY_IMAGE_TIMEOUT) + timeoutOffset
);
state.unsuspend = commit;
return function () {
state.unsuspend = null;
@@ -29488,7 +29563,9 @@ __DEV__ &&
tagCaches = null,
suspendedState = null,
SUSPENSEY_STYLESHEET_TIMEOUT = 6e4,
SUSPENSEY_IMAGE_TIMEOUT = 500,
SUSPENSEY_IMAGE_TIMEOUT = 800,
SUSPENSEY_IMAGE_TIME_ESTIMATE = 500,
estimatedBytesWithinLimit = 0,
LAST_PRECEDENCE = null,
precedencesByRoot = null,
NotPendingTransition = NotPending,
@@ -29654,11 +29731,11 @@ __DEV__ &&
};
(function () {
var isomorphicReactPackageVersion = React.version;
if ("19.2.0-native-fb-e3f19180-20250915" !== isomorphicReactPackageVersion)
if ("19.2.0-native-fb-ae22247d-20250915" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-dom: 19.2.0-native-fb-e3f19180-20250915\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-dom: 19.2.0-native-fb-ae22247d-20250915\nLearn more: https://react.dev/warnings/version-mismatch")
);
})();
("function" === typeof Map &&
@@ -29695,10 +29772,10 @@ __DEV__ &&
!(function () {
var internals = {
bundleType: 1,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-dom",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915"
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -29847,5 +29924,5 @@ __DEV__ &&
listenToAllSupportedEvents(container);
return new ReactDOMHydrationRoot(initialChildren);
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
})();
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<ccfeb8b9b258fc79d3617b86111b456b>>
* @generated SignedSource<<5612290c13f4ab16126fa19519c127ae>>
*/
/*
@@ -11692,6 +11692,7 @@ function commitRootWhenReady(
stylesheets: null,
count: 0,
imgCount: 0,
imgBytes: 0,
waitingForImages: !0,
unsuspend: noop$1
}),
@@ -14950,6 +14951,66 @@ function updateProperties(domElement, tag, lastProps, nextProps) {
(null == propKey$217 && null == propKey) ||
setProp(domElement, tag, lastProp, propKey$217, nextProps, propKey);
}
function isLikelyStaticResource(initiatorType) {
switch (initiatorType) {
case "css":
case "script":
case "font":
case "img":
case "image":
case "input":
case "link":
return !0;
default:
return !1;
}
}
function estimateBandwidth() {
if ("function" === typeof performance.getEntriesByType) {
for (
var count = 0,
bits = 0,
resourceEntries = performance.getEntriesByType("resource"),
i = 0;
i < resourceEntries.length;
i++
) {
var entry = resourceEntries[i],
transferSize = entry.transferSize,
initiatorType = entry.initiatorType,
duration = entry.duration;
if (transferSize && duration && isLikelyStaticResource(initiatorType)) {
initiatorType = 0;
duration = entry.responseEnd;
for (i += 1; i < resourceEntries.length; i++) {
var overlapEntry = resourceEntries[i],
overlapStartTime = overlapEntry.startTime;
if (overlapStartTime > duration) break;
var overlapTransferSize = overlapEntry.transferSize,
overlapInitiatorType = overlapEntry.initiatorType;
overlapTransferSize &&
isLikelyStaticResource(overlapInitiatorType) &&
((overlapEntry = overlapEntry.responseEnd),
(initiatorType +=
overlapTransferSize *
(overlapEntry < duration
? 1
: (duration - overlapStartTime) /
(overlapEntry - overlapStartTime))));
}
--i;
bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);
count++;
if (10 < count) break;
}
}
if (0 < count) return bits / count / 1e6;
}
return navigator.connection &&
((count = navigator.connection.downlink), "number" === typeof count)
? count
: 5;
}
var eventsEnabled = null,
selectionInformation = null;
function getOwnerDocumentFromRootContainer(rootContainerElement) {
@@ -16496,6 +16557,7 @@ function suspendResource(hoistableRoot, resource, props) {
hoistableRoot.addEventListener("error", resource));
}
}
var estimatedBytesWithinLimit = 0;
function waitForCommitToBeReady(timeoutOffset) {
if (null === suspendedState) throw Error(formatProdErrorMessage(475));
var state = suspendedState;
@@ -16505,15 +16567,19 @@ function waitForCommitToBeReady(timeoutOffset) {
return 0 < state.count || 0 < state.imgCount
? function (commit) {
var stylesheetTimer = setTimeout(function () {
state.stylesheets &&
insertSuspendedStylesheets(state, state.stylesheets);
if (state.unsuspend) {
var unsuspend = state.unsuspend;
state.unsuspend = null;
unsuspend();
}
}, 6e4 + timeoutOffset),
imgTimer = setTimeout(function () {
state.stylesheets &&
insertSuspendedStylesheets(state, state.stylesheets);
if (state.unsuspend) {
var unsuspend = state.unsuspend;
state.unsuspend = null;
unsuspend();
}
}, 6e4 + timeoutOffset);
0 < state.imgBytes &&
0 === estimatedBytesWithinLimit &&
(estimatedBytesWithinLimit = 62500 * estimateBandwidth());
var imgTimer = setTimeout(
function () {
state.waitingForImages = !1;
if (
0 === state.count &&
@@ -16525,7 +16591,10 @@ function waitForCommitToBeReady(timeoutOffset) {
state.unsuspend = null;
unsuspend();
}
}, 500 + timeoutOffset);
},
(state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +
timeoutOffset
);
state.unsuspend = commit;
return function () {
state.unsuspend = null;
@@ -17416,14 +17485,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
};
var isomorphicReactPackageVersion$jscomp$inline_2073 = React.version;
if (
"19.2.0-native-fb-e3f19180-20250915" !==
"19.2.0-native-fb-ae22247d-20250915" !==
isomorphicReactPackageVersion$jscomp$inline_2073
)
throw Error(
formatProdErrorMessage(
527,
isomorphicReactPackageVersion$jscomp$inline_2073,
"19.2.0-native-fb-e3f19180-20250915"
"19.2.0-native-fb-ae22247d-20250915"
)
);
ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -17445,10 +17514,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
};
var internals$jscomp$inline_2646 = {
bundleType: 0,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-dom",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915"
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_2647 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -17555,4 +17624,4 @@ exports.hydrateRoot = function (container, initialChildren, options) {
listenToAllSupportedEvents(container);
return new ReactDOMHydrationRoot(initialChildren);
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<b0fa422d6e0ed7510d33a0c8a251f546>>
* @generated SignedSource<<6339ceff9ac385fad681171f8e6f6e68>>
*/
/*
@@ -13187,6 +13187,7 @@ function commitRootWhenReady(
stylesheets: null,
count: 0,
imgCount: 0,
imgBytes: 0,
waitingForImages: !0,
unsuspend: noop$1
}),
@@ -16942,6 +16943,66 @@ function updateProperties(domElement, tag, lastProps, nextProps) {
(null == propKey$254 && null == propKey) ||
setProp(domElement, tag, lastProp, propKey$254, nextProps, propKey);
}
function isLikelyStaticResource(initiatorType) {
switch (initiatorType) {
case "css":
case "script":
case "font":
case "img":
case "image":
case "input":
case "link":
return !0;
default:
return !1;
}
}
function estimateBandwidth() {
if ("function" === typeof performance.getEntriesByType) {
for (
var count = 0,
bits = 0,
resourceEntries = performance.getEntriesByType("resource"),
i = 0;
i < resourceEntries.length;
i++
) {
var entry = resourceEntries[i],
transferSize = entry.transferSize,
initiatorType = entry.initiatorType,
duration = entry.duration;
if (transferSize && duration && isLikelyStaticResource(initiatorType)) {
initiatorType = 0;
duration = entry.responseEnd;
for (i += 1; i < resourceEntries.length; i++) {
var overlapEntry = resourceEntries[i],
overlapStartTime = overlapEntry.startTime;
if (overlapStartTime > duration) break;
var overlapTransferSize = overlapEntry.transferSize,
overlapInitiatorType = overlapEntry.initiatorType;
overlapTransferSize &&
isLikelyStaticResource(overlapInitiatorType) &&
((overlapEntry = overlapEntry.responseEnd),
(initiatorType +=
overlapTransferSize *
(overlapEntry < duration
? 1
: (duration - overlapStartTime) /
(overlapEntry - overlapStartTime))));
}
--i;
bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);
count++;
if (10 < count) break;
}
}
if (0 < count) return bits / count / 1e6;
}
return navigator.connection &&
((count = navigator.connection.downlink), "number" === typeof count)
? count
: 5;
}
var eventsEnabled = null,
selectionInformation = null;
function getOwnerDocumentFromRootContainer(rootContainerElement) {
@@ -18497,6 +18558,7 @@ function suspendResource(hoistableRoot, resource, props) {
hoistableRoot.addEventListener("error", resource));
}
}
var estimatedBytesWithinLimit = 0;
function waitForCommitToBeReady(timeoutOffset) {
if (null === suspendedState) throw Error(formatProdErrorMessage(475));
var state = suspendedState;
@@ -18506,15 +18568,19 @@ function waitForCommitToBeReady(timeoutOffset) {
return 0 < state.count || 0 < state.imgCount
? function (commit) {
var stylesheetTimer = setTimeout(function () {
state.stylesheets &&
insertSuspendedStylesheets(state, state.stylesheets);
if (state.unsuspend) {
var unsuspend = state.unsuspend;
state.unsuspend = null;
unsuspend();
}
}, 6e4 + timeoutOffset),
imgTimer = setTimeout(function () {
state.stylesheets &&
insertSuspendedStylesheets(state, state.stylesheets);
if (state.unsuspend) {
var unsuspend = state.unsuspend;
state.unsuspend = null;
unsuspend();
}
}, 6e4 + timeoutOffset);
0 < state.imgBytes &&
0 === estimatedBytesWithinLimit &&
(estimatedBytesWithinLimit = 62500 * estimateBandwidth());
var imgTimer = setTimeout(
function () {
state.waitingForImages = !1;
if (
0 === state.count &&
@@ -18526,7 +18592,10 @@ function waitForCommitToBeReady(timeoutOffset) {
state.unsuspend = null;
unsuspend();
}
}, 500 + timeoutOffset);
},
(state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +
timeoutOffset
);
state.unsuspend = commit;
return function () {
state.unsuspend = null;
@@ -19426,14 +19495,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
};
var isomorphicReactPackageVersion$jscomp$inline_2330 = React.version;
if (
"19.2.0-native-fb-e3f19180-20250915" !==
"19.2.0-native-fb-ae22247d-20250915" !==
isomorphicReactPackageVersion$jscomp$inline_2330
)
throw Error(
formatProdErrorMessage(
527,
isomorphicReactPackageVersion$jscomp$inline_2330,
"19.2.0-native-fb-e3f19180-20250915"
"19.2.0-native-fb-ae22247d-20250915"
)
);
ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -19455,10 +19524,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
};
var internals$jscomp$inline_2337 = {
bundleType: 0,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-dom",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915",
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915",
getLaneLabelMap: function () {
for (
var map = new Map(), lane = 1, index$324 = 0;
@@ -19581,4 +19650,4 @@ exports.hydrateRoot = function (container, initialChildren, options) {
listenToAllSupportedEvents(container);
return new ReactDOMHydrationRoot(initialChildren);
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<24e447e11746aaf79f4a39a66eebffb0>>
* @generated SignedSource<<a083891d318d48f77e8e0d9374a8e222>>
*/
/*
@@ -17684,6 +17684,7 @@ __DEV__ &&
stylesheets: null,
count: 0,
imgCount: 0,
imgBytes: 0,
waitingForImages: !0,
unsuspend: noop$1
}),
@@ -23173,6 +23174,71 @@ __DEV__ &&
);
}
}
function isLikelyStaticResource(initiatorType) {
switch (initiatorType) {
case "css":
case "script":
case "font":
case "img":
case "image":
case "input":
case "link":
return !0;
default:
return !1;
}
}
function estimateBandwidth() {
if ("function" === typeof performance.getEntriesByType) {
for (
var count = 0,
bits = 0,
resourceEntries = performance.getEntriesByType("resource"),
i = 0;
i < resourceEntries.length;
i++
) {
var entry = resourceEntries[i],
transferSize = entry.transferSize,
initiatorType = entry.initiatorType,
duration = entry.duration;
if (
transferSize &&
duration &&
isLikelyStaticResource(initiatorType)
) {
initiatorType = 0;
duration = entry.responseEnd;
for (i += 1; i < resourceEntries.length; i++) {
var overlapEntry = resourceEntries[i],
overlapStartTime = overlapEntry.startTime;
if (overlapStartTime > duration) break;
var overlapTransferSize = overlapEntry.transferSize,
overlapInitiatorType = overlapEntry.initiatorType;
overlapTransferSize &&
isLikelyStaticResource(overlapInitiatorType) &&
((overlapEntry = overlapEntry.responseEnd),
(initiatorType +=
overlapTransferSize *
(overlapEntry < duration
? 1
: (duration - overlapStartTime) /
(overlapEntry - overlapStartTime))));
}
--i;
bits +=
(8 * (transferSize + initiatorType)) / (entry.duration / 1e3);
count++;
if (10 < count) break;
}
}
if (0 < count) return bits / count / 1e6;
}
return navigator.connection &&
((count = navigator.connection.downlink), "number" === typeof count)
? count
: 5;
}
function getOwnerDocumentFromRootContainer(rootContainerElement) {
return 9 === rootContainerElement.nodeType
? rootContainerElement
@@ -24647,15 +24713,20 @@ __DEV__ &&
return 0 < state.count || 0 < state.imgCount
? function (commit) {
var stylesheetTimer = setTimeout(function () {
state.stylesheets &&
insertSuspendedStylesheets(state, state.stylesheets);
if (state.unsuspend) {
var unsuspend = state.unsuspend;
state.unsuspend = null;
unsuspend();
}
}, SUSPENSEY_STYLESHEET_TIMEOUT + timeoutOffset),
imgTimer = setTimeout(function () {
state.stylesheets &&
insertSuspendedStylesheets(state, state.stylesheets);
if (state.unsuspend) {
var unsuspend = state.unsuspend;
state.unsuspend = null;
unsuspend();
}
}, SUSPENSEY_STYLESHEET_TIMEOUT + timeoutOffset);
0 < state.imgBytes &&
0 === estimatedBytesWithinLimit &&
(estimatedBytesWithinLimit =
125 * estimateBandwidth() * SUSPENSEY_IMAGE_TIME_ESTIMATE);
var imgTimer = setTimeout(
function () {
state.waitingForImages = !1;
if (
0 === state.count &&
@@ -24667,7 +24738,11 @@ __DEV__ &&
state.unsuspend = null;
unsuspend();
}
}, SUSPENSEY_IMAGE_TIMEOUT + timeoutOffset);
},
(state.imgBytes > estimatedBytesWithinLimit
? 50
: SUSPENSEY_IMAGE_TIMEOUT) + timeoutOffset
);
state.unsuspend = commit;
return function () {
state.unsuspend = null;
@@ -29544,7 +29619,9 @@ __DEV__ &&
tagCaches = null,
suspendedState = null,
SUSPENSEY_STYLESHEET_TIMEOUT = 6e4,
SUSPENSEY_IMAGE_TIMEOUT = 500,
SUSPENSEY_IMAGE_TIMEOUT = 800,
SUSPENSEY_IMAGE_TIME_ESTIMATE = 500,
estimatedBytesWithinLimit = 0,
LAST_PRECEDENCE = null,
precedencesByRoot = null,
NotPendingTransition = NotPending,
@@ -29710,11 +29787,11 @@ __DEV__ &&
};
(function () {
var isomorphicReactPackageVersion = React.version;
if ("19.2.0-native-fb-e3f19180-20250915" !== isomorphicReactPackageVersion)
if ("19.2.0-native-fb-ae22247d-20250915" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-dom: 19.2.0-native-fb-e3f19180-20250915\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-dom: 19.2.0-native-fb-ae22247d-20250915\nLearn more: https://react.dev/warnings/version-mismatch")
);
})();
("function" === typeof Map &&
@@ -29751,10 +29828,10 @@ __DEV__ &&
!(function () {
var internals = {
bundleType: 1,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-dom",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915"
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -30219,7 +30296,7 @@ __DEV__ &&
exports.useFormStatus = function () {
return resolveDispatcher().useHostTransitionStatus();
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<38bb3513f6965b6367b9326591057a65>>
* @generated SignedSource<<f2c3534c10a953be5befb97e1c2f673d>>
*/
/*
@@ -11692,6 +11692,7 @@ function commitRootWhenReady(
stylesheets: null,
count: 0,
imgCount: 0,
imgBytes: 0,
waitingForImages: !0,
unsuspend: noop$1
}),
@@ -14950,6 +14951,66 @@ function updateProperties(domElement, tag, lastProps, nextProps) {
(null == propKey$217 && null == propKey) ||
setProp(domElement, tag, lastProp, propKey$217, nextProps, propKey);
}
function isLikelyStaticResource(initiatorType) {
switch (initiatorType) {
case "css":
case "script":
case "font":
case "img":
case "image":
case "input":
case "link":
return !0;
default:
return !1;
}
}
function estimateBandwidth() {
if ("function" === typeof performance.getEntriesByType) {
for (
var count = 0,
bits = 0,
resourceEntries = performance.getEntriesByType("resource"),
i = 0;
i < resourceEntries.length;
i++
) {
var entry = resourceEntries[i],
transferSize = entry.transferSize,
initiatorType = entry.initiatorType,
duration = entry.duration;
if (transferSize && duration && isLikelyStaticResource(initiatorType)) {
initiatorType = 0;
duration = entry.responseEnd;
for (i += 1; i < resourceEntries.length; i++) {
var overlapEntry = resourceEntries[i],
overlapStartTime = overlapEntry.startTime;
if (overlapStartTime > duration) break;
var overlapTransferSize = overlapEntry.transferSize,
overlapInitiatorType = overlapEntry.initiatorType;
overlapTransferSize &&
isLikelyStaticResource(overlapInitiatorType) &&
((overlapEntry = overlapEntry.responseEnd),
(initiatorType +=
overlapTransferSize *
(overlapEntry < duration
? 1
: (duration - overlapStartTime) /
(overlapEntry - overlapStartTime))));
}
--i;
bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);
count++;
if (10 < count) break;
}
}
if (0 < count) return bits / count / 1e6;
}
return navigator.connection &&
((count = navigator.connection.downlink), "number" === typeof count)
? count
: 5;
}
var eventsEnabled = null,
selectionInformation = null;
function getOwnerDocumentFromRootContainer(rootContainerElement) {
@@ -16496,6 +16557,7 @@ function suspendResource(hoistableRoot, resource, props) {
hoistableRoot.addEventListener("error", resource));
}
}
var estimatedBytesWithinLimit = 0;
function waitForCommitToBeReady(timeoutOffset) {
if (null === suspendedState) throw Error(formatProdErrorMessage(475));
var state = suspendedState;
@@ -16505,15 +16567,19 @@ function waitForCommitToBeReady(timeoutOffset) {
return 0 < state.count || 0 < state.imgCount
? function (commit) {
var stylesheetTimer = setTimeout(function () {
state.stylesheets &&
insertSuspendedStylesheets(state, state.stylesheets);
if (state.unsuspend) {
var unsuspend = state.unsuspend;
state.unsuspend = null;
unsuspend();
}
}, 6e4 + timeoutOffset),
imgTimer = setTimeout(function () {
state.stylesheets &&
insertSuspendedStylesheets(state, state.stylesheets);
if (state.unsuspend) {
var unsuspend = state.unsuspend;
state.unsuspend = null;
unsuspend();
}
}, 6e4 + timeoutOffset);
0 < state.imgBytes &&
0 === estimatedBytesWithinLimit &&
(estimatedBytesWithinLimit = 62500 * estimateBandwidth());
var imgTimer = setTimeout(
function () {
state.waitingForImages = !1;
if (
0 === state.count &&
@@ -16525,7 +16591,10 @@ function waitForCommitToBeReady(timeoutOffset) {
state.unsuspend = null;
unsuspend();
}
}, 500 + timeoutOffset);
},
(state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +
timeoutOffset
);
state.unsuspend = commit;
return function () {
state.unsuspend = null;
@@ -17427,14 +17496,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
};
var isomorphicReactPackageVersion$jscomp$inline_2074 = React.version;
if (
"19.2.0-native-fb-e3f19180-20250915" !==
"19.2.0-native-fb-ae22247d-20250915" !==
isomorphicReactPackageVersion$jscomp$inline_2074
)
throw Error(
formatProdErrorMessage(
527,
isomorphicReactPackageVersion$jscomp$inline_2074,
"19.2.0-native-fb-e3f19180-20250915"
"19.2.0-native-fb-ae22247d-20250915"
)
);
ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -17456,10 +17525,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
};
var internals$jscomp$inline_2649 = {
bundleType: 0,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-dom",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915"
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_2650 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -17719,4 +17788,4 @@ exports.useFormState = function (action, initialState, permalink) {
exports.useFormStatus = function () {
return ReactSharedInternals.H.useHostTransitionStatus();
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<581cf6bd8002ca508e76ddf3bb3c361d>>
* @generated SignedSource<<ca026df7cda8c9e830bc017efd9b2cff>>
*/
/*
@@ -13191,6 +13191,7 @@ function commitRootWhenReady(
stylesheets: null,
count: 0,
imgCount: 0,
imgBytes: 0,
waitingForImages: !0,
unsuspend: noop$1
}),
@@ -16946,6 +16947,66 @@ function updateProperties(domElement, tag, lastProps, nextProps) {
(null == propKey$254 && null == propKey) ||
setProp(domElement, tag, lastProp, propKey$254, nextProps, propKey);
}
function isLikelyStaticResource(initiatorType) {
switch (initiatorType) {
case "css":
case "script":
case "font":
case "img":
case "image":
case "input":
case "link":
return !0;
default:
return !1;
}
}
function estimateBandwidth() {
if ("function" === typeof performance.getEntriesByType) {
for (
var count = 0,
bits = 0,
resourceEntries = performance.getEntriesByType("resource"),
i = 0;
i < resourceEntries.length;
i++
) {
var entry = resourceEntries[i],
transferSize = entry.transferSize,
initiatorType = entry.initiatorType,
duration = entry.duration;
if (transferSize && duration && isLikelyStaticResource(initiatorType)) {
initiatorType = 0;
duration = entry.responseEnd;
for (i += 1; i < resourceEntries.length; i++) {
var overlapEntry = resourceEntries[i],
overlapStartTime = overlapEntry.startTime;
if (overlapStartTime > duration) break;
var overlapTransferSize = overlapEntry.transferSize,
overlapInitiatorType = overlapEntry.initiatorType;
overlapTransferSize &&
isLikelyStaticResource(overlapInitiatorType) &&
((overlapEntry = overlapEntry.responseEnd),
(initiatorType +=
overlapTransferSize *
(overlapEntry < duration
? 1
: (duration - overlapStartTime) /
(overlapEntry - overlapStartTime))));
}
--i;
bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);
count++;
if (10 < count) break;
}
}
if (0 < count) return bits / count / 1e6;
}
return navigator.connection &&
((count = navigator.connection.downlink), "number" === typeof count)
? count
: 5;
}
var eventsEnabled = null,
selectionInformation = null;
function getOwnerDocumentFromRootContainer(rootContainerElement) {
@@ -18501,6 +18562,7 @@ function suspendResource(hoistableRoot, resource, props) {
hoistableRoot.addEventListener("error", resource));
}
}
var estimatedBytesWithinLimit = 0;
function waitForCommitToBeReady(timeoutOffset) {
if (null === suspendedState) throw Error(formatProdErrorMessage(475));
var state = suspendedState;
@@ -18510,15 +18572,19 @@ function waitForCommitToBeReady(timeoutOffset) {
return 0 < state.count || 0 < state.imgCount
? function (commit) {
var stylesheetTimer = setTimeout(function () {
state.stylesheets &&
insertSuspendedStylesheets(state, state.stylesheets);
if (state.unsuspend) {
var unsuspend = state.unsuspend;
state.unsuspend = null;
unsuspend();
}
}, 6e4 + timeoutOffset),
imgTimer = setTimeout(function () {
state.stylesheets &&
insertSuspendedStylesheets(state, state.stylesheets);
if (state.unsuspend) {
var unsuspend = state.unsuspend;
state.unsuspend = null;
unsuspend();
}
}, 6e4 + timeoutOffset);
0 < state.imgBytes &&
0 === estimatedBytesWithinLimit &&
(estimatedBytesWithinLimit = 62500 * estimateBandwidth());
var imgTimer = setTimeout(
function () {
state.waitingForImages = !1;
if (
0 === state.count &&
@@ -18530,7 +18596,10 @@ function waitForCommitToBeReady(timeoutOffset) {
state.unsuspend = null;
unsuspend();
}
}, 500 + timeoutOffset);
},
(state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +
timeoutOffset
);
state.unsuspend = commit;
return function () {
state.unsuspend = null;
@@ -19441,14 +19510,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
};
var isomorphicReactPackageVersion$jscomp$inline_2331 = React.version;
if (
"19.2.0-native-fb-e3f19180-20250915" !==
"19.2.0-native-fb-ae22247d-20250915" !==
isomorphicReactPackageVersion$jscomp$inline_2331
)
throw Error(
formatProdErrorMessage(
527,
isomorphicReactPackageVersion$jscomp$inline_2331,
"19.2.0-native-fb-e3f19180-20250915"
"19.2.0-native-fb-ae22247d-20250915"
)
);
ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -19470,10 +19539,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
};
var internals$jscomp$inline_2338 = {
bundleType: 0,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-dom",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915",
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915",
getLaneLabelMap: function () {
for (
var map = new Map(), lane = 1, index$324 = 0;
@@ -19749,7 +19818,7 @@ exports.useFormState = function (action, initialState, permalink) {
exports.useFormStatus = function () {
return ReactSharedInternals.H.useHostTransitionStatus();
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<82babe7a746b7ae10ce86a4203884fb0>>
* @generated SignedSource<<1ea0ef7b0de8057d1f1001506c606ce2>>
*/
"use strict";
@@ -15920,10 +15920,10 @@ __DEV__ &&
(function () {
var internals = {
bundleType: 1,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-test-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915"
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -16068,5 +16068,5 @@ __DEV__ &&
flushSyncWorkAcrossRoots_impl(0, !0));
}
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
})();
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<647d4e2e707ef73dbb2293852c14709e>>
* @generated SignedSource<<d0edbcb52bdd25183c3f64bc325ca30f>>
*/
"use strict";
@@ -10052,10 +10052,10 @@ function wrapFiber(fiber) {
}
var internals$jscomp$inline_1482 = {
bundleType: 0,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-test-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915"
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1483 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -10191,4 +10191,4 @@ exports.unstable_batchedUpdates = function (fn, a) {
flushSyncWorkAcrossRoots_impl(0, !0));
}
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<c0191a58d0fa4817a2695be01255141c>>
* @generated SignedSource<<4e40f314cdd7214fac62a77793ae9149>>
*/
"use strict";
@@ -10673,10 +10673,10 @@ function wrapFiber(fiber) {
}
var internals$jscomp$inline_1273 = {
bundleType: 0,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-test-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915",
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915",
getLaneLabelMap: function () {
for (
var map = new Map(), lane = 1, index$145 = 0;
@@ -10827,4 +10827,4 @@ exports.unstable_batchedUpdates = function (fn, a) {
flushSyncWorkAcrossRoots_impl(0, !0));
}
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<2443a468d58fefc9a084147c53a8cee6>>
* @generated SignedSource<<5ccf81bdf7151d9b20f6abdd8596b285>>
*/
"use strict";
@@ -1398,7 +1398,7 @@ __DEV__ &&
exports.useTransition = function () {
return resolveDispatcher().useTransition();
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<65f91d16ab317a0a11e0522c6e1c739b>>
* @generated SignedSource<<dc6d8e873d391486c517b53274a8dca4>>
*/
"use strict";
@@ -581,4 +581,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<21d034deb2c70dfab42c0a6d201ec61a>>
* @generated SignedSource<<2be87a0d6d8cedb62c70152034c77b5b>>
*/
"use strict";
@@ -585,7 +585,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.2.0-native-fb-e3f19180-20250915";
exports.version = "19.2.0-native-fb-ae22247d-20250915";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
@@ -1 +1 @@
e3f191803cbe53df360b32f6735b05bb969c55cf
ae22247dce1449574cd324cae0d8aa0d4824a937
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<cb2bb284135946042e0a36a5d80f4a38>>
* @generated SignedSource<<736d87b1a32c592528681932dbaa3bf1>>
*/
"use strict";
@@ -19762,10 +19762,10 @@ __DEV__ &&
(function () {
var internals = {
bundleType: 1,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-native-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915"
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915"
};
null !== extraDevToolsConfig &&
(internals.rendererConfig = extraDevToolsConfig);
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<6e1227b5bcd5048a71a24fa69a1a9ee4>>
* @generated SignedSource<<500541f76d8d8249f88211289807e0c8>>
*/
"use strict";
@@ -11218,10 +11218,10 @@ batchedUpdatesImpl = function (fn, a) {
var roots = new Map(),
internals$jscomp$inline_1294 = {
bundleType: 0,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-native-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915"
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915"
};
null !== extraDevToolsConfig &&
(internals$jscomp$inline_1294.rendererConfig = extraDevToolsConfig);
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<ebbe56c90e9422fcc4ea087e9ed30eed>>
* @generated SignedSource<<d2922f4ca45b97abaa6111df322bf88a>>
*/
"use strict";
@@ -13171,10 +13171,10 @@ batchedUpdatesImpl = function (fn, a) {
var roots = new Map(),
internals$jscomp$inline_1544 = {
bundleType: 0,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-native-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915"
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915"
};
null !== extraDevToolsConfig &&
(internals$jscomp$inline_1544.rendererConfig = extraDevToolsConfig);
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<7ff8d6434508a8cb65cafe0e2c89c5d5>>
* @generated SignedSource<<40b25681d9cf71cc8b4af8d5bf21f648>>
*/
"use strict";
@@ -20042,11 +20042,11 @@ __DEV__ &&
shouldSuspendImpl = newShouldSuspendImpl;
};
var isomorphicReactPackageVersion = React.version;
if ("19.2.0-native-fb-e3f19180-20250915" !== isomorphicReactPackageVersion)
if ("19.2.0-native-fb-ae22247d-20250915" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-native-renderer" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-native-renderer: 19.2.0-native-fb-e3f19180-20250915\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-native-renderer: 19.2.0-native-fb-ae22247d-20250915\nLearn more: https://react.dev/warnings/version-mismatch")
);
if (
"function" !==
@@ -20072,10 +20072,10 @@ __DEV__ &&
(function () {
var internals = {
bundleType: 1,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-native-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915"
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915"
};
null !== extraDevToolsConfig &&
(internals.rendererConfig = extraDevToolsConfig);
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<065268dd116426f4aec7ba1ebca2f9d3>>
* @generated SignedSource<<63b762360310c197c6aff5da5b8167f9>>
*/
"use strict";
@@ -11377,11 +11377,11 @@ function updateContainer(element, container, parentComponent, callback) {
return lane;
}
var isomorphicReactPackageVersion = React.version;
if ("19.2.0-native-fb-e3f19180-20250915" !== isomorphicReactPackageVersion)
if ("19.2.0-native-fb-ae22247d-20250915" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-native-renderer" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-native-renderer: 19.2.0-native-fb-e3f19180-20250915\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-native-renderer: 19.2.0-native-fb-ae22247d-20250915\nLearn more: https://react.dev/warnings/version-mismatch")
);
if (
"function" !==
@@ -11431,10 +11431,10 @@ batchedUpdatesImpl = function (fn, a) {
var roots = new Map(),
internals$jscomp$inline_1325 = {
bundleType: 0,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-native-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915"
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915"
};
null !== extraDevToolsConfig &&
(internals$jscomp$inline_1325.rendererConfig = extraDevToolsConfig);
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<bd4fc00881d1e99536013c485f7d431b>>
* @generated SignedSource<<1b2029058da383893d4d2272a68879b0>>
*/
"use strict";
@@ -13320,11 +13320,11 @@ function updateContainer(element, container, parentComponent, callback) {
return lane;
}
var isomorphicReactPackageVersion = React.version;
if ("19.2.0-native-fb-e3f19180-20250915" !== isomorphicReactPackageVersion)
if ("19.2.0-native-fb-ae22247d-20250915" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-native-renderer" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-native-renderer: 19.2.0-native-fb-e3f19180-20250915\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-native-renderer: 19.2.0-native-fb-ae22247d-20250915\nLearn more: https://react.dev/warnings/version-mismatch")
);
if (
"function" !==
@@ -13374,10 +13374,10 @@ batchedUpdatesImpl = function (fn, a) {
var roots = new Map(),
internals$jscomp$inline_1575 = {
bundleType: 0,
version: "19.2.0-native-fb-e3f19180-20250915",
version: "19.2.0-native-fb-ae22247d-20250915",
rendererPackageName: "react-native-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-e3f19180-20250915"
reconcilerVersion: "19.2.0-native-fb-ae22247d-20250915"
};
null !== extraDevToolsConfig &&
(internals$jscomp$inline_1575.rendererConfig = extraDevToolsConfig);
@@ -1,7 +1,7 @@
{
"name": "eslint-plugin-react-hooks",
"description": "ESLint rules for React Hooks",
"version": "0.0.0-experimental-e3f19180-20250915",
"version": "0.0.0-experimental-ae22247d-20250915",
"repository": {
"type": "git",
"url": "https://github.com/facebook/react.git",