Documentación
Monitorización (Sentry)
Monitorización de errores con Sentry — configuración, traces de rendimiento, source maps y depuración en producción.
Motoko Base usa Sentry para monitorización de errores en producción. No hay un dashboard de monitorización en la app — usa la UI web de Sentry.
Official docs: Sentry Next.js documentation
Setup
- Crea un proyecto Sentry (plataforma: Next.js)
- Copia el DSN desde Project Settings → Client Keys
- Para source maps (builds de producción), crea un auth token con permiso de release upload
- Define las 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 |
Deja el DSN sin definir para desactivar la monitorización por completo.
Development vs production
Sentry está desactivado durante next dev (incluso con DSN definido) para evitar ruido de listeners de webpack. Para probar en local:
pnpm build && pnpm startMuestreo de rendimiento: 10% en producción, 0% en el resto. Session Replay y User Feedback están desactivados por defecto.
Errors & performance
- Las excepciones no controladas se capturan automáticamente (cliente + servidor)
- Errores de App Router:
src/app/global-error.tsx,src/app/dashboard/error.tsx - Captura manual para fallos capturados:
import { captureException } from "@/lib/monitoring";
try {
// ...
} catch (error) {
captureException(error); // fail-open — never throws
}No reportes resultados esperados (errores de validación, signed-out, not-found, config ausente).
El user id autenticado se adjunta en el sign-in (Sentry.setUser({ id })) y se limpia en el sign-out.
Source maps
next.config.ts envuelve el build con withSentryConfig. Cuando SENTRY_AUTH_TOKEN, SENTRY_ORG y SENTRY_PROJECT están definidos en CI:
- Los source maps se suben durante
next build - Los maps del cliente se eliminan tras la subida
- Los stack traces se resuelven a TypeScript en Sentry Issues
Los builds tienen éxito sin credenciales de upload — simplemente no tendrás stacks legibles.
Los eventos del navegador pueden tunelizarse a través de /sentry-tunnel (ayuda con ad blockers).
Production debugging
- Abre Sentry → Issues
- Filtra por
environment: production - Haz clic en un issue → stack trace, breadcrumbs, user id
- Reproduce con
pnpm build && pnpm starten local contra un proyecto Sentry no productivo
Los datos sensibles se limpian (src/lib/monitoring/scrub.ts) — sin contraseñas, tokens, API keys ni 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 las env vars de Sentry.