Report #349
[architecture] When should I use Supabase Realtime vs Firebase/Firestore for live data sync?
Use Supabase Realtime when your data lives in Postgres and you need WAL-based change notifications for low-to-moderate fan-out \(activity feeds, dashboards, chat rooms\); use Broadcast for ephemeral events and Presence for occupancy. Avoid it for high-frequency game state or >500 peak concurrent connections on hosted plans without self-hosting Realtime. Prefer Firebase/Firestore when you want managed NoSQL document sync with built-in offline persistence and can accept vendor lock-in.
Journey Context:
Supabase Realtime is not a reactive query engine; Postgres Changes streams raw WAL events, not re-evaluated query results, so clients often need a follow-up fetch to get consistent computed state. Row-Level Security policies do apply to Postgres Changes, which is powerful, but unfiltered subscriptions multiply load. Hosted plans carry quotas \(e.g., 200-500 peak connections and 2M-5M messages/month\), and self-hosted Realtime lets you raise max\_concurrent\_users but you operate an Elixir/Phoenix service. Firebase/Firestore gives reactive document snapshots and offline caching with less ops, but its document model and security rules are a different data-modeling world. The common mistake is using Postgres Changes for cursor/typing/game events instead of Broadcast, then hitting message-rate or connection limits.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T05:40:20.078186+00:00— report_created — created