/** * Next.js client-side instrumentation. Runs in the browser bundle * before the app renders. Captures unhandled exceptions, promise * rejections, and router navigation errors. Also enables Sentry * Session Replay (free tier) so we can rewatch what the user was * doing when an error fired — invaluable for solo-dev beta debugging. */ import * as Sentry from '@sentry/nextjs'; Sentry.init({ dsn: process.env.NEXT_PUBLIC_SENTRY_DSN, enabled: Boolean(process.env.NEXT_PUBLIC_SENTRY_DSN), environment: process.env.NEXT_PUBLIC_SENTRY_ENVIRONMENT || process.env.NODE_ENV, tracesSampleRate: 1.0, // Session Replay: record a video-like reconstruction of the user's // tab on every error, plus 10% of healthy sessions for context. // Free tier covers this comfortably. replaysSessionSampleRate: 0.1, replaysOnErrorSampleRate: 1.0, integrations: [ Sentry.replayIntegration({ // Mask all text/inputs by default — beta users may type // anything into chat. Selectively unmask later if needed. maskAllText: true, blockAllMedia: true, }), ], }); // Required for client-side router transition errors to reach Sentry. export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;