studio-error-handling

tarafından supabase

Supabase Studio için hata görüntüleme ve sorun giderme deseni. Şu durumlarda kullanın:

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.

supabase tarafından daha fazla skill

studio-e2e-tests
supabase
Supabase Studio için Playwright E2E testleri yaz ve çalıştır. İstendiğinde kullan.
pm-the-docs
supabase
Docs-PM, "Write the docs" yazma süreci için karar desteği sağlar — Frame ve Shape aşamalarında hedef kitle, aşama ve kesişen kapsam kararlarını verir,…
studio-best-practices
supabase
Supabase Studio için React ve TypeScript en iyi uygulamaları. Studio bileşenleri yazarken veya incelerken kullanın — boolean adlandırma, bileşen yapısı, …
docs-content
supabase
Yazın, düzenleyin, organize edin ve gözden geçirin Supabase içeriğini apps/docs içinde her yerde — kılavuzlar, açıklamalar, eğitimler, sorun giderme girdileri, referans dokümanları ve…
studio-mock-api-tests
supabase
Supabase Studio için, API isteklerini ağ katmanında MSW ile mocklayan bileşen testleri. React bileşenini çalıştıran bir bileşen testi yazarken veya incelerken kullanın…
studio-ui-patterns
supabase
Supabase Studio için tasarım sistemi UI desenleri. Sayfalar, formlar, tablolar, grafikler, boş durumlar, gezinme, kartlar, uyarılar veya kenar çubukları oluştururken veya güncellerken kullanın…
react-hook-form
supabase
React Hook Form kullanımını monorepo'nun her yerinde doğru şekilde yapın — veri akışı, abonelikler, sıfırlama, dirty state, sayı girişleri ve kontrollü giriş kuralları. Bunu yükle…
studio-queries
supabase
Supabase Studio'da veri getirme için React Query kuralları. apps/studio/data/ içinde sorgu hook'ları, mutasyon hook'ları veya sorgu anahtarları yazarken veya incelerken kullanın —…