At a glance
The percentage of Supabase Edge Function invocations that failed in the last hour. Edge Functions are the serverless Deno workers that run your custom server-side logic: webhook receivers, payment confirmations, scheduled jobs, third-party API calls, and the glue between your app and external services. When this number climbs, a slice of your custom backend logic is silently failing. Anything above 2% means real user journeys (or background jobs you depend on) are breaking, and the failures often do not surface as front-end errors because Edge Functions run out of band.
Calculation
The card aggregates Edge Function invocation outcomes over the rolling 1-hour window and computes:- An uncaught exception in the Deno handler (the runtime returns a 500 and logs the stack).
- A handler that explicitly returns a 4xx or 5xx
Response(counted as a failure for this card unless you tag it otherwise). - A wall-clock timeout: the function exceeded the per-tier execution limit (Free and Pro have a CPU/wall-clock cap; the worker is killed and the invocation is marked failed).
- A boot/cold-start failure: the function failed to import a module, hit a missing environment secret, or the bundle failed to load.
- A memory limit breach: the isolate exceeded its memory ceiling and was terminated.
Worked example
A platform team runs a Supabase project (Pro tier) behind a headless storefront. Their Edge Functions includestripe-webhook (payment confirmations), order-confirmation-email, inventory-sync (pulls stock from an ERP every 5 minutes), and image-resize. Snapshot taken on 14 Apr 26 at 09:40 BST, the morning after a Tuesday-night deploy.
The project-level card reads 0.31%, comfortably green. But the team had pinned a per-function panel for
inventory-sync, and that one reads 58.3%, deep red. The Tuesday deploy renamed an environment secret (ERP_API_KEY to ERP_TOKEN) but the function still references the old name, so every invocation throws at boot. Because inventory-sync is low traffic (12 runs/hour), its failures are invisible at the project level.
- Watch per-function, not just project-level. A noisy headline can be dominated by one high-traffic healthy function while a critical low-traffic worker burns. Pin a separate panel for every revenue-path function.
- Boot failures are the silent killer. A renamed secret, a missing import, or a bad bundle fails every invocation instantly. These show as a near-100% rate on the affected slug but barely move the aggregate.
- Pair with the backlog, not just the rate. A failing webhook handler means events are queued upstream (Stripe retries for up to 3 days). Once you fix the function, expect a replay surge; size your pool and rate limits for it.
Sibling cards
Reconciling against the source
Where to look in Supabase’s own tooling:Project Dashboard → Edge Functions → Logs for the per-invocation log stream with status, execution time, and the Deno console output. Filter by function slug and by status to isolate failures. Project Dashboard → Edge Functions → (function) → Metrics/Invocations for the invocation count and error count charts the card aggregates. Logs Explorer with theWhy our number may legitimately differ from the Supabase UI:function_edge_logssource and a SQL filter (for examplewhere metadata.response.status_code >= 400) for an exact count over an arbitrary window.
Cross-connector reconciliation: if a Stripe webhook handler is the failing function, pair this card with your Stripe connector’s webhook delivery metrics. A rising Edge Function error rate on
stripe-webhook should correspond to climbing webhook retry counts on the Stripe side; if Stripe shows retries but Supabase shows no invocations, the events are not reaching your function at all (a routing or URL problem, not a code problem).