Documentación

Monitorización (Sentry)

Monitorización de errores con Sentry — configuración, traces de rendimiento, source maps y depuración en producción.

Abrir enChatGPT (se abre en una pestaña nueva)Claude (se abre en una pestaña nueva)Cursor (se abre en una pestaña nueva)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

  1. Crea un proyecto Sentry (plataforma: Next.js)
  2. Copia el DSN desde Project Settings → Client Keys
  3. Para source maps (builds de producción), crea un auth token con permiso de release upload
  4. Define las env vars:
VariableScopePurpose
NEXT_PUBLIC_SENTRY_DSNPublicEnables Sentry when set
SENTRY_AUTH_TOKENCI / buildSource map upload
SENTRY_ORGCI / buildOrganization slug
SENTRY_PROJECTCI / buildProject 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 start

Muestreo 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

  1. Abre Sentry → Issues
  2. Filtra por environment: production
  3. Haz clic en un issue → stack trace, breadcrumbs, user id
  4. Reproduce con pnpm build && pnpm start en 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

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 las env vars de Sentry.