studio-error-handling

Padrão de exibição de erros e solução de problemas para o Supabase Studio. Use quando

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.

Mais skills de supabase

studio-e2e-tests
supabase
Escreva e execute testes E2E com Playwright para o Supabase Studio. Use quando solicitado.
official
vitest
supabase
Framework de testes unitários rápidos Vitest, alimentado por Vite, com API compatível com Jest. Use ao escrever testes, criar mocks, configurar cobertura ou trabalhar com testes...
official
skill-creator
supabase
Guia abrangente para criar habilidades modulares que estendem as capacidades do Claude com conhecimento especializado e fluxos de trabalho. As habilidades consistem em um arquivo SKILL.md obrigatório com frontmatter YAML e instruções em markdown, além de recursos opcionais agrupados (scripts, referências, assets) organizados por propósito e carregados progressivamente para conservar contexto. Projete habilidades em torno de exemplos de uso concretos; identifique scripts reutilizáveis para tarefas determinísticas, arquivos de referência para conhecimento de domínio e assets para...
official
supabase
supabase
Use ao realizar QUALQUER tarefa envolvendo Supabase. Gatilhos: produtos Supabase (Database, Auth, Edge Functions, Realtime, Storage, Vectors, Cron, Queues); cliente…
official
supabase-server
supabase
Use ao escrever código server-side com Supabase — Edge Functions, apps Hono, handlers de webhook ou qualquer backend que precise de autenticação e criação de cliente 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
Use ao revisar PRs que envolvem packages/dev-tools/, packages/common/posthog-client.ts,
official
e2e-studio-tests
supabase
Execute testes e2e no aplicativo Studio. Use quando solicitado a executar testes e2e, testes do Studio, testes Playwright ou testar a funcionalidade.
official