Documentação

Monitoramento (Sentry)

Monitoramento de erros com Sentry — setup, traces de performance, source maps e debugging em produção.

Abrir emChatGPT (abre em uma nova aba)Claude (abre em uma nova aba)Cursor (abre em uma nova aba)Monitoramento de erros com Sentry — setup, traces de performance, source maps e debugging em produção.

O Motoko Base usa Sentry para monitoramento de erros em produção. Não há um dashboard de monitoramento no app — use a UI web do Sentry.

Official docs: Sentry Next.js documentation

Setup

  1. Crie um projeto Sentry (plataforma: Next.js)
  2. Copie o DSN em Project Settings → Client Keys
  3. Para source maps (builds de produção), crie um auth token com permissão de release upload
  4. Defina as env vars:
VariableScopePurpose
NEXT_PUBLIC_SENTRY_DSNPublicEnables Sentry when set
SENTRY_AUTH_TOKENCI / buildSource map upload
SENTRY_ORGCI / buildOrganization slug
SENTRY_PROJECTCI / buildProject slug

Deixe o DSN indefinido para desativar o monitoramento por completo.

Development vs production

O Sentry fica desligado durante next dev (mesmo com DSN definido) para evitar ruído de listeners do webpack. Para testar localmente:

pnpm build && pnpm start

Amostragem de performance: 10% em produção, 0% nos demais casos. Session Replay e User Feedback ficam desligados por padrão.

Errors & performance

  • Exceções não tratadas são capturadas automaticamente (cliente + servidor)
  • Erros do App Router: src/app/global-error.tsx, src/app/dashboard/error.tsx
  • Captura manual para falhas capturadas:
import { captureException } from "@/lib/monitoring";

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

Não reporte resultados esperados (erros de validação, signed-out, not-found, config ausente).

O user id autenticado é anexado no sign-in (Sentry.setUser({ id })) e limpo no sign-out.

Source maps

next.config.ts envolve o build com withSentryConfig. Quando SENTRY_AUTH_TOKEN, SENTRY_ORG e SENTRY_PROJECT estão definidos no CI:

  • Source maps sobem durante next build
  • Maps do cliente são apagados após o upload
  • Stack traces resolvem para TypeScript em Sentry Issues

Os builds passam sem credenciais de upload — você só não terá stacks legíveis.

Eventos do navegador podem passar pelo túnel /sentry-tunnel (ajuda com ad blockers).

Production debugging

  1. Abra o Sentry → Issues
  2. Filtre por environment: production
  3. Clique em um issue → stack trace, breadcrumbs, user id
  4. Reproduza com pnpm build && pnpm start localmente contra um projeto Sentry não produtivo

Dados sensíveis são limpos (src/lib/monitoring/scrub.ts) — sem senhas, tokens, API keys ou prompts de 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 — todas as env vars do Sentry.