Skip to main content
Browser monitoring é uma funcionalidade em beta do AppSignal Labs. O pacote @appsignal/browser é publicado sob a tag beta no npm, e sua configuração e API ainda podem mudar entre releases beta. Compartilhe seu feedback na nossa comunidade no Discord.
Erros de renderização do React nem sempre chegam de forma confiável ao handler de erros global do navegador. Envolva a parte afetada da sua aplicação em um error boundary para relatá-los. O AppSignal para Browser inclui um em @appsignal/browser/react; não há pacote extra para instalar. Opcional: React 16.8 ou posterior, se você quiser usar o error boundary que acompanha o pacote.

Capturando erros de renderização

Passe captureError como prop para que o boundary possa relatar os erros que captura. O boundary relata o erro capturado. Seu callback onError também recebe a pilha de componentes do React para seu próprio tratamento. Nesta beta, essa pilha de componentes não é incluída nos relatórios de erro comuns.

Recuperando de um erro

Passe uma função como fallback para dar ao usuário uma forma de tentar de novo. Ela recebe o erro e uma função reset, que limpa o erro e renderiza os filhos novamente:

Envolvendo um único componente

withErrorBoundary envolve um componente, o que é conveniente para widgets que devem falhar sem derrubar a página:

Props

Coloque boundaries em torno de rotas ou widgets com um fallback útil. Um widget que falhar pode então deixar o resto da página funcionando. Um boundary na raiz captura tudo, mas substitui sua aplicação inteira pelo fallback.

Relatando a rota atual

Relate a rota atual no carregamento inicial e após cada navegação. Passe um template como /orders/:id, não a URL resolvida /orders/42. Nem os IDs de rota do React Router nem o usePathname() do Next.js App Router fornecem esse template automaticamente. O exemplo do React Router usa um data router como createBrowserRouter; renderize RouteReporter dentro dele.
Com o Next.js App Router, renderize RouteReporter a partir da rota correspondente. Por exemplo, passe routeTemplate="/orders/[id]" a partir de app/orders/[id]/page.jsx. usePathname() retorna a URL resolvida, como /orders/42, então não a use como template.
Importe sua configuração do AppSignal antes do seu roteador. O SDK e alguns roteadores fazem patch em history.pushState, e o SDK se compõe com um patch existente em vez de substituí-lo. Carregar o roteador primeiro pode deixar a navegação no lado do cliente sem ser relatada.

Relatando erros de handlers de eventos e effects

Um error boundary captura erros lançados durante a renderização. Ele não captura erros lançados em um handler de evento, em um setTimeout ou em uma promise rejeitada dentro de um effect. Os não capturados chegam a window e são relatados automaticamente. Para os demais, relate você mesmo: