Skip to content

Commit 77be527

Browse files
authored
Remove LanePriority from computeExpirationTime (#21087)
I'm removing all uses of LanePriority so I can delete it.
1 parent 3221e8f commit 77be527

File tree

2 files changed

+104
-50
lines changed

2 files changed

+104
-50
lines changed

packages/react-reconciler/src/ReactFiberLane.new.js

Lines changed: 52 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -410,31 +410,58 @@ export function getMostRecentEventTime(root: FiberRoot, lanes: Lanes): number {
410410
}
411411

412412
function computeExpirationTime(lane: Lane, currentTime: number) {
413-
// TODO: Expiration heuristic is constant per lane, so could use a map.
414-
getHighestPriorityLanes(lane);
415-
const priority = return_highestLanePriority;
416-
if (priority >= InputContinuousLanePriority) {
417-
// User interactions should expire slightly more quickly.
418-
//
419-
// NOTE: This is set to the corresponding constant as in Scheduler.js. When
420-
// we made it larger, a product metric in www regressed, suggesting there's
421-
// a user interaction that's being starved by a series of synchronous
422-
// updates. If that theory is correct, the proper solution is to fix the
423-
// starvation. However, this scenario supports the idea that expiration
424-
// times are an important safeguard when starvation does happen.
425-
//
426-
// Also note that, in the case of user input specifically, this will soon no
427-
// longer be an issue because we plan to make user input synchronous by
428-
// default (until you enter `startTransition`, of course.)
429-
//
430-
// If weren't planning to make these updates synchronous soon anyway, I
431-
// would probably make this number a configurable parameter.
432-
return currentTime + 250;
433-
} else if (priority >= TransitionPriority) {
434-
return currentTime + 5000;
435-
} else {
436-
// Anything idle priority or lower should never expire.
437-
return NoTimestamp;
413+
switch (lane) {
414+
case SyncLane:
415+
case InputContinuousHydrationLane:
416+
case InputContinuousLane:
417+
// User interactions should expire slightly more quickly.
418+
//
419+
// NOTE: This is set to the corresponding constant as in Scheduler.js.
420+
// When we made it larger, a product metric in www regressed, suggesting
421+
// there's a user interaction that's being starved by a series of
422+
// synchronous updates. If that theory is correct, the proper solution is
423+
// to fix the starvation. However, this scenario supports the idea that
424+
// expiration times are an important safeguard when starvation
425+
// does happen.
426+
return currentTime + 250;
427+
case DefaultHydrationLane:
428+
case DefaultLane:
429+
case TransitionHydrationLane:
430+
case TransitionLane1:
431+
case TransitionLane2:
432+
case TransitionLane3:
433+
case TransitionLane4:
434+
case TransitionLane5:
435+
case TransitionLane6:
436+
case TransitionLane7:
437+
case TransitionLane8:
438+
case TransitionLane9:
439+
case TransitionLane10:
440+
case TransitionLane11:
441+
case TransitionLane12:
442+
case TransitionLane13:
443+
case TransitionLane14:
444+
case TransitionLane15:
445+
case TransitionLane16:
446+
case RetryLane1:
447+
case RetryLane2:
448+
case RetryLane3:
449+
case RetryLane4:
450+
case RetryLane5:
451+
return currentTime + 5000;
452+
case SelectiveHydrationLane:
453+
case IdleHydrationLane:
454+
case IdleLane:
455+
case OffscreenLane:
456+
// Anything idle priority or lower should never expire.
457+
return NoTimestamp;
458+
default:
459+
if (__DEV__) {
460+
console.error(
461+
'Should have found matching lanes. This is a bug in React.',
462+
);
463+
}
464+
return NoTimestamp;
438465
}
439466
}
440467

packages/react-reconciler/src/ReactFiberLane.old.js

Lines changed: 52 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -410,31 +410,58 @@ export function getMostRecentEventTime(root: FiberRoot, lanes: Lanes): number {
410410
}
411411

412412
function computeExpirationTime(lane: Lane, currentTime: number) {
413-
// TODO: Expiration heuristic is constant per lane, so could use a map.
414-
getHighestPriorityLanes(lane);
415-
const priority = return_highestLanePriority;
416-
if (priority >= InputContinuousLanePriority) {
417-
// User interactions should expire slightly more quickly.
418-
//
419-
// NOTE: This is set to the corresponding constant as in Scheduler.js. When
420-
// we made it larger, a product metric in www regressed, suggesting there's
421-
// a user interaction that's being starved by a series of synchronous
422-
// updates. If that theory is correct, the proper solution is to fix the
423-
// starvation. However, this scenario supports the idea that expiration
424-
// times are an important safeguard when starvation does happen.
425-
//
426-
// Also note that, in the case of user input specifically, this will soon no
427-
// longer be an issue because we plan to make user input synchronous by
428-
// default (until you enter `startTransition`, of course.)
429-
//
430-
// If weren't planning to make these updates synchronous soon anyway, I
431-
// would probably make this number a configurable parameter.
432-
return currentTime + 250;
433-
} else if (priority >= TransitionPriority) {
434-
return currentTime + 5000;
435-
} else {
436-
// Anything idle priority or lower should never expire.
437-
return NoTimestamp;
413+
switch (lane) {
414+
case SyncLane:
415+
case InputContinuousHydrationLane:
416+
case InputContinuousLane:
417+
// User interactions should expire slightly more quickly.
418+
//
419+
// NOTE: This is set to the corresponding constant as in Scheduler.js.
420+
// When we made it larger, a product metric in www regressed, suggesting
421+
// there's a user interaction that's being starved by a series of
422+
// synchronous updates. If that theory is correct, the proper solution is
423+
// to fix the starvation. However, this scenario supports the idea that
424+
// expiration times are an important safeguard when starvation
425+
// does happen.
426+
return currentTime + 250;
427+
case DefaultHydrationLane:
428+
case DefaultLane:
429+
case TransitionHydrationLane:
430+
case TransitionLane1:
431+
case TransitionLane2:
432+
case TransitionLane3:
433+
case TransitionLane4:
434+
case TransitionLane5:
435+
case TransitionLane6:
436+
case TransitionLane7:
437+
case TransitionLane8:
438+
case TransitionLane9:
439+
case TransitionLane10:
440+
case TransitionLane11:
441+
case TransitionLane12:
442+
case TransitionLane13:
443+
case TransitionLane14:
444+
case TransitionLane15:
445+
case TransitionLane16:
446+
case RetryLane1:
447+
case RetryLane2:
448+
case RetryLane3:
449+
case RetryLane4:
450+
case RetryLane5:
451+
return currentTime + 5000;
452+
case SelectiveHydrationLane:
453+
case IdleHydrationLane:
454+
case IdleLane:
455+
case OffscreenLane:
456+
// Anything idle priority or lower should never expire.
457+
return NoTimestamp;
458+
default:
459+
if (__DEV__) {
460+
console.error(
461+
'Should have found matching lanes. This is a bug in React.',
462+
);
463+
}
464+
return NoTimestamp;
438465
}
439466
}
440467

0 commit comments

Comments
 (0)