Supabase is PostgreSQL with extra bells and whistles. It's not just "Firebase with SQL" - it's actually pretty clever under the hood.
The Numbers That Actually Matter - September 2025
I actually looked up their benchmarks because marketing numbers are usually bullshit. These are legit - they used k6 against real AWS instances:
- Real-time messaging: 224,000 messages/second (that's actually impressive)
- Database connections: 32,000 concurrent WebSocket connections
- Latency: 6ms median, 28ms 95th percentile
- New connections: 320/second
These numbers matter because they tell you where you'll hit walls.
PostgreSQL: The Good and The Bullshit
PostgreSQL will murder you when you need high writes: ACID compliance is great until you need 50,000 writes/sec and you're bottlenecked on WAL writer processes. I've watched apps cruise along at 10,000 reads/second then shit the bed completely on write spikes during Black Friday sales.
The full-text search and PostGIS are legitimately good though. Try doing geospatial queries in Firebase - you'll want to throw your laptop out the window. The JSON operations are also solid - better than most NoSQL databases.
PostgreSQL performance characteristics under different workloads
Real-Time: The Thing That'll Murder Your Database
Real-time subscriptions? Single-threaded nightmare. One slow query backs up everything because they process changes in order to maintain ordering.
Here's the nightmare scenario: 100 users subscribed to a table, you insert one row, boom - 100 authorization checks. RLS policies checking permissions on every row? Your 5ms queries just became 200ms disasters.
Thank god they added broadcast channels because database subscriptions are a performance disaster waiting to happen. We hit 800,000+ messages/second using broadcasts - that's 80x better than the database subscriptions.
Pro tip from the trenches: Broadcast channels saved our ass, but don't try sending binary data - it'll silently fail and you'll debug for hours wondering why your file uploads aren't syncing. Stick to JSON or you'll hate yourself.
Version-specific gotcha: Avoid Supabase JavaScript client v2.0.1 - the session refresh is broken and your users will get randomly logged out. We spent 3 days debugging "intermittent auth failures" before downgrading to v1.9.x fixed it.
The Bills That'll Catch You Off-Guard
Here's how Supabase will fuck with your budget: everything counts as egress. API responses? Egress. Real-time updates? Egress. User downloads a profile pic? Egress.
I watched one viral post blow through our 250GB allowance in 6 hours because every view triggered real-time updates.
Tribal knowledge the docs won't tell you: The dashboard lies about connection counts. It shows "active connections" but not the ones stuck in IDLE state that are slowly killing your connection pool. Use SELECT * FROM pg_stat_activity WHERE state != 'idle';
if you want the truth about what's actually hitting your database.
Your typical startup costs:
- Database + compute: $125-200/month
- Auth (because they charge per MAU): $32-50/month
- Storage + egress: $50-150/month (this is where they get you)
- Real-time: $25-100/month
- Total damage: $232-500/month
The pricing jumps are brutal - there's no middle ground between "cheap" and "holy shit expensive". You'll be cruising on the $25 plan until your app gets mentioned on Reddit, then BAM - you're forced into the $225 tier because there's no middle ground.
Real production nightmare: We had a client hit ProductHunt. Connection pool died in 20 minutes - something like 500 concurrent signups, maybe more. Doesn't matter, anything over 200 kills the default pool anyway. Supabase dashboard showed green lights while users got ECONNREFUSED
and ENOTFOUND
errors. Took 2 hours to realize we needed to upgrade from Micro (0.5 CPU) to Small (2 CPU) compute, not just bump the database plan. Cost them maybe $2K in lost signups while we scrambled.
Check out the compute pricing to understand why this happens. The usage-based billing will surprise you when your "cheap" app suddenly needs enterprise-level resources.
Supabase pricing structure: from "cheap" to "holy shit expensive" with no middle ground