Skip to content

Bug: useDeferredValue with a value that is new every render hangs browser #19925

Closed
@chriserickson

Description

@chriserickson

React version: 0.0.0-experimental-94c0244ba

Steps To Reproduce

Attempt to load the following component:

export default function Component() {
  const value = { something: "I'm new every render" };
  const deferredValue = React.unstable_useDeferredValue(value, {
     timeoutMs: 3000
  });
  console.log("Component render");
  return (
    <div>{deferredValue}</div>
  );
}

The above (buggy) component will peg the CPU and hang the browser. While this is understandable (there are theoretically infinite concurrent trees), it is an easy pitfall for someone to fall into.

Not sure if this could be identified by a console warning or lint rule.

The current behavior

Browser hangs.

The expected behavior

A lint rule informs me of my error or the console warns me that the deferred value changes every render.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions