Error Boundaries no React: Salve Sua Aplicação de Crashs Desnecessários
Error Boundaries no React: o que são e por que você deveria se importar?
Olha, deixa eu ser direto: toda aplicação React, por mais bem estruturada que seja, vai encontrar erros. Portanto, reconhecer isso é o primeiro passo para lidar com os problemas. É inevitável. Você pode até fingir que vive num mundo onde bugs não existem, mas a realidade vai te dar um tapa na cara mais cedo ou mais tarde. E é aqui que entram os Error Boundaries.
São componentes React que reconhecem falhas e te ajudam a lidar com elas de forma elegante — tipo aquele amigo que não entra em pânico quando a casa está pegando fogo. Consequentemente, eles garantem que sua aplicação continue funcionando mesmo sob pressão.
Hoje vou te mostrar como usar Error Boundaries no React para evitar que sua aplicação exploda na cara do usuário. Vamos falar de teoria, mas também botar a mão no código. Bora?
O que são Error Boundaries?
Error Boundaries são componentes React que interceptam erros que acontecem durante a renderização, nos métodos do ciclo de vida ou em componentes filhos. Eles foram introduzidos no React 16 e têm a missão de evitar que um erro isole sua aplicação inteira. Só o erro é tratado, e o resto continua funcionando de boa.
E olha que interessante: Error Boundaries não capturam erros em handlers de eventos, códigos assíncronos ou no lado do servidor. Entretanto, eles são eficazes para tratar erros de renderização e ciclo de vida. Isso significa que eles são excelentes para proteger a interface de “bugs bobos”, mas você ainda vai ter que lidar com erros mais hardcore em outros lugares.
Por que usar Error Boundaries?
Você pode estar pensando: “Pô, Glaubin, mas pra que eu preciso disso?” Para começar, aqui vai uma lista pra te convencer:
1. Tratamento de erros não é frescura
Se o usuário está navegando no seu site e PÁ! tudo quebra porque um componente deu erro, a culpa é sua. Com Error Boundaries, você pode capturar o erro e exibir uma interface amigável, como: “Ops, algo deu errado! Tenta de novo mais tarde.” Bem melhor do que aquela tela branca, né?
2. Integração com serviços de log
Você pode usar ferramentas como o Sentry para logar os erros capturados. Assim, não só você trata o problema na hora, mas também ganha dados valiosos pra corrigir os bugs depois.
3. Melhor usabilidade
Imagine o usuário navegando por uma loja online e a lista de produtos dá pau. Sem Error Boundaries, tudo crasha — até o cabeçalho e o rodapé. Com Error Boundaries, você pode tratar apenas o componente quebrado e deixar o resto funcionando, evitando que o usuário saia do site xingando até a sua mãe.
Como usar Error Boundaries no React (o jeito clássico)
Agora que você sabe o que são e por que são importantes, assim sendo, vamos ao que interessa: como implementá-los.
Criando um Error Boundary com classes
Sim, meu caro, Error Boundaries só podem ser criados com componentes de classe. Só que não é nenhum bicho de sete cabeças:
Aqui está o que acontece:
- getDerivedStateFromError atualiza o estado para exibir a interface de fallback.
- componentDidCatch é onde você loga o erro ou faz alguma outra mágica.
Use esse componente envolvendo qualquer parte da sua aplicação que pode dar erro:
Usando Error Boundaries com hooks? Temos um hack!
Se você prefere usar hooks (quem não?), existe uma biblioteca chamada react-error-boundary que facilita sua vida:
Como usar:
Com essa biblioteca, você pode usar hooks e ainda capturar erros sem ter que lidar com classes. Show, não?
Dicas práticas para Error Boundaries
- Coloque Error Boundaries em níveis estratégicos: Pense neles como “camadas de proteção”. Envolva componentes grandes, como páginas inteiras ou árvores de componentes, mas evite colocar um em cada canto.
- Integre com ferramentas de log: Como mencionamos, usar algo como o Sentry ajuda a monitorar erros e a melhorar a aplicação de forma proativa.
- Fallbacks amigáveis: Nada de mensagens genéricas como “Erro 404” ou “Algo deu errado”. Explique o que aconteceu de forma simples e, se possível, ofereça uma solução (como um botão para tentar novamente).
Error Boundaries no Next.js
Se você está usando o Next.js (outra moda que não vai embora tão cedo), o processo é ligeiramente diferente.
Para a pasta pages, coloque o Error Boundary envolvendo componentes no arquivo _app.js
:
Na pasta app (arquitetura nova), basta criar um arquivo error.js
para cada rota onde você quer um Error Boundary. Por exemplo:
Conclusão
Error Boundaries são indispensáveis. Eles não são a solução para todos os problemas, mas ajudam a salvar a pele do usuário e a sua reputação. E o melhor: com ferramentas como react-error-boundary
, você pode usá-los até com hooks. Não tem desculpa pra não implementar.
Agora vai, coloca isso em prática e me agradece depois. Se der problema, é só usar um Error Boundary pra cobrir o bug! 😅
Publicar comentário