Supabase vs Firebase for mobile apps: why I chose Supabase
After using both in production, I explain why Supabase was the best decision for my games on Google Play, and when Firebase might be better for you.

When I started developing Sudoku Play, I had to choose a backend. Firebase is a very common choice for mobile apps: documentation is good and it integrates well with Google. But I chose Supabase. After using it in several of my own games on Google Play, I explain why that decision was right, and when Firebase is still the better choice.
PostgreSQL vs NoSQL: the fundamental difference
Supabase uses PostgreSQL. Firebase uses Firestore (NoSQL). This difference defines everything else. With PostgreSQL you get real table relationships, complex queries with JOINs, stored functions, triggers, and native Row Level Security. With Firestore you get documents/collections that are fast to read but complicated when you need relational queries. For my apps (which have users, friends, duels, stats, achievements — all related), PostgreSQL was the natural choice.
Row Level Security: real security
RLS in Supabase lets you define security policies at the row level directly in the database. It doesn't depend on frontend or backend: the DB itself guarantees a user only sees their own data. In Firebase, security is handled with Security Rules in a proprietary language, harder to test and maintain. For several apps sharing a single Supabase, RLS with separate schemas handled isolation without duplicating infrastructure.
Multi-app with a single backend
My games share a single Supabase project. A common schema holds what is shared across apps, like users and friendships, and each game has its own schema with isolated tables, views and functions. A player can have shared friends across apps but completely separate game data. With Firebase, I'd need separate projects or a much more complex document structure.
Edge Functions and Realtime
Supabase offers Edge Functions (Deno) for server-side logic and Realtime for real-time subscriptions. I use Edge Functions to validate puzzle completions and sync events. I use Realtime to detect when an opponent finishes a duel. Firebase has Cloud Functions (Node.js) which are more mature and have more available triggers. On this point, Firebase has the maturity advantage.
Costs: what drives them on each one
Both have a free plan to start and paid plans that change often, so check each one's pricing page before deciding. What matters is what makes the bill grow: on Supabase it is mostly database size, storage and bandwidth; on Firestore you pay per read and write, and an app that reads a lot can get expensive quickly. For my games, which make lots of small reads, the Supabase model turned out to be more predictable.
When to choose Firebase
Firebase is still better if: you need integrated Crashlytics and Analytics (I use Firebase Crashlytics alongside Supabase), Cloud Messaging for push notifications, or if your team already has Google ecosystem experience. It can also suit apps that handle huge amounts of files (Firebase Storage has been around longer than Supabase Storage). The reality is they're not mutually exclusive: I use Supabase as DB/auth and Firebase for crash reporting and notifications.
Choosing a backend for your app? I can advise you based on real experience with both platforms. Check out my published games and write to me over WhatsApp or email.