Skip to main content
Browser monitoring est une fonctionnalité en beta d’AppSignal Labs. Le package @appsignal/browser est publié sous le tag beta sur npm, et sa configuration ainsi que son API peuvent encore changer d’une release beta à l’autre. Partagez vos retours dans notre communauté Discord.
Les erreurs de rendu de React n’atteignent pas de manière fiable le gestionnaire d’erreurs global du navigateur. Encadrez la partie concernée de votre application dans une error boundary pour les rapporter. AppSignal pour Browser en fournit une à @appsignal/browser/react ; il n’y a aucun package supplémentaire à installer. Optionnel : React 16.8 ou une version plus récente, si vous souhaitez utiliser l’error boundary fournie avec le package.

Intercepter les erreurs de rendu

Passez captureError en tant que prop, afin que la boundary puisse rapporter les erreurs qu’elle intercepte. La boundary rapporte l’erreur interceptée. Son callback onError reçoit également la pile de composants de React pour votre propre traitement. Dans cette bêta, cette pile de composants n’est pas incluse dans les rapports d’erreur habituels.

Se remettre d’une erreur

Passez une fonction comme fallback pour donner à l’utilisateur un moyen de réessayer. Elle reçoit l’erreur et une fonction reset, qui efface l’erreur et rend de nouveau les enfants :

Envelopper un seul composant

withErrorBoundary enveloppe un composant, ce qui est pratique pour les widgets qui doivent pouvoir échouer sans emporter la page :

Props

Placez des boundaries autour des routes ou des widgets avec un repli utile. Un widget en échec peut alors laisser le reste de la page fonctionner. Une seule boundary à la racine intercepte tout, mais remplace l’application entière par le repli.

Rapporter la route actuelle

Rapportez la route actuelle au chargement initial et après chaque navigation. Passez un template comme /orders/:id, pas l’URL résolue /orders/42. Ni les ID de route de React Router ni usePathname() de Next.js App Router ne fournissent ce template automatiquement. L’exemple React Router utilise un data router comme createBrowserRouter ; rendez RouteReporter à l’intérieur.
Avec Next.js App Router, rendez RouteReporter depuis la route correspondante. Par exemple, passez routeTemplate="/orders/[id]" depuis app/orders/[id]/page.jsx. usePathname() renvoie l’URL résolue, comme /orders/42, ne l’utilisez donc pas comme template.
Importez votre configuration AppSignal avant votre routeur. Le SDK et certains routeurs modifient tous les deux history.pushState, et le SDK se compose avec un patch existant au lieu de le remplacer. Charger le routeur en premier peut laisser la navigation côté client non rapportée.

Rapporter les erreurs des gestionnaires d’événements et des effets

Une error boundary intercepte les erreurs levées pendant le rendu. Elle n’intercepte pas les erreurs levées dans un gestionnaire d’événements, un setTimeout ou une promesse rejetée à l’intérieur d’un effet. Celles qui ne sont pas interceptées atteignent window et sont rapportées automatiquement. Pour les autres, rapportez-les vous-même :