From 02ca3f9422641b92e88967b35b1546a95248d554 Mon Sep 17 00:00:00 2001 From: sebmarkbage Date: Mon, 15 Sep 2025 13:16:12 -0700 Subject: [PATCH] [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 [ae22247dce1449574cd324cae0d8aa0d4824a937](https://github.com/facebook/react/commit/ae22247dce1449574cd324cae0d8aa0d4824a937) --- compiled-rn/VERSION_NATIVE_FB | 2 +- .../react/react-dom/cjs/ReactDOM-dev.js | 4 +- .../react/react-dom/cjs/ReactDOM-prod.js | 4 +- .../react/react-dom/cjs/ReactDOM-profiling.js | 4 +- .../react/react-dom/cjs/ReactDOMClient-dev.js | 111 +++++++++++++++--- .../react-dom/cjs/ReactDOMClient-prod.js | 101 +++++++++++++--- .../react-dom/cjs/ReactDOMClient-profiling.js | 101 +++++++++++++--- .../react-dom/cjs/ReactDOMProfiling-dev.js | 111 +++++++++++++++--- .../react-dom/cjs/ReactDOMProfiling-prod.js | 101 +++++++++++++--- .../cjs/ReactDOMProfiling-profiling.js | 101 +++++++++++++--- .../cjs/ReactTestRenderer-dev.js | 8 +- .../cjs/ReactTestRenderer-prod.js | 8 +- .../cjs/ReactTestRenderer-profiling.js | 8 +- .../vendor/react/react/cjs/React-dev.js | 4 +- .../vendor/react/react/cjs/React-prod.js | 4 +- .../vendor/react/react/cjs/React-profiling.js | 4 +- .../Libraries/Renderer/REVISION | 2 +- .../implementations/ReactFabric-dev.fb.js | 6 +- .../implementations/ReactFabric-prod.fb.js | 6 +- .../ReactFabric-profiling.fb.js | 6 +- .../ReactNativeRenderer-dev.fb.js | 10 +- .../ReactNativeRenderer-prod.fb.js | 10 +- .../ReactNativeRenderer-profiling.fb.js | 10 +- .../eslint-plugin-react-hooks/package.json | 2 +- 24 files changed, 579 insertions(+), 149 deletions(-) diff --git a/compiled-rn/VERSION_NATIVE_FB b/compiled-rn/VERSION_NATIVE_FB index d7df1d3d6f..ebec43d935 100644 --- a/compiled-rn/VERSION_NATIVE_FB +++ b/compiled-rn/VERSION_NATIVE_FB @@ -1 +1 @@ -19.2.0-native-fb-e3f19180-20250915 \ No newline at end of file +19.2.0-native-fb-ae22247d-20250915 \ No newline at end of file diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-dev.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-dev.js index df83a85345..ab23b6f528 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-dev.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-dev.js @@ -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"; })(); diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-prod.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-prod.js index 035fcf2d9b..f062e5e363 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-prod.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-prod.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<<3c9853534e2eba8cfe4d1792a871aad8>> + * @generated SignedSource<> */ "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"; diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-profiling.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-profiling.js index 035fcf2d9b..f062e5e363 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-profiling.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-profiling.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<<3c9853534e2eba8cfe4d1792a871aad8>> + * @generated SignedSource<> */ "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"; diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-dev.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-dev.js index 31fe17c7fb..6e82db71b9 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-dev.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-dev.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<<067121c2f01030f44e5bc3c0acd60ecf>> + * @generated SignedSource<> */ /* @@ -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"; })(); diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-prod.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-prod.js index 5fc3bc238e..717006b26b 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-prod.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-prod.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<> + * @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"; diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-profiling.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-profiling.js index 0ac49e2238..999453d403 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-profiling.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-profiling.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<> + * @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"; diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMProfiling-dev.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMProfiling-dev.js index c0e4808006..5e5d03d053 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMProfiling-dev.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMProfiling-dev.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<<24e447e11746aaf79f4a39a66eebffb0>> + * @generated SignedSource<> */ /* @@ -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 && diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMProfiling-prod.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMProfiling-prod.js index 13cc3c298e..d9b37e91f7 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMProfiling-prod.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMProfiling-prod.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<<38bb3513f6965b6367b9326591057a65>> + * @generated SignedSource<> */ /* @@ -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"; diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMProfiling-profiling.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMProfiling-profiling.js index 8ec87b9639..5972023df3 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMProfiling-profiling.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMProfiling-profiling.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<<581cf6bd8002ca508e76ddf3bb3c361d>> + * @generated SignedSource<> */ /* @@ -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 && diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-test-renderer/cjs/ReactTestRenderer-dev.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-test-renderer/cjs/ReactTestRenderer-dev.js index 2ac0b5448a..7085cd1058 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-test-renderer/cjs/ReactTestRenderer-dev.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-test-renderer/cjs/ReactTestRenderer-dev.js @@ -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"; })(); diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-test-renderer/cjs/ReactTestRenderer-prod.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-test-renderer/cjs/ReactTestRenderer-prod.js index 9e2d4fa1e9..222c4cc001 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-test-renderer/cjs/ReactTestRenderer-prod.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-test-renderer/cjs/ReactTestRenderer-prod.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<<647d4e2e707ef73dbb2293852c14709e>> + * @generated SignedSource<> */ "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"; diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-test-renderer/cjs/ReactTestRenderer-profiling.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-test-renderer/cjs/ReactTestRenderer-profiling.js index c62c0cae78..b004d78c21 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-test-renderer/cjs/ReactTestRenderer-profiling.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-test-renderer/cjs/ReactTestRenderer-profiling.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<> + * @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"; diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react/cjs/React-dev.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react/cjs/React-dev.js index f1adaaded3..3a3ebb2171 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react/cjs/React-dev.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react/cjs/React-dev.js @@ -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 && diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react/cjs/React-prod.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react/cjs/React-prod.js index 56a9fc74fb..a997ee389d 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react/cjs/React-prod.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react/cjs/React-prod.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<<65f91d16ab317a0a11e0522c6e1c739b>> + * @generated SignedSource<> */ "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"; diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react/cjs/React-profiling.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react/cjs/React-profiling.js index ebf6f202ad..ed6fb04fb2 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react/cjs/React-profiling.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react/cjs/React-profiling.js @@ -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 && diff --git a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/REVISION b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/REVISION index 62553bac84..2717239fbd 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/REVISION +++ b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/REVISION @@ -1 +1 @@ -e3f191803cbe53df360b32f6735b05bb969c55cf +ae22247dce1449574cd324cae0d8aa0d4824a937 diff --git a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-dev.fb.js b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-dev.fb.js index 46c678eaf4..94e530ef6e 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +++ b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-dev.fb.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<> + * @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); diff --git a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-prod.fb.js b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-prod.fb.js index 4455c81b4a..2a58fa688e 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +++ b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-prod.fb.js @@ -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); diff --git a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js index 9ab2f1555f..3b935c5eca 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +++ b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<> + * @generated SignedSource<> */ "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); diff --git a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js index 9874489d97..92ba16ab43 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +++ b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js @@ -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); diff --git a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js index 64cc0eefdb..b4bf0f1844 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +++ b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js @@ -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); diff --git a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js index 6ea4df17ad..67fd9e2003 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +++ b/compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<> + * @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); diff --git a/compiled-rn/facebook-fbsource/xplat/js/tools/eslint-plugin-react-hooks/package.json b/compiled-rn/facebook-fbsource/xplat/js/tools/eslint-plugin-react-hooks/package.json index 0aca1a1d1d..a36a5fc418 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/tools/eslint-plugin-react-hooks/package.json +++ b/compiled-rn/facebook-fbsource/xplat/js/tools/eslint-plugin-react-hooks/package.json @@ -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",