mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 09:25:06 +03:00
## Problem Docs discarded every browser exception because its third-party stack-frame filter never returned a value from its predicate. Errors captured by the page error boundaries were discarded too. ## Fix Use Studio's Sentry SDK tagging approach with a matching webpack application key, retaining page-crashing exceptions even when their frames are classified as third-party. Preserve consent and platform checks, and pass the source-map upload token through Turbo. ## How to test - Run `pnpm --filter docs run test:local:unwatch lib/sentry-client.test.ts` with the documented local Supabase prerequisites satisfied. Eleven filter regression checks passed locally using an isolated Vitest configuration. - On a production-mode preview with the docs DSN configured, accept telemetry consent and trigger a temporary client render error. Verify that the docs Sentry project receives it with `globalErrorBoundary: true` and readable stack traces. - Verify that third-party-only errors are filtered and declining consent suppresses browser reports. Prettier, focused filter/test TypeScript checks, and an in-memory transport check using the real Sentry SDK passed. Full app typecheck and lint are blocked locally by existing dependency/generated-file drift; the standard docs suite requires unavailable Docker access. Live Sentry ingestion and source-map uploads still need deployment verification. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Bug Fixes** - Improved error monitoring to distinguish documentation app boundary crashes from other exceptions. - Reduced noise in error reports by filtering third-party-only errors and respecting platform and consent settings. - Preserved reporting for first-party failures and critical application crashes. - **Chores** - Improved Sentry build and deployment configuration for more consistent error tracking. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
24 lines
699 B
TypeScript
24 lines
699 B
TypeScript
'use client'
|
|
|
|
import * as Sentry from '@sentry/nextjs'
|
|
import NextError from 'next/error'
|
|
import { useEffect } from 'react'
|
|
|
|
export default function GlobalError({ error }: { error: Error & { digest?: string } }) {
|
|
useEffect(() => {
|
|
Sentry.captureException(error, { tags: { globalErrorBoundary: true } })
|
|
}, [error])
|
|
|
|
return (
|
|
<html>
|
|
<body>
|
|
{/* `NextError` is the default Next.js error page component. Its type
|
|
definition requires a `statusCode` prop. However, since the App Router
|
|
does not expose status codes for errors, we simply pass 0 to render a
|
|
generic error message. */}
|
|
<NextError statusCode={0} />
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|