R
Interview Deckreact · next.js · senior/staff
0·0·122
Performance

Over-memoização

useMemo em primitivos é puro desperdício — strings, numbers e booleans já são comparados por valor.

Over-memoização é o uso excessivo de useMemo/useCallback/React.memo em casos onde o custo da memoização supera o benefício. Cada memoização tem custo de comparação e armazenamento — usar onde não há ganho real piora a performance.

Problema
Usar useMemo em valores que o React já compara nativamente adiciona custo sem nenhum benefício.
Solução
Memoizar apenas objetos, arrays e cálculos genuinamente custosos.
Tip
Regra: primitivo estável? Sem memo. Objeto/array/cálculo > ~5ms? Memo vale.
// ❌ Over-memoização inútil
const nome = useMemo(() => "Felipe", []);
const ativo = useMemo(() => true, []);

// ✅ Memo que justifica
const listaFiltrada = useMemo(
  () => items.filter(i => i.active).sort(...),
  [items]
);
Q.Quando useCallback é desnecessário?
A.Quando a função não é passada como prop para componentes memoizados, nem é dependência de outro hook. Em handlers locais (onClick), useCallback é puro overhead.
Q.O React Forget vai resolver isso?
A.Sim. React Compiler (ex-React Forget) memoiza automaticamente componentes e hooks em compile-time. Quando estável, useMemo/useCallback manuais se tornarão raros.
Q.Como medir se memo está ajudando?
A.React DevTools Profiler. Compare 'tempo de render' antes e depois. Se as props nunca mudam de valor mas mudam de referência, memo ajuda. Se mudam sempre, memo só adiciona custo.
6/122← →