Documentação
Monitoramento (Sentry)
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
- Crie um projeto Sentry (plataforma: Next.js)
- Copie o DSN em Project Settings → Client Keys
- Para source maps (builds de produção), crie um auth token com permissão de release upload
- Defina as env vars:
| Variable | Scope | Purpose |
|---|---|---|
NEXT_PUBLIC_SENTRY_DSN | Public | Enables Sentry when set |
SENTRY_AUTH_TOKEN | CI / build | Source map upload |
SENTRY_ORG | CI / build | Organization slug |
SENTRY_PROJECT | CI / build | Project 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 startAmostragem 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
- Abra o Sentry → Issues
- Filtre por
environment: production - Clique em um issue → stack trace, breadcrumbs, user id
- Reproduza com
pnpm build && pnpm startlocalmente 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
| What | Where |
|---|---|
| Enable rules & sampling | src/lib/monitoring/config.ts |
| Scrubbing | src/lib/monitoring/scrub.ts |
| Shared init options | src/lib/monitoring/options.ts |
captureException, user context | src/lib/monitoring/index.ts |
| Client init | src/instrumentation-client.ts |
| Server/edge init | src/instrumentation.ts, sentry.server.config.ts, sentry.edge.config.ts |
| Build / source maps | next.config.ts |
Environment Variables — todas as env vars do Sentry.