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

React Profiler

Ferramenta no React DevTools que mostra quais componentes renderizaram, por quê e quanto custou.

React Profiler é uma aba do React DevTools que grava sessões de renderização e mostra: quais componentes renderizaram, em que fase (mount/update), tempo gasto, e o motivo (props, state, context). Existe também a API Profiler para uso programático.

Problema
console.log e Lighthouse não mostram qual componente React específico está causando lentidão.
Solução
React Profiler → flamegraph com timing por componente + 'Why did this render?' para diagnóstico exato.
Tip
Sempre faça profiling em modo Produção (build). O modo Desenvolvimento é propositalmente mais lento.
import { Profiler } from 'react';

<Profiler id="App" onRender={(id, phase, actualDuration) => {
  if (actualDuration > 16) {
    console.warn(`Lento: ${id} ${actualDuration}ms`);
  }
}}>
  <Dashboard />
</Profiler>
Q.O que significa actualDuration vs baseDuration?
A.actualDuration é o tempo real do render (com memoização). baseDuration é o tempo SEM memoização (re-renderizando tudo). A diferença mostra quanto a memoização está economizando.
Q.Como medir performance em produção real?
A.Use Web Vitals (LCP, INP, CLS) via web-vitals lib enviando para analytics. Profiler é para development. Em produção, Real User Monitoring (RUM) é o caminho.
Q.Profiler pode rodar em produção?
A.Build de produção remove a Profiler API por padrão. Para habilitar, use o build especial com profiling enabled (React docs explicam). Não recomendado em produção real.
15/122← →