Skip to content

Performance Hooks

useLatest

Get the latest value without re-rendering.

tsx
import { useLatest } from '@outilx/react-hooks';

function Component() {
  const [count, setCount] = useState(0);
  const latestCount = useLatest(count);
  
  useEffect(() => {
    const timer = setInterval(() => {
      // Always get the latest count value
      console.log(latestCount.current);
    }, 1000);
    
    return () => clearInterval(timer);
  }, []); // No need to add count to dependencies
  
  return (
    <button onClick={() => setCount(c => c + 1)}>
      Count: {count}
    </button>
  );
}

useMemoizedFn

Memoize function to avoid re-creation.

tsx
import { useMemoizedFn } from '@outilx/react-hooks';

function Component() {
  const [count, setCount] = useState(0);
  
  // Function reference never changes
  const handleClick = useMemoizedFn(() => {
    console.log(count);
    setCount(count + 1);
  });
  
  return (
    <ChildComponent onClick={handleClick} />
  );
}