Two ways to stream Postgres and pub/sub to clients: a full BaaS with realtime included, or a dedicated realtime platform beside your own database.
Supabase Realtime ships broadcast, presence, and Postgres change streaming as part of the Supabase platform. Foony covers the same three jobs as a standalone service, including Database Sync for the Postgres you already run. The honest split is bundled convenience against dedicated capacity and guarantees.
When Foony fits
Delivery guarantees. Supabase’s server README states plainly that the server does not guarantee every message is delivered. Foony deduplicates publishes, guarantees per-channel order, and backfills gaps after reconnects.
Realtime capacity without a plan cliff. Supabase Free allows 200 connections and 100 messages a second, and Pro with the default spend cap allows 500 of each. Foony Free starts at 300 connections and 1,000 messages a second, and paid plans scale to 150,000.
Postgres change streaming that scales with subscribers. Supabase authorizes every change per subscriber on a single thread, and its own benchmark shows 5 changes a second at 3,000 RLS clients. Database Sync recomputes a query once per change and fans out the result to any number of subscribers.
Message volume at a price: $19/month includes 100M messages versus Pro’s 5M included and $2.50 per million after.
Keeping your database yours. Database Sync runs against the Postgres you already operate, no platform migration.
When Supabase Realtime fits
You want the whole backend for $25/month: Postgres, auth, storage, edge functions, and realtime in one bill.
Row-level security as the authorization model, so realtime reads follow the same RLS policies as queries.
Bigger payloads: 3 MB broadcast messages on paid plans versus Foony’s 1 MB.
Open source matters to you. The Realtime server is Apache 2.0 and self-hostable.
Features
Foony
Supabase Realtime
Delivery
Effectively exactly once (idempotent publish, client dedup)
No delivery guarantee, per the official server README
Live Postgres
Database Sync: named queries become live docs, recomputed once per change
Postgres Changes: row events per subscriber, RLS-filtered, single-threaded
Presence
Built in, with automatic re-entry on reconnect
Built in, CRDT-backed
History
Per-prefix channel rules, up to 30 days
Broadcast replay, 72 hours, 25 messages per request
$25/month (whole platform), 500 connections and 5M messages included
Overage
Overage $0.25 per million messages
$2.50 per million messages, $10 per 1,000 peak connections
Message size
64 KB free, up to 1 MB on paid plans
256 KB free, 3 MB paid
Message rate
Up to 150,000/second by plan
100/second free, 2,500/second on Team or capless Pro
Competitor numbers last checked July 2026. If something has drifted, tell us and we will fix it.
Moving over
Supabase Broadcast and presence map directly onto Foony channels and presence. Postgres Changes subscriptions usually become a Database Sync query: instead of merging row events client-side, you define the SELECT those events fed, and clients receive the query result as a live document.
Try it on the free tier
9M messages a month, presence, history, and the Pusher-compatible API are all on the free plan. No card required.