79645234

Date: 2025-05-30 09:55:32
Score: 1
Natty:
Report link

You're correct — useDeferredValue and startTransition behave differently.


useDeferredValue


useDeferredValue2 (with startTransition)

function useDeferredValue2(val) {
  const [deferred, setDeferred] = useState(val);

  useEffect(() => {
    React.startTransition(() => {
      setDeferred(val);
    });
  }, [val]);

  return deferred;
}

useDeferredValue3 (plain setState)

function useDeferredValue3(val) {
  const [deferred, setDeferred] = useState(val);

  useEffect(() => {
    setDeferred(val);
  }, [val]);

  return deferred;
}

Hook Priority Time-Sliced Rendering Uses Transition
useDeferredValue Normal ❌ No ✅ Internal deferral only
useDeferredValue2 Normal ✅ Yes ✅ Yes
useDeferredValue3 Immediate ❌ No ❌ No

If your goal is to break up long renders and improve responsiveness, use startTransition. useDeferredValue is helpful for deferring values, but it won't split up rendering work.

Happy coding!!

Reasons:
  • RegEx Blacklisted phrase (2): urgent
  • Long answer (-1):
  • Has code block (-0.5):
  • Low reputation (0.5):
Posted by: Satya Pendem