Documentation

Monitoring (Sentry)

Surveillance d'erreurs Sentry — configuration, traces de performance, source maps et débogage en production.

Ouvrir dansChatGPT (s’ouvre dans un nouvel onglet)Claude (s’ouvre dans un nouvel onglet)Cursor (s’ouvre dans un nouvel onglet)Surveillance d'erreurs Sentry — configuration, traces de performance, source maps et débogage en production.

Motoko Base utilise Sentry pour la surveillance d'erreurs en production. Il n'y a pas de dashboard de monitoring dans l'app — utilisez l'UI web Sentry.

Official docs: Sentry Next.js documentation

Setup

  1. Créez un projet Sentry (plateforme : Next.js)
  2. Copiez le DSN depuis Project Settings → Client Keys
  3. Pour les source maps (builds de production), créez un auth token avec permission de release upload
  4. Définissez les variables d'environnement :
VariableScopePurpose
NEXT_PUBLIC_SENTRY_DSNPublicEnables Sentry when set
SENTRY_AUTH_TOKENCI / buildSource map upload
SENTRY_ORGCI / buildOrganization slug
SENTRY_PROJECTCI / buildProject slug

Laissez le DSN non défini pour désactiver entièrement le monitoring.

Development vs production

Sentry est désactivé pendant next dev (même avec DSN défini) pour éviter le bruit des listeners webpack. Pour tester en local :

pnpm build && pnpm start

Échantillonnage de performance : 10 % en production, 0 % sinon. Session Replay et User Feedback sont désactivés par défaut.

Errors & performance

  • Les exceptions non gérées sont capturées automatiquement (client + serveur)
  • Erreurs App Router : src/app/global-error.tsx, src/app/dashboard/error.tsx
  • Capture manuelle pour les échecs capturés :
import { captureException } from "@/lib/monitoring";

try {
  // ...
} catch (error) {
  captureException(error); // fail-open — never throws
}

Ne reportez pas les résultats attendus (erreurs de validation, signed-out, not-found, config manquante).

L'user id authentifié est attaché à la connexion (Sentry.setUser({ id })), effacé à la déconnexion.

Source maps

next.config.ts enveloppe le build avec withSentryConfig. Lorsque SENTRY_AUTH_TOKEN, SENTRY_ORG et SENTRY_PROJECT sont définis en CI :

  • Les source maps sont uploadés pendant next build
  • Les maps client sont supprimés après l'upload
  • Les stack traces se résolvent en TypeScript dans Sentry Issues

Les builds réussissent sans credentials d'upload — vous n'aurez simplement pas de stacks lisibles.

Les événements navigateur peuvent passer par le tunnel /sentry-tunnel (aide contre les ad blockers).

Production debugging

  1. Ouvrez Sentry → Issues
  2. Filtrez par environment: production
  3. Cliquez sur un issue → stack trace, breadcrumbs, user id
  4. Reproduisez avec pnpm build && pnpm start en local contre un projet Sentry non productif

Les données sensibles sont nettoyées (src/lib/monitoring/scrub.ts) — pas de mots de passe, tokens, clés API ni prompts IA.

Where to change this

WhatWhere
Enable rules & samplingsrc/lib/monitoring/config.ts
Scrubbingsrc/lib/monitoring/scrub.ts
Shared init optionssrc/lib/monitoring/options.ts
captureException, user contextsrc/lib/monitoring/index.ts
Client initsrc/instrumentation-client.ts
Server/edge initsrc/instrumentation.ts, sentry.server.config.ts, sentry.edge.config.ts
Build / source mapsnext.config.ts

Environment Variables — toutes les variables Sentry.