studio-error-handling

Patrón de visualización de errores y solución de problemas para Supabase Studio. Úselo cuando

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.

Más skills de supabase

studio-e2e-tests
supabase
Escribe y ejecuta pruebas E2E con Playwright para Supabase Studio. Úsalo cuando te lo pidan.
official
vitest
supabase
Marco de pruebas unitarias rápidas Vitest impulsado por Vite con API compatible con Jest. Úselo al escribir pruebas, simular, configurar cobertura o trabajar con pruebas...
official
skill-creator
supabase
Guía completa para crear habilidades modulares que extienden las capacidades de Claude con conocimientos especializados y flujos de trabajo. Las habilidades consisten en un archivo SKILL.md obligatorio con frontmatter YAML e instrucciones en markdown, además de recursos opcionales empaquetados (scripts, referencias, activos) organizados por propósito y cargados progresivamente para conservar el contexto. Diseñe habilidades en torno a ejemplos de uso concretos; identifique scripts reutilizables para tareas deterministas, archivos de referencia para conocimiento del dominio y activos para...
official
supabase
supabase
Úsalo al realizar CUALQUIER tarea que involucre Supabase. Activadores: productos de Supabase (Base de datos, Autenticación, Funciones Edge, Tiempo real, Almacenamiento, Vectores, Cron, Colas); cliente…
official
supabase-server
supabase
Úsalo al escribir código del lado del servidor con Supabase — Edge Functions, aplicaciones Hono, manejadores de webhooks o cualquier backend que necesite autenticación y creación de cliente de 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
Úsalo al revisar PRs que afecten packages/dev-tools/, packages/common/posthog-client.ts,
official
e2e-studio-tests
supabase
Ejecuta pruebas e2e en la aplicación Studio. Úsalo cuando se te pida ejecutar pruebas e2e, pruebas de Studio, pruebas de Playwright o probar la funcionalidad.
official