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.@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
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 commefallback 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.
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, unsetTimeout 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 :