From 8d3e7a7bda5d30b1ea208a613062478cd8d48a82 Mon Sep 17 00:00:00 2001 From: acdlite Date: Tue, 17 Oct 2023 17:03:28 +0000 Subject: [PATCH] Prerendering support for useDeferredValue (#27512) ### Based on #27509 Revealing a prerendered tree (hidden -> visible) is considered the same as mounting a brand new tree. So, when an initialValue argument is passed to useDeferredValue, and it's prerendered inside a hidden tree, we should first prerender the initial value. After the initial value has been prerendered, we switch to prerendering the final one. This is the same sequence that we use when mounting new visible tree. Depending on how much prerendering work has been finished by the time the tree is revealed, we may or may not be able to skip all the way to the final value. This means we get the benefits of both prerendering and preview states: if we have enough resources to prerender the whole thing, we do that. If we don't, we have a preview state to show for immediate feedback. DiffTrain build for commit https://github.com/facebook/react/commit/75c1bd7ee7e4a87a4dd0f560e157c57957ef823b. --- .../cjs/ReactTestRenderer-dev.js | 67 +++++++-------- .../cjs/ReactTestRenderer-prod.js | 60 +++++++------- .../cjs/ReactTestRenderer-profiling.js | 60 +++++++------- .../RKJSModules/vendor/react/cjs/React-dev.js | 2 +- .../vendor/react/cjs/React-prod.js | 2 +- .../vendor/react/cjs/React-profiling.js | 2 +- .../Libraries/Renderer/REVISION | 2 +- .../implementations/ReactFabric-dev.fb.js | 82 +++++++++---------- .../implementations/ReactFabric-prod.fb.js | 75 +++++++++-------- .../ReactFabric-profiling.fb.js | 61 ++++++++------ .../ReactNativeRenderer-dev.fb.js | 82 +++++++++---------- .../ReactNativeRenderer-prod.fb.js | 75 +++++++++-------- .../ReactNativeRenderer-profiling.fb.js | 61 ++++++++------ 13 files changed, 339 insertions(+), 292 deletions(-) diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-dev.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-dev.js index c35ff19cc1..1a0cb0f4bd 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-dev.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-dev.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<> + * @generated SignedSource<<4d9878b267a005902b63980f6c367201>> */ 'use strict'; @@ -8580,46 +8580,49 @@ function mountDeferredValueImpl(hook, value, initialValue) { } function updateDeferredValueImpl(hook, prevValue, value, initialValue) { - // TODO: We should also check if this component is going from - // hidden -> visible. If so, it should use the initialValue arg. - var shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes); + if (objectIs(value, prevValue)) { + // The incoming value is referentially identical to the currently rendered + // value, so we can bail out quickly. + return value; + } else { + // Received a new value that's different from the current value. + // Check if we're inside a hidden tree + if (isCurrentTreeHidden()) { + // Revealing a prerendered tree is considered the same as mounting new + // one, so we reuse the "mount" path in this case. + var resultValue = mountDeferredValueImpl(hook, value); // Unlike during an actual mount, we need to mark this as an update if + // the value changed. - if (shouldDeferValue) { - // This is an urgent update. If the value has changed, keep using the - // previous value and spawn a deferred render to update it later. - if (!objectIs(value, prevValue)) { + if (!objectIs(resultValue, prevValue)) { + markWorkInProgressReceivedUpdate(); + } + + return resultValue; + } + + var shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes); + + if (shouldDeferValue) { + // This is an urgent update. Since the value has changed, keep using the + // previous value and spawn a deferred render to update it later. // Schedule a deferred render var deferredLane = requestDeferredLane(); currentlyRenderingFiber$1.lanes = mergeLanes( currentlyRenderingFiber$1.lanes, deferredLane ); - markSkippedUpdateLanes(deferredLane); // Set this to true to indicate that the rendered value is inconsistent - // from the latest value. The name "baseState" doesn't really match how we - // use it because we're reusing a state hook field instead of creating a - // new one. + markSkippedUpdateLanes(deferredLane); // Reuse the previous value. We do not need to mark this as an update, + // because we did not render a new value. - hook.baseState = true; - } // Reuse the previous value - - return prevValue; - } else { - // This is not an urgent update, so we can use the latest value regardless - // of what it is. No need to defer it. - // However, if we're currently inside a spawned render, then we need to mark - // this as an update to prevent the fiber from bailing out. - // - // `baseState` is true when the current value is different from the rendered - // value. The name doesn't really match how we use it because we're reusing - // a state hook field instead of creating a new one. - if (hook.baseState) { - // Flip this back to false. - hook.baseState = false; + return prevValue; + } else { + // This is not an urgent update, so we can use the latest value regardless + // of what it is. No need to defer it. + // Mark this as an update to prevent the fiber from bailing out. markWorkInProgressReceivedUpdate(); + hook.memoizedState = value; + return value; } - - hook.memoizedState = value; - return value; } } @@ -24875,7 +24878,7 @@ function createFiberRoot( return root; } -var ReactVersion = "18.3.0-canary-b2a68a65c-20231017"; +var ReactVersion = "18.3.0-canary-75c1bd7ee-20231017"; // Might add PROFILE later. diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-prod.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-prod.js index bc42d729b0..82685c770e 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-prod.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-prod.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<> + * @generated SignedSource<> */ "use strict"; @@ -2849,21 +2849,23 @@ function updateMemo(nextCreate, deps) { return nextCreate; } function updateDeferredValueImpl(hook, prevValue, value) { - if (0 === (renderLanes & 42)) + if (objectIs(value, prevValue)) return value; + if (null !== currentTreeHiddenStackCursor.current) return ( - hook.baseState && ((hook.baseState = !1), (didReceiveUpdate = !0)), - (hook.memoizedState = value) + (hook.memoizedState = value), + objectIs(value, prevValue) || (didReceiveUpdate = !0), + value ); - objectIs(value, prevValue) || - (0 === workInProgressDeferredLane && - (workInProgressDeferredLane = - 0 !== (workInProgressRootRenderLanes & 536870912) - ? 536870912 - : requestTransitionLane()), - (value = workInProgressDeferredLane), - (currentlyRenderingFiber$1.lanes |= value), - (workInProgressRootSkippedLanes |= value), - (hook.baseState = !0)); + if (0 === (renderLanes & 42)) + return (didReceiveUpdate = !0), (hook.memoizedState = value); + 0 === workInProgressDeferredLane && + (workInProgressDeferredLane = + 0 !== (workInProgressRootRenderLanes & 536870912) + ? 536870912 + : requestTransitionLane()); + hook = workInProgressDeferredLane; + currentlyRenderingFiber$1.lanes |= hook; + workInProgressRootSkippedLanes |= hook; return prevValue; } function startTransition(fiber, queue, pendingState, finishedState, callback) { @@ -9015,19 +9017,19 @@ function wrapFiber(fiber) { fiberToWrapper.set(fiber, wrapper)); return wrapper; } -var devToolsConfig$jscomp$inline_1025 = { +var devToolsConfig$jscomp$inline_1031 = { findFiberByHostInstance: function () { throw Error("TestRenderer does not support findFiberByHostInstance()"); }, bundleType: 0, - version: "18.3.0-canary-b2a68a65c-20231017", + version: "18.3.0-canary-75c1bd7ee-20231017", rendererPackageName: "react-test-renderer" }; -var internals$jscomp$inline_1218 = { - bundleType: devToolsConfig$jscomp$inline_1025.bundleType, - version: devToolsConfig$jscomp$inline_1025.version, - rendererPackageName: devToolsConfig$jscomp$inline_1025.rendererPackageName, - rendererConfig: devToolsConfig$jscomp$inline_1025.rendererConfig, +var internals$jscomp$inline_1224 = { + bundleType: devToolsConfig$jscomp$inline_1031.bundleType, + version: devToolsConfig$jscomp$inline_1031.version, + rendererPackageName: devToolsConfig$jscomp$inline_1031.rendererPackageName, + rendererConfig: devToolsConfig$jscomp$inline_1031.rendererConfig, overrideHookState: null, overrideHookStateDeletePath: null, overrideHookStateRenamePath: null, @@ -9044,26 +9046,26 @@ var internals$jscomp$inline_1218 = { return null === fiber ? null : fiber.stateNode; }, findFiberByHostInstance: - devToolsConfig$jscomp$inline_1025.findFiberByHostInstance || + devToolsConfig$jscomp$inline_1031.findFiberByHostInstance || emptyFindFiberByHostInstance, findHostInstancesForRefresh: null, scheduleRefresh: null, scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-canary-b2a68a65c-20231017" + reconcilerVersion: "18.3.0-canary-75c1bd7ee-20231017" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { - var hook$jscomp$inline_1219 = __REACT_DEVTOOLS_GLOBAL_HOOK__; + var hook$jscomp$inline_1225 = __REACT_DEVTOOLS_GLOBAL_HOOK__; if ( - !hook$jscomp$inline_1219.isDisabled && - hook$jscomp$inline_1219.supportsFiber + !hook$jscomp$inline_1225.isDisabled && + hook$jscomp$inline_1225.supportsFiber ) try { - (rendererID = hook$jscomp$inline_1219.inject( - internals$jscomp$inline_1218 + (rendererID = hook$jscomp$inline_1225.inject( + internals$jscomp$inline_1224 )), - (injectedHook = hook$jscomp$inline_1219); + (injectedHook = hook$jscomp$inline_1225); } catch (err) {} } exports._Scheduler = Scheduler; diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-profiling.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-profiling.js index f3e4003b87..1e95ec344e 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-profiling.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-profiling.js @@ -7,7 +7,7 @@ * @noflow * @nolint * @preventMunge - * @generated SignedSource<> + * @generated SignedSource<> */ "use strict"; @@ -2869,21 +2869,23 @@ function updateMemo(nextCreate, deps) { return nextCreate; } function updateDeferredValueImpl(hook, prevValue, value) { - if (0 === (renderLanes & 42)) + if (objectIs(value, prevValue)) return value; + if (null !== currentTreeHiddenStackCursor.current) return ( - hook.baseState && ((hook.baseState = !1), (didReceiveUpdate = !0)), - (hook.memoizedState = value) + (hook.memoizedState = value), + objectIs(value, prevValue) || (didReceiveUpdate = !0), + value ); - objectIs(value, prevValue) || - (0 === workInProgressDeferredLane && - (workInProgressDeferredLane = - 0 !== (workInProgressRootRenderLanes & 536870912) - ? 536870912 - : requestTransitionLane()), - (value = workInProgressDeferredLane), - (currentlyRenderingFiber$1.lanes |= value), - (workInProgressRootSkippedLanes |= value), - (hook.baseState = !0)); + if (0 === (renderLanes & 42)) + return (didReceiveUpdate = !0), (hook.memoizedState = value); + 0 === workInProgressDeferredLane && + (workInProgressDeferredLane = + 0 !== (workInProgressRootRenderLanes & 536870912) + ? 536870912 + : requestTransitionLane()); + hook = workInProgressDeferredLane; + currentlyRenderingFiber$1.lanes |= hook; + workInProgressRootSkippedLanes |= hook; return prevValue; } function startTransition(fiber, queue, pendingState, finishedState, callback) { @@ -9441,19 +9443,19 @@ function wrapFiber(fiber) { fiberToWrapper.set(fiber, wrapper)); return wrapper; } -var devToolsConfig$jscomp$inline_1067 = { +var devToolsConfig$jscomp$inline_1073 = { findFiberByHostInstance: function () { throw Error("TestRenderer does not support findFiberByHostInstance()"); }, bundleType: 0, - version: "18.3.0-canary-b2a68a65c-20231017", + version: "18.3.0-canary-75c1bd7ee-20231017", rendererPackageName: "react-test-renderer" }; -var internals$jscomp$inline_1259 = { - bundleType: devToolsConfig$jscomp$inline_1067.bundleType, - version: devToolsConfig$jscomp$inline_1067.version, - rendererPackageName: devToolsConfig$jscomp$inline_1067.rendererPackageName, - rendererConfig: devToolsConfig$jscomp$inline_1067.rendererConfig, +var internals$jscomp$inline_1265 = { + bundleType: devToolsConfig$jscomp$inline_1073.bundleType, + version: devToolsConfig$jscomp$inline_1073.version, + rendererPackageName: devToolsConfig$jscomp$inline_1073.rendererPackageName, + rendererConfig: devToolsConfig$jscomp$inline_1073.rendererConfig, overrideHookState: null, overrideHookStateDeletePath: null, overrideHookStateRenamePath: null, @@ -9470,26 +9472,26 @@ var internals$jscomp$inline_1259 = { return null === fiber ? null : fiber.stateNode; }, findFiberByHostInstance: - devToolsConfig$jscomp$inline_1067.findFiberByHostInstance || + devToolsConfig$jscomp$inline_1073.findFiberByHostInstance || emptyFindFiberByHostInstance, findHostInstancesForRefresh: null, scheduleRefresh: null, scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-canary-b2a68a65c-20231017" + reconcilerVersion: "18.3.0-canary-75c1bd7ee-20231017" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { - var hook$jscomp$inline_1260 = __REACT_DEVTOOLS_GLOBAL_HOOK__; + var hook$jscomp$inline_1266 = __REACT_DEVTOOLS_GLOBAL_HOOK__; if ( - !hook$jscomp$inline_1260.isDisabled && - hook$jscomp$inline_1260.supportsFiber + !hook$jscomp$inline_1266.isDisabled && + hook$jscomp$inline_1266.supportsFiber ) try { - (rendererID = hook$jscomp$inline_1260.inject( - internals$jscomp$inline_1259 + (rendererID = hook$jscomp$inline_1266.inject( + internals$jscomp$inline_1265 )), - (injectedHook = hook$jscomp$inline_1260); + (injectedHook = hook$jscomp$inline_1266); } catch (err) {} } exports._Scheduler = Scheduler; diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-dev.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-dev.js index 6b1b568491..7c4650d835 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-dev.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-dev.js @@ -27,7 +27,7 @@ if ( } "use strict"; -var ReactVersion = "18.3.0-canary-b2a68a65c-20231017"; +var ReactVersion = "18.3.0-canary-75c1bd7ee-20231017"; // ATTENTION // When adding new symbols to this file, diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-prod.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-prod.js index 5b9bbc8b44..bf69e3250f 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-prod.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-prod.js @@ -580,4 +580,4 @@ exports.useSyncExternalStore = function ( exports.useTransition = function () { return ReactCurrentDispatcher.current.useTransition(); }; -exports.version = "18.3.0-canary-b2a68a65c-20231017"; +exports.version = "18.3.0-canary-75c1bd7ee-20231017"; diff --git a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-profiling.js b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-profiling.js index 8911457e35..4ed50d9844 100644 --- a/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-profiling.js +++ b/compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-profiling.js @@ -583,7 +583,7 @@ exports.useSyncExternalStore = function ( exports.useTransition = function () { return ReactCurrentDispatcher.current.useTransition(); }; -exports.version = "18.3.0-canary-b2a68a65c-20231017"; +exports.version = "18.3.0-canary-75c1bd7ee-20231017"; /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ if ( 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 a6a4eca4c8..f172e74bf0 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 @@ -b2a68a65c84b63ac86930d88ae5c84380cbbdeb6 +75c1bd7ee7e4a87a4dd0f560e157c57957ef823b 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 a1bc10ee7b..dc8ce97ce8 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<<6162ebbe05ae0d0f278a11c2d5dc1c6c>> + * @generated SignedSource<<30eb74bc13c38978deef06e3b48b5850>> */ 'use strict'; @@ -12067,7 +12067,7 @@ function updateDeferredValue(value, initialValue) { var hook = updateWorkInProgressHook(); var resolvedCurrentHook = currentHook; var prevValue = resolvedCurrentHook.memoizedState; - return updateDeferredValueImpl(hook, prevValue, value); + return updateDeferredValueImpl(hook, prevValue, value, initialValue); } function rerenderDeferredValue(value, initialValue) { @@ -12079,7 +12079,7 @@ function rerenderDeferredValue(value, initialValue) { } else { // This is a rerender during an update. var prevValue = currentHook.memoizedState; - return updateDeferredValueImpl(hook, prevValue, value); + return updateDeferredValueImpl(hook, prevValue, value, initialValue); } } @@ -12100,12 +12100,7 @@ function mountDeferredValueImpl(hook, value, initialValue) { currentlyRenderingFiber$1.lanes, deferredLane ); - markSkippedUpdateLanes(deferredLane); // Set this to true to indicate that the rendered value is inconsistent - // from the latest value. The name "baseState" doesn't really match how we - // use it because we're reusing a state hook field instead of creating a - // new one. - - hook.baseState = true; + markSkippedUpdateLanes(deferredLane); return initialValue; } else { hook.memoizedState = value; @@ -12114,46 +12109,49 @@ function mountDeferredValueImpl(hook, value, initialValue) { } function updateDeferredValueImpl(hook, prevValue, value, initialValue) { - // TODO: We should also check if this component is going from - // hidden -> visible. If so, it should use the initialValue arg. - var shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes); + if (objectIs(value, prevValue)) { + // The incoming value is referentially identical to the currently rendered + // value, so we can bail out quickly. + return value; + } else { + // Received a new value that's different from the current value. + // Check if we're inside a hidden tree + if (isCurrentTreeHidden()) { + // Revealing a prerendered tree is considered the same as mounting new + // one, so we reuse the "mount" path in this case. + var resultValue = mountDeferredValueImpl(hook, value, initialValue); // Unlike during an actual mount, we need to mark this as an update if + // the value changed. - if (shouldDeferValue) { - // This is an urgent update. If the value has changed, keep using the - // previous value and spawn a deferred render to update it later. - if (!objectIs(value, prevValue)) { + if (!objectIs(resultValue, prevValue)) { + markWorkInProgressReceivedUpdate(); + } + + return resultValue; + } + + var shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes); + + if (shouldDeferValue) { + // This is an urgent update. Since the value has changed, keep using the + // previous value and spawn a deferred render to update it later. // Schedule a deferred render var deferredLane = requestDeferredLane(); currentlyRenderingFiber$1.lanes = mergeLanes( currentlyRenderingFiber$1.lanes, deferredLane ); - markSkippedUpdateLanes(deferredLane); // Set this to true to indicate that the rendered value is inconsistent - // from the latest value. The name "baseState" doesn't really match how we - // use it because we're reusing a state hook field instead of creating a - // new one. + markSkippedUpdateLanes(deferredLane); // Reuse the previous value. We do not need to mark this as an update, + // because we did not render a new value. - hook.baseState = true; - } // Reuse the previous value - - return prevValue; - } else { - // This is not an urgent update, so we can use the latest value regardless - // of what it is. No need to defer it. - // However, if we're currently inside a spawned render, then we need to mark - // this as an update to prevent the fiber from bailing out. - // - // `baseState` is true when the current value is different from the rendered - // value. The name doesn't really match how we use it because we're reusing - // a state hook field instead of creating a new one. - if (hook.baseState) { - // Flip this back to false. - hook.baseState = false; + return prevValue; + } else { + // This is not an urgent update, so we can use the latest value regardless + // of what it is. No need to defer it. + // Mark this as an update to prevent the fiber from bailing out. markWorkInProgressReceivedUpdate(); + hook.memoizedState = value; + return value; } - - hook.memoizedState = value; - return value; } } @@ -12821,7 +12819,7 @@ var InvalidNestedHooksDispatcherOnRerenderInDEV = null; useDeferredValue: function (value, initialValue) { currentHookNameInDev = "useDeferredValue"; updateHookTypesDev(); - return updateDeferredValue(value); + return updateDeferredValue(value, initialValue); }, useTransition: function () { currentHookNameInDev = "useTransition"; @@ -13189,7 +13187,7 @@ var InvalidNestedHooksDispatcherOnRerenderInDEV = null; currentHookNameInDev = "useDeferredValue"; warnInvalidHookAccess(); updateHookTypesDev(); - return updateDeferredValue(value); + return updateDeferredValue(value, initialValue); }, useTransition: function () { currentHookNameInDev = "useTransition"; @@ -27253,7 +27251,7 @@ function createFiberRoot( return root; } -var ReactVersion = "18.3.0-canary-36074133"; +var ReactVersion = "18.3.0-canary-b286d49a"; function createPortal$1( children, 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 262d9fa6b1..68ddc5112c 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<> + * @generated SignedSource<> */ "use strict"; @@ -4068,24 +4068,25 @@ function updateMemo(nextCreate, deps) { function mountDeferredValueImpl(hook, value, initialValue) { return void 0 !== initialValue && 0 === (renderLanes & 1073741824) ? ((hook.memoizedState = initialValue), - (value = requestDeferredLane()), - (currentlyRenderingFiber$1.lanes |= value), - (workInProgressRootSkippedLanes |= value), - (hook.baseState = !0), + (hook = requestDeferredLane()), + (currentlyRenderingFiber$1.lanes |= hook), + (workInProgressRootSkippedLanes |= hook), initialValue) : (hook.memoizedState = value); } -function updateDeferredValueImpl(hook, prevValue, value) { - if (0 === (renderLanes & 42)) +function updateDeferredValueImpl(hook, prevValue, value, initialValue) { + if (objectIs(value, prevValue)) return value; + if (null !== currentTreeHiddenStackCursor.current) return ( - hook.baseState && ((hook.baseState = !1), (didReceiveUpdate = !0)), - (hook.memoizedState = value) + (hook = mountDeferredValueImpl(hook, value, initialValue)), + objectIs(hook, prevValue) || (didReceiveUpdate = !0), + hook ); - objectIs(value, prevValue) || - ((value = requestDeferredLane()), - (currentlyRenderingFiber$1.lanes |= value), - (workInProgressRootSkippedLanes |= value), - (hook.baseState = !0)); + if (0 === (renderLanes & 42)) + return (didReceiveUpdate = !0), (hook.memoizedState = value); + hook = requestDeferredLane(); + currentlyRenderingFiber$1.lanes |= hook; + workInProgressRootSkippedLanes |= hook; return prevValue; } function startTransition(fiber, queue, pendingState, finishedState, callback) { @@ -4349,9 +4350,14 @@ var HooksDispatcherOnUpdate = { return updateReducer(basicStateReducer); }, useDebugValue: mountDebugValue, - useDeferredValue: function (value) { + useDeferredValue: function (value, initialValue) { var hook = updateWorkInProgressHook(); - return updateDeferredValueImpl(hook, currentHook.memoizedState, value); + return updateDeferredValueImpl( + hook, + currentHook.memoizedState, + value, + initialValue + ); }, useTransition: function () { var booleanOrThenable = updateReducer(basicStateReducer)[0], @@ -4387,7 +4393,12 @@ var HooksDispatcherOnRerender = { var hook = updateWorkInProgressHook(); return null === currentHook ? mountDeferredValueImpl(hook, value, initialValue) - : updateDeferredValueImpl(hook, currentHook.memoizedState, value); + : updateDeferredValueImpl( + hook, + currentHook.memoizedState, + value, + initialValue + ); }, useTransition: function () { var booleanOrThenable = rerenderReducer(basicStateReducer)[0], @@ -9519,10 +9530,10 @@ batchedUpdatesImpl = function (fn, a) { } }; var roots = new Map(), - devToolsConfig$jscomp$inline_1047 = { + devToolsConfig$jscomp$inline_1048 = { findFiberByHostInstance: getInstanceFromNode, bundleType: 0, - version: "18.3.0-canary-95ce36ab", + version: "18.3.0-canary-db869081", rendererPackageName: "react-native-renderer", rendererConfig: { getInspectorDataForInstance: getInspectorDataForInstance, @@ -9538,11 +9549,11 @@ var roots = new Map(), }.bind(null, findNodeHandle) } }; -var internals$jscomp$inline_1289 = { - bundleType: devToolsConfig$jscomp$inline_1047.bundleType, - version: devToolsConfig$jscomp$inline_1047.version, - rendererPackageName: devToolsConfig$jscomp$inline_1047.rendererPackageName, - rendererConfig: devToolsConfig$jscomp$inline_1047.rendererConfig, +var internals$jscomp$inline_1290 = { + bundleType: devToolsConfig$jscomp$inline_1048.bundleType, + version: devToolsConfig$jscomp$inline_1048.version, + rendererPackageName: devToolsConfig$jscomp$inline_1048.rendererPackageName, + rendererConfig: devToolsConfig$jscomp$inline_1048.rendererConfig, overrideHookState: null, overrideHookStateDeletePath: null, overrideHookStateRenamePath: null, @@ -9558,26 +9569,26 @@ var internals$jscomp$inline_1289 = { return null === fiber ? null : fiber.stateNode; }, findFiberByHostInstance: - devToolsConfig$jscomp$inline_1047.findFiberByHostInstance || + devToolsConfig$jscomp$inline_1048.findFiberByHostInstance || emptyFindFiberByHostInstance, findHostInstancesForRefresh: null, scheduleRefresh: null, scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-canary-95ce36ab" + reconcilerVersion: "18.3.0-canary-db869081" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { - var hook$jscomp$inline_1290 = __REACT_DEVTOOLS_GLOBAL_HOOK__; + var hook$jscomp$inline_1291 = __REACT_DEVTOOLS_GLOBAL_HOOK__; if ( - !hook$jscomp$inline_1290.isDisabled && - hook$jscomp$inline_1290.supportsFiber + !hook$jscomp$inline_1291.isDisabled && + hook$jscomp$inline_1291.supportsFiber ) try { - (rendererID = hook$jscomp$inline_1290.inject( - internals$jscomp$inline_1289 + (rendererID = hook$jscomp$inline_1291.inject( + internals$jscomp$inline_1290 )), - (injectedHook = hook$jscomp$inline_1290); + (injectedHook = hook$jscomp$inline_1291); } catch (err) {} } exports.createPortal = function (children, containerTag) { 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 6e450604a5..ff6b2582fe 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<<4c458b1ffae67751c0467a6058d6e4f2>> */ @@ -4199,24 +4199,25 @@ function updateMemo(nextCreate, deps) { function mountDeferredValueImpl(hook, value, initialValue) { return void 0 !== initialValue && 0 === (renderLanes & 1073741824) ? ((hook.memoizedState = initialValue), - (value = requestDeferredLane()), - (currentlyRenderingFiber$1.lanes |= value), - (workInProgressRootSkippedLanes |= value), - (hook.baseState = !0), + (hook = requestDeferredLane()), + (currentlyRenderingFiber$1.lanes |= hook), + (workInProgressRootSkippedLanes |= hook), initialValue) : (hook.memoizedState = value); } -function updateDeferredValueImpl(hook, prevValue, value) { - if (0 === (renderLanes & 42)) +function updateDeferredValueImpl(hook, prevValue, value, initialValue) { + if (objectIs(value, prevValue)) return value; + if (null !== currentTreeHiddenStackCursor.current) return ( - hook.baseState && ((hook.baseState = !1), (didReceiveUpdate = !0)), - (hook.memoizedState = value) + (hook = mountDeferredValueImpl(hook, value, initialValue)), + objectIs(hook, prevValue) || (didReceiveUpdate = !0), + hook ); - objectIs(value, prevValue) || - ((value = requestDeferredLane()), - (currentlyRenderingFiber$1.lanes |= value), - (workInProgressRootSkippedLanes |= value), - (hook.baseState = !0)); + if (0 === (renderLanes & 42)) + return (didReceiveUpdate = !0), (hook.memoizedState = value); + hook = requestDeferredLane(); + currentlyRenderingFiber$1.lanes |= hook; + workInProgressRootSkippedLanes |= hook; return prevValue; } function startTransition(fiber, queue, pendingState, finishedState, callback) { @@ -4482,9 +4483,14 @@ var HooksDispatcherOnUpdate = { return updateReducer(basicStateReducer); }, useDebugValue: mountDebugValue, - useDeferredValue: function (value) { + useDeferredValue: function (value, initialValue) { var hook = updateWorkInProgressHook(); - return updateDeferredValueImpl(hook, currentHook.memoizedState, value); + return updateDeferredValueImpl( + hook, + currentHook.memoizedState, + value, + initialValue + ); }, useTransition: function () { var booleanOrThenable = updateReducer(basicStateReducer)[0], @@ -4520,7 +4526,12 @@ var HooksDispatcherOnRerender = { var hook = updateWorkInProgressHook(); return null === currentHook ? mountDeferredValueImpl(hook, value, initialValue) - : updateDeferredValueImpl(hook, currentHook.memoizedState, value); + : updateDeferredValueImpl( + hook, + currentHook.memoizedState, + value, + initialValue + ); }, useTransition: function () { var booleanOrThenable = rerenderReducer(basicStateReducer)[0], @@ -10228,10 +10239,10 @@ batchedUpdatesImpl = function (fn, a) { } }; var roots = new Map(), - devToolsConfig$jscomp$inline_1125 = { + devToolsConfig$jscomp$inline_1126 = { findFiberByHostInstance: getInstanceFromNode, bundleType: 0, - version: "18.3.0-canary-f4487f8c", + version: "18.3.0-canary-0539669f", rendererPackageName: "react-native-renderer", rendererConfig: { getInspectorDataForInstance: getInspectorDataForInstance, @@ -10261,10 +10272,10 @@ var roots = new Map(), } catch (err) {} return hook.checkDCE ? !0 : !1; })({ - bundleType: devToolsConfig$jscomp$inline_1125.bundleType, - version: devToolsConfig$jscomp$inline_1125.version, - rendererPackageName: devToolsConfig$jscomp$inline_1125.rendererPackageName, - rendererConfig: devToolsConfig$jscomp$inline_1125.rendererConfig, + bundleType: devToolsConfig$jscomp$inline_1126.bundleType, + version: devToolsConfig$jscomp$inline_1126.version, + rendererPackageName: devToolsConfig$jscomp$inline_1126.rendererPackageName, + rendererConfig: devToolsConfig$jscomp$inline_1126.rendererConfig, overrideHookState: null, overrideHookStateDeletePath: null, overrideHookStateRenamePath: null, @@ -10280,14 +10291,14 @@ var roots = new Map(), return null === fiber ? null : fiber.stateNode; }, findFiberByHostInstance: - devToolsConfig$jscomp$inline_1125.findFiberByHostInstance || + devToolsConfig$jscomp$inline_1126.findFiberByHostInstance || emptyFindFiberByHostInstance, findHostInstancesForRefresh: null, scheduleRefresh: null, scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-canary-f4487f8c" + reconcilerVersion: "18.3.0-canary-0539669f" }); exports.createPortal = function (children, containerTag) { return createPortal$1( 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 8f8fc246ec..a325d1a4e5 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<<5149fa2eabf0394426b82a7118203775>> + * @generated SignedSource<<7761533a90172f142b7160c8a395139f>> */ 'use strict'; @@ -12339,7 +12339,7 @@ function updateDeferredValue(value, initialValue) { var hook = updateWorkInProgressHook(); var resolvedCurrentHook = currentHook; var prevValue = resolvedCurrentHook.memoizedState; - return updateDeferredValueImpl(hook, prevValue, value); + return updateDeferredValueImpl(hook, prevValue, value, initialValue); } function rerenderDeferredValue(value, initialValue) { @@ -12351,7 +12351,7 @@ function rerenderDeferredValue(value, initialValue) { } else { // This is a rerender during an update. var prevValue = currentHook.memoizedState; - return updateDeferredValueImpl(hook, prevValue, value); + return updateDeferredValueImpl(hook, prevValue, value, initialValue); } } @@ -12372,12 +12372,7 @@ function mountDeferredValueImpl(hook, value, initialValue) { currentlyRenderingFiber$1.lanes, deferredLane ); - markSkippedUpdateLanes(deferredLane); // Set this to true to indicate that the rendered value is inconsistent - // from the latest value. The name "baseState" doesn't really match how we - // use it because we're reusing a state hook field instead of creating a - // new one. - - hook.baseState = true; + markSkippedUpdateLanes(deferredLane); return initialValue; } else { hook.memoizedState = value; @@ -12386,46 +12381,49 @@ function mountDeferredValueImpl(hook, value, initialValue) { } function updateDeferredValueImpl(hook, prevValue, value, initialValue) { - // TODO: We should also check if this component is going from - // hidden -> visible. If so, it should use the initialValue arg. - var shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes); + if (objectIs(value, prevValue)) { + // The incoming value is referentially identical to the currently rendered + // value, so we can bail out quickly. + return value; + } else { + // Received a new value that's different from the current value. + // Check if we're inside a hidden tree + if (isCurrentTreeHidden()) { + // Revealing a prerendered tree is considered the same as mounting new + // one, so we reuse the "mount" path in this case. + var resultValue = mountDeferredValueImpl(hook, value, initialValue); // Unlike during an actual mount, we need to mark this as an update if + // the value changed. - if (shouldDeferValue) { - // This is an urgent update. If the value has changed, keep using the - // previous value and spawn a deferred render to update it later. - if (!objectIs(value, prevValue)) { + if (!objectIs(resultValue, prevValue)) { + markWorkInProgressReceivedUpdate(); + } + + return resultValue; + } + + var shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes); + + if (shouldDeferValue) { + // This is an urgent update. Since the value has changed, keep using the + // previous value and spawn a deferred render to update it later. // Schedule a deferred render var deferredLane = requestDeferredLane(); currentlyRenderingFiber$1.lanes = mergeLanes( currentlyRenderingFiber$1.lanes, deferredLane ); - markSkippedUpdateLanes(deferredLane); // Set this to true to indicate that the rendered value is inconsistent - // from the latest value. The name "baseState" doesn't really match how we - // use it because we're reusing a state hook field instead of creating a - // new one. + markSkippedUpdateLanes(deferredLane); // Reuse the previous value. We do not need to mark this as an update, + // because we did not render a new value. - hook.baseState = true; - } // Reuse the previous value - - return prevValue; - } else { - // This is not an urgent update, so we can use the latest value regardless - // of what it is. No need to defer it. - // However, if we're currently inside a spawned render, then we need to mark - // this as an update to prevent the fiber from bailing out. - // - // `baseState` is true when the current value is different from the rendered - // value. The name doesn't really match how we use it because we're reusing - // a state hook field instead of creating a new one. - if (hook.baseState) { - // Flip this back to false. - hook.baseState = false; + return prevValue; + } else { + // This is not an urgent update, so we can use the latest value regardless + // of what it is. No need to defer it. + // Mark this as an update to prevent the fiber from bailing out. markWorkInProgressReceivedUpdate(); + hook.memoizedState = value; + return value; } - - hook.memoizedState = value; - return value; } } @@ -13093,7 +13091,7 @@ var InvalidNestedHooksDispatcherOnRerenderInDEV = null; useDeferredValue: function (value, initialValue) { currentHookNameInDev = "useDeferredValue"; updateHookTypesDev(); - return updateDeferredValue(value); + return updateDeferredValue(value, initialValue); }, useTransition: function () { currentHookNameInDev = "useTransition"; @@ -13461,7 +13459,7 @@ var InvalidNestedHooksDispatcherOnRerenderInDEV = null; currentHookNameInDev = "useDeferredValue"; warnInvalidHookAccess(); updateHookTypesDev(); - return updateDeferredValue(value); + return updateDeferredValue(value, initialValue); }, useTransition: function () { currentHookNameInDev = "useTransition"; @@ -27683,7 +27681,7 @@ function createFiberRoot( return root; } -var ReactVersion = "18.3.0-canary-5d666072"; +var ReactVersion = "18.3.0-canary-9a620f58"; function createPortal$1( children, 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 1da2c132a1..f99e3c8711 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<<88f7c87bf49d72ee9327d09a61b0fdb4>> + * @generated SignedSource<<5fe45a496910e026038e9ec934488c9b>> */ "use strict"; @@ -4144,24 +4144,25 @@ function updateMemo(nextCreate, deps) { function mountDeferredValueImpl(hook, value, initialValue) { return void 0 !== initialValue && 0 === (renderLanes & 1073741824) ? ((hook.memoizedState = initialValue), - (value = requestDeferredLane()), - (currentlyRenderingFiber$1.lanes |= value), - (workInProgressRootSkippedLanes |= value), - (hook.baseState = !0), + (hook = requestDeferredLane()), + (currentlyRenderingFiber$1.lanes |= hook), + (workInProgressRootSkippedLanes |= hook), initialValue) : (hook.memoizedState = value); } -function updateDeferredValueImpl(hook, prevValue, value) { - if (0 === (renderLanes & 42)) +function updateDeferredValueImpl(hook, prevValue, value, initialValue) { + if (objectIs(value, prevValue)) return value; + if (null !== currentTreeHiddenStackCursor.current) return ( - hook.baseState && ((hook.baseState = !1), (didReceiveUpdate = !0)), - (hook.memoizedState = value) + (hook = mountDeferredValueImpl(hook, value, initialValue)), + objectIs(hook, prevValue) || (didReceiveUpdate = !0), + hook ); - objectIs(value, prevValue) || - ((value = requestDeferredLane()), - (currentlyRenderingFiber$1.lanes |= value), - (workInProgressRootSkippedLanes |= value), - (hook.baseState = !0)); + if (0 === (renderLanes & 42)) + return (didReceiveUpdate = !0), (hook.memoizedState = value); + hook = requestDeferredLane(); + currentlyRenderingFiber$1.lanes |= hook; + workInProgressRootSkippedLanes |= hook; return prevValue; } function startTransition(fiber, queue, pendingState, finishedState, callback) { @@ -4425,9 +4426,14 @@ var HooksDispatcherOnUpdate = { return updateReducer(basicStateReducer); }, useDebugValue: mountDebugValue, - useDeferredValue: function (value) { + useDeferredValue: function (value, initialValue) { var hook = updateWorkInProgressHook(); - return updateDeferredValueImpl(hook, currentHook.memoizedState, value); + return updateDeferredValueImpl( + hook, + currentHook.memoizedState, + value, + initialValue + ); }, useTransition: function () { var booleanOrThenable = updateReducer(basicStateReducer)[0], @@ -4463,7 +4469,12 @@ var HooksDispatcherOnRerender = { var hook = updateWorkInProgressHook(); return null === currentHook ? mountDeferredValueImpl(hook, value, initialValue) - : updateDeferredValueImpl(hook, currentHook.memoizedState, value); + : updateDeferredValueImpl( + hook, + currentHook.memoizedState, + value, + initialValue + ); }, useTransition: function () { var booleanOrThenable = rerenderReducer(basicStateReducer)[0], @@ -9737,10 +9748,10 @@ batchedUpdatesImpl = function (fn, a) { } }; var roots = new Map(), - devToolsConfig$jscomp$inline_1110 = { + devToolsConfig$jscomp$inline_1111 = { findFiberByHostInstance: getInstanceFromTag, bundleType: 0, - version: "18.3.0-canary-2f2d9965", + version: "18.3.0-canary-17a637f1", rendererPackageName: "react-native-renderer", rendererConfig: { getInspectorDataForInstance: getInspectorDataForInstance, @@ -9756,11 +9767,11 @@ var roots = new Map(), }.bind(null, findNodeHandle) } }; -var internals$jscomp$inline_1366 = { - bundleType: devToolsConfig$jscomp$inline_1110.bundleType, - version: devToolsConfig$jscomp$inline_1110.version, - rendererPackageName: devToolsConfig$jscomp$inline_1110.rendererPackageName, - rendererConfig: devToolsConfig$jscomp$inline_1110.rendererConfig, +var internals$jscomp$inline_1367 = { + bundleType: devToolsConfig$jscomp$inline_1111.bundleType, + version: devToolsConfig$jscomp$inline_1111.version, + rendererPackageName: devToolsConfig$jscomp$inline_1111.rendererPackageName, + rendererConfig: devToolsConfig$jscomp$inline_1111.rendererConfig, overrideHookState: null, overrideHookStateDeletePath: null, overrideHookStateRenamePath: null, @@ -9776,26 +9787,26 @@ var internals$jscomp$inline_1366 = { return null === fiber ? null : fiber.stateNode; }, findFiberByHostInstance: - devToolsConfig$jscomp$inline_1110.findFiberByHostInstance || + devToolsConfig$jscomp$inline_1111.findFiberByHostInstance || emptyFindFiberByHostInstance, findHostInstancesForRefresh: null, scheduleRefresh: null, scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-canary-2f2d9965" + reconcilerVersion: "18.3.0-canary-17a637f1" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { - var hook$jscomp$inline_1367 = __REACT_DEVTOOLS_GLOBAL_HOOK__; + var hook$jscomp$inline_1368 = __REACT_DEVTOOLS_GLOBAL_HOOK__; if ( - !hook$jscomp$inline_1367.isDisabled && - hook$jscomp$inline_1367.supportsFiber + !hook$jscomp$inline_1368.isDisabled && + hook$jscomp$inline_1368.supportsFiber ) try { - (rendererID = hook$jscomp$inline_1367.inject( - internals$jscomp$inline_1366 + (rendererID = hook$jscomp$inline_1368.inject( + internals$jscomp$inline_1367 )), - (injectedHook = hook$jscomp$inline_1367); + (injectedHook = hook$jscomp$inline_1368); } catch (err) {} } exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = { 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 81d78d41f1..69dcebbccf 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<<66a3ab08e21262224c99cef051dda83e>> */ @@ -4275,24 +4275,25 @@ function updateMemo(nextCreate, deps) { function mountDeferredValueImpl(hook, value, initialValue) { return void 0 !== initialValue && 0 === (renderLanes & 1073741824) ? ((hook.memoizedState = initialValue), - (value = requestDeferredLane()), - (currentlyRenderingFiber$1.lanes |= value), - (workInProgressRootSkippedLanes |= value), - (hook.baseState = !0), + (hook = requestDeferredLane()), + (currentlyRenderingFiber$1.lanes |= hook), + (workInProgressRootSkippedLanes |= hook), initialValue) : (hook.memoizedState = value); } -function updateDeferredValueImpl(hook, prevValue, value) { - if (0 === (renderLanes & 42)) +function updateDeferredValueImpl(hook, prevValue, value, initialValue) { + if (objectIs(value, prevValue)) return value; + if (null !== currentTreeHiddenStackCursor.current) return ( - hook.baseState && ((hook.baseState = !1), (didReceiveUpdate = !0)), - (hook.memoizedState = value) + (hook = mountDeferredValueImpl(hook, value, initialValue)), + objectIs(hook, prevValue) || (didReceiveUpdate = !0), + hook ); - objectIs(value, prevValue) || - ((value = requestDeferredLane()), - (currentlyRenderingFiber$1.lanes |= value), - (workInProgressRootSkippedLanes |= value), - (hook.baseState = !0)); + if (0 === (renderLanes & 42)) + return (didReceiveUpdate = !0), (hook.memoizedState = value); + hook = requestDeferredLane(); + currentlyRenderingFiber$1.lanes |= hook; + workInProgressRootSkippedLanes |= hook; return prevValue; } function startTransition(fiber, queue, pendingState, finishedState, callback) { @@ -4558,9 +4559,14 @@ var HooksDispatcherOnUpdate = { return updateReducer(basicStateReducer); }, useDebugValue: mountDebugValue, - useDeferredValue: function (value) { + useDeferredValue: function (value, initialValue) { var hook = updateWorkInProgressHook(); - return updateDeferredValueImpl(hook, currentHook.memoizedState, value); + return updateDeferredValueImpl( + hook, + currentHook.memoizedState, + value, + initialValue + ); }, useTransition: function () { var booleanOrThenable = updateReducer(basicStateReducer)[0], @@ -4596,7 +4602,12 @@ var HooksDispatcherOnRerender = { var hook = updateWorkInProgressHook(); return null === currentHook ? mountDeferredValueImpl(hook, value, initialValue) - : updateDeferredValueImpl(hook, currentHook.memoizedState, value); + : updateDeferredValueImpl( + hook, + currentHook.memoizedState, + value, + initialValue + ); }, useTransition: function () { var booleanOrThenable = rerenderReducer(basicStateReducer)[0], @@ -10446,10 +10457,10 @@ batchedUpdatesImpl = function (fn, a) { } }; var roots = new Map(), - devToolsConfig$jscomp$inline_1188 = { + devToolsConfig$jscomp$inline_1189 = { findFiberByHostInstance: getInstanceFromTag, bundleType: 0, - version: "18.3.0-canary-57d766d3", + version: "18.3.0-canary-2a28451e", rendererPackageName: "react-native-renderer", rendererConfig: { getInspectorDataForInstance: getInspectorDataForInstance, @@ -10479,10 +10490,10 @@ var roots = new Map(), } catch (err) {} return hook.checkDCE ? !0 : !1; })({ - bundleType: devToolsConfig$jscomp$inline_1188.bundleType, - version: devToolsConfig$jscomp$inline_1188.version, - rendererPackageName: devToolsConfig$jscomp$inline_1188.rendererPackageName, - rendererConfig: devToolsConfig$jscomp$inline_1188.rendererConfig, + bundleType: devToolsConfig$jscomp$inline_1189.bundleType, + version: devToolsConfig$jscomp$inline_1189.version, + rendererPackageName: devToolsConfig$jscomp$inline_1189.rendererPackageName, + rendererConfig: devToolsConfig$jscomp$inline_1189.rendererConfig, overrideHookState: null, overrideHookStateDeletePath: null, overrideHookStateRenamePath: null, @@ -10498,14 +10509,14 @@ var roots = new Map(), return null === fiber ? null : fiber.stateNode; }, findFiberByHostInstance: - devToolsConfig$jscomp$inline_1188.findFiberByHostInstance || + devToolsConfig$jscomp$inline_1189.findFiberByHostInstance || emptyFindFiberByHostInstance, findHostInstancesForRefresh: null, scheduleRefresh: null, scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-canary-57d766d3" + reconcilerVersion: "18.3.0-canary-2a28451e" }); exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = { computeComponentStackForErrorReporting: function (reactTag) {