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.

Skills เพิ่มเติมจาก supabase

studio-e2e-tests
supabase
เขียนและรันการทดสอบ E2E ด้วย Playwright สำหรับ Supabase Studio ใช้เมื่อถูกถาม
official
vitest
supabase
เฟรมเวิร์กการทดสอบหน่วยความเร็วสูง Vitest ที่ขับเคลื่อนโดย Vite พร้อม API ที่เข้ากันได้กับ Jest ใช้เมื่อเขียนทดสอบ, สร้างม็อก, กำหนดค่าความครอบคลุม, หรือทำงานกับทดสอบ…
official
skill-creator
supabase
คู่มือที่ครอบคลุมสำหรับการสร้างสกิลแบบโมดูลาร์ที่ขยายความสามารถของ Claude ด้วยความรู้เฉพาะทางและเวิร์กโฟลว์ สกิลประกอบด้วยไฟล์ SKILL.md ที่จำเป็นพร้อม YAML frontmatter และคำแนะนำในรูปแบบ markdown รวมถึงทรัพยากรเสริมเพิ่มเติม (สคริปต์ เอกสารอ้างอิง สื่อต่างๆ) ที่จัดระเบียบตามวัตถุประสงค์และโหลดแบบค่อยเป็นค่อยไปเพื่อประหยัดบริบท ออกแบบสกิลโดยยึดตามตัวอย่างการใช้งานที่เป็นรูปธรรม ระบุสคริปต์ที่ใช้ซ้ำได้สำหรับงานที่กำหนดตายตัว ไฟล์อ้างอิงสำหรับความรู้เฉพาะโดเมน และสื่อต่างๆ สำหรับ...
official
supabase
supabase
ใช้เมื่อทำงานใดๆ ที่เกี่ยวข้องกับ Supabase ทริกเกอร์: ผลิตภัณฑ์ของ Supabase (ฐานข้อมูล, การยืนยันตัวตน, ฟังก์ชัน Edge, Realtime, พื้นที่จัดเก็บ, เวกเตอร์, Cron, คิว); ไคลเอนต์…
official
supabase-server
supabase
ใช้เมื่อเขียนโค้ดฝั่งเซิร์ฟเวอร์กับ Supabase — Edge Functions, แอป Hono, ตัวจัดการเว็บฮุค หรือแบ็กเอนด์ใดๆ ที่ต้องการการสร้างไคลเอนต์และการตรวจสอบสิทธิ์ของ 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
ใช้เมื่อตรวจสอบ PR ที่เกี่ยวข้องกับ packages/dev-tools/, packages/common/posthog-client.ts,
official
e2e-studio-tests
supabase
รันการทดสอบ e2e ในแอป Studio ใช้เมื่อถูกขอให้รันการทดสอบ e2e รันการทดสอบ studio การทดสอบ playwright หรือทดสอบฟีเจอร์
official