R
Interview Deckreact · next.js · senior/staff
✓ 0·⟳ 0·122
Padrão

Error Boundaries

Componentes class que capturam erros em sua árvore e exibem UI de fallback em vez de quebrar o app.

Error Boundaries são componentes class que implementam componentDidCatch ou getDerivedStateFromError. Capturam erros lançados em componentes filhos durante render, lifecycle ou construtores. Não capturam: event handlers, async, SSR, ou erros do próprio Error Boundary.

Problema
Um erro em qualquer componente quebra a árvore inteira do React, mostrando tela em branco para o usuário.
Solução
Error Boundaries 'isolam' partes da UI — quando algo quebra dentro, mostra fallback UI sem afetar o resto. Combine com Sentry/Bugsnag para reportar.
Tip
Use react-error-boundary (lib) para versão moderna com hooks e reset. Coloque ErrorBoundaries em pontos estratégicos (rota, sidebar, feed), não em todo componente.
class ErrorBoundary extends React.Component {
  state = { hasError: false };

  static getDerivedStateFromError(error) {
    return { hasError: true };
  }

  componentDidCatch(error, info) {
    Sentry.captureException(error, { extra: info });
  }

  render() {
    if (this.state.hasError) return <h1>Algo deu errado.</h1>;
    return this.props.children;
  }
}

// Uso
<ErrorBoundary>
  <Dashboard />
</ErrorBoundary>
Q.Por que Error Boundary precisa ser class?▾
A.Os métodos componentDidCatch e getDerivedStateFromError são lifecycle de class. Hooks ainda não têm equivalente direto. Use a lib react-error-boundary para uma API com hooks por baixo.
Q.O que Error Boundaries NÃO capturam?▾
A.1) Erros em event handlers (use try/catch). 2) Async (Promises rejeitadas, fetch). 3) SSR (use error.tsx no Next.js). 4) Erros no próprio Error Boundary. 5) Erros de hidratação (parcialmente).
Q.No Next.js App Router, como tratar erros?▾
A.error.tsx em cada rota cria um Error Boundary automático. global-error.tsx para o root. not-found.tsx para 404. Esses arquivos precisam ser Client Components ('use client').
26/122← →