Supabase
Cost
Performance
Stability
Performance advisors
Supabase’s own lints, tied back to the code that triggers them.
Overview
Pulls the Supabase performance advisors — unindexed foreign keys, missing indexes, sequential scans — and cross-references each one against the query paths in your repo, so a missing index arrives attached to the endpoint it slows down.
What it looks for
- Missing indexes on columns your hot queries filter by
- .from() called inside a loop — N+1 round trips
- select('*') with no .limit() on growing tables
- createClient() inside a request handler, preventing connection reuse
- Unused indexes costing write throughput
Why it matters
An advisor warning on its own is a list item. The same warning next to "this is the index your checkout query needs" is a ticket. lumioguard also catches the N+1 patterns advisors cannot see, because they look like normal traffic from the database side.
Rules in this check
| What it reports | Fix path |
|---|---|
| Missing index on a hot query column — sequential scan | Pull request |
| N+1 Supabase queries: .from() called inside a loop | Pull request |
| select('*') without .limit() — unbounded result set | Pull request |
| createClient() called inside a request handler — avoids connection reuse | Guide |
| Unused index — wasted write overhead | Draft |
How the fixes arrive
Pull requestLow-risk changes arrive as a pull request on a lumioguard branch, with a breakage analysis attached. You review and merge it.
DraftChanges that need confirming against your live schema or config arrive as a draft — a prepared patch or a ready-to-run script — that you approve before it is applied.
GuideChanges only you can make safely arrive as a step-by-step guide you can follow yourself or hand to your coding agent.
Run them all on your app
Connect your repo and your live services with read-only scopes. The first scan is free, and nothing changes without your approval.