studio-error-handling

作者: supabase

Supabase Studio 的错误显示与故障排查模式。用于

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 的更多技能

studio-e2e-tests
supabase
编写并运行Supabase Studio的Playwright端到端测试。在收到相关请求时使用。
official
vitest
supabase
由 Vite 驱动的快速单元测试框架,兼容 Jest API。在编写测试、模拟、配置覆盖率或处理测试时使用。
official
skill-creator
supabase
创建模块化技能的全面指南,用于扩展Claude的能力,涵盖专业知识和工作流程。技能包含必需的SKILL.md文件(含YAML前置元数据和Markdown指令),以及按用途组织、渐进加载以节省上下文的可选捆绑资源(脚本、参考资料、素材)。围绕具体使用案例设计技能;为确定性任务识别可复用脚本,为领域知识准备参考文件,为...提供素材。
official
supabase
supabase
在执行任何涉及Supabase的任务时使用。触发条件:Supabase产品(数据库、认证、边缘函数、实时功能、存储、向量、定时任务、队列);客户端…
official
supabase-server
supabase
在编写使用Supabase的服务器端代码时使用——包括Edge Functions、Hono应用、Webhook处理器或任何需要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
在审查涉及 packages/dev-tools/、packages/common/posthog-client.ts 的 PR 时使用
official
e2e-studio-tests
supabase
在Studio应用中运行端到端测试。当被要求运行端到端测试、运行Studio测试、Playwright测试或测试功能时使用。
official