| Tool | What it memoizes | Returns |
|---|---|---|
React.memo | Component output | Same JSX if props unchanged |
useCallback | Function reference | Same function if deps unchanged |
useMemo | Computed value | Cached value if deps unchanged |
js// React.memo — skip re-render if props shallow-equal const Child = React.memo(({ count }) => <p>{count}</p>); // useCallback — stable function reference const handleClick = useCallback(() => { ... }, [deps]); // useMemo — expensive calculation const sorted = useMemo(() => data.sort(compareFn), [data]);