studio-error-handling

Pola tampilan kesalahan dan pemecahan masalah untuk Supabase Studio. Gunakan ketika

npx skills add https://github.com/supabase/supabase --skill studio-error-handling

Studio Error Handling Pattern

Full docs and code examples: apps/studio/components/interfaces/ErrorHandling/README.md

How it works

Classification happens in the data layer: handleError in data/fetchers.ts tests the error message against ERROR_PATTERNS and throws the matching error subclass (e.g. ConnectionTimeoutError extends ResponseError). The component (ErrorMatcher) reads errorType from the instance and does an O(1) lookup — it never does regex matching.

handleError() → throws ConnectionTimeoutError → React Query catches → ErrorMatcher reads errorType → renders troubleshooting

Key files

FilePurpose
data/error-patterns.tsArray of { pattern, ErrorClass } — the regex lives here
types/api-errors.tsError classes, KnownErrorType union, ClassifiedError type
ErrorMatcher.tsxComponent — reads errorType, looks up mapping, renders
error-mappings.tsxRecord<KnownErrorType, { id, Troubleshooting: ComponentType }>
errorMappings/ConnectionTimeout.tsxReference troubleshooting component
TroubleshootingSections.tsxReusable accordion section components
TroubleshootingAccordion.tsxAccordion wrapper with telemetry

Usage

Pass the full error object from React Query — not error.message:

{
  isError && (
    <ErrorMatcher title="Failed to load tables" error={error} supportFormParams={{ projectRef }} />
  )
}

What NOT to do

  • Do not pass error.message to ErrorMatcher — pass the full error object so the class is preserved.
  • Do not put regex patterns in error-mappings.tsx — they belong in data/error-patterns.ts.
  • Do not use Object.assign to stamp errorType — throw a proper subclass instead.
  • Do not pass a raw URL string for support — use supportFormParams={{ projectRef }}.
  • Do not put the page title inside the error mapping — it belongs on the <ErrorMatcher> caller.
  • Do not add callback props (onDebugWithAI, onRestartProject) to troubleshooting components — use hooks inside them instead.

Lebih banyak skill dari supabase

studio-e2e-tests
supabase
Menulis dan menjalankan tes E2E Playwright untuk Supabase Studio. Gunakan saat diminta.
official
vitest
supabase
Kerangka kerja pengujian unit cepat Vitest yang didukung oleh Vite dengan API yang kompatibel dengan Jest. Gunakan saat menulis pengujian, mocking, mengonfigurasi cakupan, atau bekerja dengan pengujian…
official
skill-creator
supabase
Panduan komprehensif untuk membuat skill modular yang memperluas kemampuan Claude dengan pengetahuan dan alur kerja khusus. Skill terdiri dari file SKILL.md yang diperlukan dengan frontmatter YAML dan instruksi markdown, ditambah sumber daya opsional yang dibundel (skrip, referensi, aset) yang diorganisir berdasarkan tujuan dan dimuat secara progresif untuk menghemat konteks. Rancang skill berdasarkan contoh penggunaan konkret; identifikasi skrip yang dapat digunakan kembali untuk tugas deterministik, file referensi untuk pengetahuan domain, dan aset untuk...
official
supabase
supabase
Gunakan saat melakukan tugas apa pun yang melibatkan Supabase. Pemicu: produk Supabase (Database, Auth, Edge Functions, Realtime, Storage, Vectors, Cron, Queues); klien…
official
supabase-server
supabase
Gunakan saat menulis kode sisi server dengan Supabase — Edge Functions, aplikasi Hono, penangan webhook, atau backend apa pun yang memerlukan pembuatan klien dan autentikasi Supabase.…
official
clickhouse-logs-queries
supabase
Write, review, and migrate Supabase logs queries against the ClickHouse-backed `logs` table (the `logs.all.otel` analytics endpoint). Use this whenever a task…
official
dev-toolbar-review
supabase
Gunakan saat meninjau PR yang menyentuh packages/dev-tools/, packages/common/posthog-client.ts,
official
e2e-studio-tests
supabase
Jalankan tes e2e di aplikasi Studio. Gunakan saat diminta untuk menjalankan tes e2e, menjalankan tes studio, tes playwright, atau menguji fitur.
official