useMemoizedIf
Computes and caches a value only while a condition holds. When the condition is false it returns null instead of running the block, and it recomputes whenever the condition or the keys change.
usePreviousValue
Returns the value this hook held on the previous distinct value, or null on the first build. It tracks the last value that differed from the current one, so it is the safe way to ask "what was this before it changed?".
usePreviousIfNull
Returns the most recent non-null value it has seen. While the incoming value is non-null it passes it straight through and remembers it; when the value goes null, it keeps returning the last non-null value instead. This is the packaged fix for refresh blink, where content flashes away while a computed state reloads.