Supabase Cost Performance Stability Releases Security & compliance

Realtime & cost

Subscriptions and queries that bill by the row.

Overview

Reads your Realtime subscriptions and query shapes for patterns that scale egress and compute faster than usage: unfiltered channels, channels never torn down, and polling loops sitting next to a Realtime channel that would have done the job.

What it looks for

  • Realtime subscriptions with no filter, broadcasting every mutation
  • Channels never unsubscribed on unmount
  • Polling loops on short intervals where Realtime applies
  • select('*') fetching every column on the wire
  • Tables subscribed to but missing from the supabase_realtime publication

Why it matters

An unfiltered subscription delivers every mutation on the table to every connected client, so cost grows with users multiplied by writes. A channel that is never unsubscribed leaks a connection per mount, which surfaces as a connection ceiling long before it surfaces as a bill.

Rules in this check

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.
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.