What Supabase Actually Is (And Why You'd Use It)

Look, Firebase is fine until you need to do anything beyond basic CRUD. Try joining data or running complex queries and you'll hate life. Supabase showed up in 2020 because developers were tired of Firebase's NoSQL limitations but still wanted the convenience of not managing servers.

It's basically PostgreSQL with a REST API auto-generated from your schema, plus real-time features and auth that doesn't suck. If your team knows SQL (and they should), you'll feel at home. If they don't, stick with Firebase because Supabase won't hold your hand through database design.

It's Just PostgreSQL (But That's Good)

PostgreSQL Logo

Every Supabase project is a real PostgreSQL database. Not some gimped version - you get full superuser access and can SSH in if needed. This means:

Real-Time That Actually Works (Most of the Time)

Real-time Icon

The real-time features use PostgreSQL's logical replication to stream changes over WebSockets. It's pretty solid but can get flaky under heavy load.

The good: Subscribe to table changes and get notified when rows are inserted, updated, or deleted. No polling bullshit. Presence tracking for "who's online" features works well.

The bad: Connection drops happen, especially on mobile. The broadcast messaging for chat apps is decent but you'll want a fallback. Don't expect it to scale to thousands of concurrent connections on the free tier - you'll hit limits fast.

Auth That Doesn't Make You Want to Scream

Security Lock

Supabase auth is solid. Email/password, social logins, phone auth, MFA - it all works. The JWT tokens play nice with session management.

The killer feature is Row Level Security. You write SQL policies that PostgreSQL enforces at the database level. No matter how your data gets accessed - API, direct SQL, whatever - the security rules apply.

The gotcha: RLS error messages are cryptic as hell. You'll spend hours debugging insufficient_privilege errors when you missed one policy. But once you get it working, it's bulletproof. Way better than application-level security that can be bypassed.

The Reality Check (August 2025)

Community Growth

Big names like 1Password and Mozilla use Supabase, which is reassuring. But let's talk about what you'll actually experience:

Free tier: 2 projects, 500MB database, 1GB file storage. Sounds generous until your storage fills up in week 2 of your MVP. Then it's $25/month for Pro which gives you 8GB database + 100GB file storage. Pro also bumps the max upload size from 50MB to 500GB (yes, half a terabyte), though you'll hit bandwidth costs before you actually need files that big. I learned this the hard way when our demo app hit the storage limit during a client presentation.

Connection limits: Free tier now gives you 200 concurrent connections (up from 60 in 2024), while Pro gets 500. Still sounds like a lot until your Next.js app with poor connection pooling eats through them. You'll learn about pgbouncer the hard way. When we launched on Product Hunt, our site went down in 20 minutes because every API route was opening a new connection.

Real-time scaling: Works great until 100-200 concurrent users, then you need Pro. Don't expect miracles on shared infrastructure. We had a collaborative doc editor that worked beautifully in testing with 10 users, then turned into a laggy mess when 150 people joined during launch.

Launch Week 15 in July 2025 brought significant improvements: unified logging across all services (no more jumping between tabs to debug), OpenTelemetry support for custom monitoring tools, advanced observability metrics previously only available in Grafana, organization-wide MFA enforcement, 97% faster Edge Function cold starts (sub-100ms), and cheaper cached egress at $0.03/GB (down from $0.09/GB). The AI debugging assistant can now analyze your logs and suggest fixes. These are the kinds of practical improvements that actually help in production.

How Supabase Stacks Up Against the Competition

Feature

Supabase

Firebase

PlanetScale

AWS Amplify

Database Type

PostgreSQL (Relational)

Firestore (NoSQL)

MySQL-compatible

Multiple options

Query Language

Full SQL support

Limited queries, no joins

SQL with branches

GraphQL/SQL

Real-time Updates

PostgreSQL logical replication

Native real-time sync

Polling required

AppSync subscriptions

Authentication

Email, social, phone, MFA

Email, social, phone, anonymous

Not included

Cognito integration

File Storage

S3-compatible with RLS

Google Cloud Storage

Not included

S3 integration

Edge Functions

Deno runtime, TypeScript

Node.js, Python, Go

Not included

Lambda functions

Self-hosting

✅ Available

❌ Not available

❌ Not available

❌ Not available

Open Source

✅ Fully open source

❌ Proprietary

❌ Proprietary

❌ Proprietary

Free Tier

2 projects, 500MB DB

Spark plan with quotas

1 branch, 5GB

AWS Free Tier

Pricing Model

Predictable tiers

Pay-per-operation

Database size based

Usage-based

How Supabase Actually Works (And Where It Breaks)

The Stack That Powers Your Headaches

Supabase Architecture

Supabase's architecture is PostgreSQL surrounded by a bunch of microservices. When it works, it's smooth. When it doesn't, debugging across these services is a nightmare.

What You're Actually Dealing With

PostgreSQL: Real PostgreSQL with useful extensions like pgvector and PostGIS. You get superuser access, which is great until you accidentally break something and realize you're flying solo.

Kong Gateway: Handles routing and rate limiting. It's solid but when it goes down, everything goes down. The rate limits on free tier will bite you during load testing.

PostgREST: Auto-generates REST APIs from your schema. It's clever until you need complex queries that don't map well to REST endpoints. Then you're writing custom functions or using the RPC endpoint.

Realtime Server: Elixir-based server that handles WebSocket connections. Works well but connection drops are common on mobile. The presence features are neat for collaborative apps.

GoTrue Auth: Handles authentication with JWT tokens. Pretty standard stuff. Email confirmation can be flaky - users will complain about not getting emails.

Storage Service: S3-compatible file storage with RLS policies. The image transformations work but are slow. You'll want a CDN for production. 2025 added Analytics Buckets with Apache Iceberg support for data warehouse use cases - actually useful if you're doing analytical queries on large datasets.

Edge Functions (Cool But Limited)

Edge Functions

Edge Functions run on Deno and are pretty neat for serverless logic. The reality:

Good stuff:

The pain points (mostly improved in 2025):

  • Cold starts dropped to sub-100ms (97% faster than 2024) with Deno 2.1 upgrade
  • Memory limits are tight - you'll hit them processing larger files
  • Local development setup is still finicky despite CLI improvements
  • Debugging got better with unified logging and AI assistant analysis
  • Persistent storage now available - mount S3-compatible storage for file operations between invocations

They're great for webhooks, image processing, and simple API endpoints. Don't try to rebuild your entire backend with them.

Security (RLS Will Save and Haunt You)

Row Level Security is Supabase's main security feature. It's brilliant and infuriating:

Why it's brilliant: Security rules live in the database, not your app code. Bypass the API? Doesn't matter - PostgreSQL enforces the rules. SQL injection? Policies still apply.

Why you'll hate it: Error messages are cryptic as hell. insufficient_privilege tells you absolutely nothing. You'll waste hours debugging why auth.uid() returns null in your policy.

Database Security

-- This looks simple
CREATE POLICY \"Users see own data\" ON profiles
    FOR SELECT USING (auth.uid() = user_id);
    
-- Until auth.uid() returns null and you don't know why
-- Common errors you'll see:
-- ERROR: column \"user_id\" does not exist
-- ERROR: function auth.uid() does not exist
-- ERROR: insufficient_privilege (with zero helpful context)

Spent 4 hours debugging this exact error last month. The issue? My JWT was expired, but the error message just said insufficient_privilege. Had to dig through the logs to realize auth.uid() was returning null because the token was stale.

Pro tip: Test your policies in the SQL editor with real JWTs. The dashboard's policy simulator lies sometimes. And remember: policies are allowlists, not denylists. No policy = no access.

Performance (It's PostgreSQL, What Did You Expect?)

Database performance: It's PostgreSQL, so it's fast for reads if you index properly. Writes are ACID-compliant but slower than NoSQL. On a $25/month Pro instance, expect decent performance for most apps.

API performance: The auto-generated REST API adds 50-100ms overhead compared to direct SQL. For complex queries, you'll end up writing custom functions anyway.

Real-time performance: Works well for 100-200 concurrent connections. Beyond that, expect connection drops and scaling issues. The presence features can get laggy with many users.

The gotcha: Connection limits will bite you. Free tier caps at 200 concurrent connections (up from 60), Pro gets 500. Your Next.js app with poor pooling will still exhaust this fast. Learn pgbouncer or suffer.

Vector Search (The AI Hype Train)

AI Vector Database

pgvector support is decent if you need vector search. The marketing makes it sound revolutionary, but it's just PostgreSQL with an extension.

What actually works:

The reality:

  • Indexing large vector collections is slow and memory-hungry
  • Query performance degrades with collection size - you'll need partitioning strategies
  • RAG applications work but are basic - you'll need more sophisticated chunking and ranking

It's fine for small-to-medium vector collections. For serious AI workloads, you'll want specialized vector databases like Pinecone or Weaviate.

Understanding the architecture is one thing. Dealing with the inevitable production fires is another. Here are the exact questions you'll be frantically googling when your Supabase setup decides to shit the bed at 2 AM.

Questions You'll Actually Ask

Q

Is the free tier actually usable?

A

Sort of. You get 2 projects, 500MB database storage, and 1GB file storage. Sounds good until your database fills up in week 2 and you're forced to pay $25/month for Pro. The 60 connection limit will bite you fast if you're using Next.js without proper connection pooling.Free tier is fine for learning and toy projects. For anything real, plan to pay immediately.

Q

Can I actually migrate from Firebase?

A

Yes, but it's a pain in the ass. Firebase is NoSQL, Supabase is SQL - completely different data models. You'll need to:

  1. Redesign your data structure for relational tables
  2. Rewrite all your queries from Firestore to SQL
  3. Rebuild auth flows (different providers, different user management)
  4. Migrate files from Firebase Storage to Supabase Storage

Plan for weeks of work. The migration guides help but don't underestimate the effort. On the plus side, you'll have real SQL and can escape Google's ecosystem.

Q

How well does it scale?

A

Vertical scaling: Upgrade your database instance for more CPU/memory. Works fine, costs more money.

Horizontal scaling: Read replicas for read-heavy workloads. Connection pooling helps but has limits.

Reality check: On shared infrastructure (Pro plan), expect decent performance for small-to-medium apps. High traffic apps will need Enterprise for dedicated resources. The real bottleneck is often connection limits and real-time subscriptions, not raw database performance.

Q

Why do my RLS policies keep failing?

A

Because RLS error messages are garbage. insufficient_privilege tells you nothing. Real-world debugging scenarios I've hit:

The JWT expiry trap: Spent 3 hours debugging why my policy suddenly stopped working. Turns out the test JWT had expired and auth.uid() was returning null. The error? Still just insufficient_privilege.

The missing foreign key policy: Your users can see their own posts but not the comments. Why? Because you wrote a policy for posts table but forgot the comments table needs its own policy too. Both tables in a JOIN need policies.

The column name fuckup: Copy-pasted a policy and forgot to change user_id to owner_id. Got column "user_id" does not exist buried in a stack trace after 20 minutes of "insufficient privilege" errors.

The admin context gotcha: Your policy works in the SQL editor but breaks in your app. SQL editor uses admin context, your app uses user JWTs. Different security contexts entirely.

Use the policy simulator but it lies sometimes. Always test with actual user sessions and expired tokens.

Q

Why is my real-time connection constantly dropping?

A

Mobile connections are flaky and Supabase's WebSocket handling isn't perfect. Common issues:

  • Mobile apps: iOS/Android background apps lose connections. Implement reconnection logic
  • Network switches: WiFi to cellular transitions drop connections
  • Connection limits: Free tier caps real-time connections around 200-500 concurrent
  • Proxy issues: Corporate firewalls and some ISPs block WebSockets

Add exponential backoff for reconnection and always have a fallback (polling APIs). Don't expect real-time to be 100% reliable.

Q

Is self-hosting actually viable?

A

Technically yes, but good luck. Self-hosting requires running ~15 Docker containers with proper networking, SSL certificates, and monitoring.

You'll need serious devops skills. The Docker compose setup works for development but production deployments need Kubernetes expertise. Unless you have a dedicated platform team, stick with hosted Supabase.

The only real benefit is cost savings at scale, but factor in operational overhead.

Q

Will I hit connection limits?

A

Almost certainly, yes. Free tier now caps at 200 concurrent connections (improved from 60 in 2024). Pro tier gets 500. Enterprise gets custom limits. Sounds like a lot until you realize:

  • Next.js/React apps often don't close connections properly
  • Database connection pooling isn't enabled by default in many frameworks
  • Each API request holds a connection during execution
  • Real-time subscriptions count toward the limit

You'll learn about pgbouncer and connection pooling the hard way. Pro tip: Enable connection pooling from day one.

Q

How's the local development experience?

A

Mixed. The Supabase CLI works but it's finicky:

Good: Local PostgreSQL with all extensions, real-time subscriptions work, auth flows work locally

Bad: Initial setup is slow, CLI breaks randomly and you'll reinstall it weekly, auth emails go to local Inbucket (not your real email), Edge Functions local testing is limited

It's usable but expect friction. Many devs just develop against a cloud dev instance instead.

Now you know what to expect from Supabase - both the good parts and where it'll stab you in the back. When things go wrong (and they will), you'll need resources that actually help instead of marketing bullshit.

Essential Supabase Resources

Related Tools & Recommendations

tool
Similar content

Firebase - Google's Backend Service for Serverless Development

Skip the infrastructure headaches - Firebase handles your database, auth, and hosting so you can actually build features instead of babysitting servers

Firebase
/tool/firebase/overview
100%
pricing
Similar content

Backend Pricing Reality Check: Supabase vs Firebase vs AWS Amplify

Got burned by a Firebase bill that went from like $40 to $800+ after Reddit hug of death. Firebase real-time listeners leak memory if you don't unsubscribe prop

Supabase
/pricing/supabase-firebase-amplify-cost-comparison/comprehensive-pricing-breakdown
74%
integration
Similar content

Supabase Next.js 13+ Server-Side Auth Guide: What Works & Fixes

Here's what actually works (and what will break your app)

Supabase
/integration/supabase-nextjs/server-side-auth-guide
66%
tool
Similar content

Supabase Production Deployment: Best Practices & Scaling Guide

Master Supabase production deployment. Learn best practices for connection pooling, RLS, scaling your app, and a launch day survival guide to prevent crashes an

Supabase
/tool/supabase/production-deployment
64%
howto
Similar content

MongoDB to PostgreSQL Migration: The Complete Survival Guide

Four Months of Pain, 47k Lost Sessions, and What Actually Works

MongoDB
/howto/migrate-mongodb-to-postgresql/complete-migration-guide
57%
compare
Recommended

Framework Wars Survivor Guide: Next.js, Nuxt, SvelteKit, Remix vs Gatsby

18 months in Gatsby hell, 6 months testing everything else - here's what actually works for enterprise teams

Next.js
/compare/nextjs/nuxt/sveltekit/remix/gatsby/enterprise-team-scaling
52%
tool
Similar content

ClickHouse Overview: Analytics Database Performance & SQL Guide

When your PostgreSQL queries take forever and you're tired of waiting

ClickHouse
/tool/clickhouse/overview
51%
tool
Similar content

Neon Production Troubleshooting Guide: Fix Database Errors

When your serverless PostgreSQL breaks at 2AM - fixes that actually work

Neon
/tool/neon/production-troubleshooting
48%
tool
Similar content

PostgreSQL Performance Optimization: Master Tuning & Monitoring

Optimize PostgreSQL performance with expert tips on memory configuration, query tuning, index design, and production monitoring. Prevent outages and speed up yo

PostgreSQL
/tool/postgresql/performance-optimization
48%
tool
Similar content

PostgreSQL: Why It Excels & Production Troubleshooting Guide

Explore PostgreSQL's advantages over other databases, dive into real-world production horror stories, solutions for common issues, and expert debugging tips.

PostgreSQL
/tool/postgresql/overview
48%
tool
Similar content

PostgreSQL Logical Replication: When Streaming Isn't Enough

Unlock PostgreSQL Logical Replication. Discover its purpose, how it differs from streaming replication, and a practical guide to setting it up, including tips f

PostgreSQL
/tool/postgresql/logical-replication
48%
tool
Similar content

Neon Serverless PostgreSQL: An Honest Review & Production Insights

PostgreSQL hosting that costs less when you're not using it

Neon
/tool/neon/overview
48%
alternatives
Similar content

PostgreSQL Alternatives: Escape Production Nightmares

When the "World's Most Advanced Open Source Database" Becomes Your Worst Enemy

PostgreSQL
/alternatives/postgresql/pain-point-solutions
44%
pricing
Similar content

Supabase, Firebase, PlanetScale: Cut Database Costs from $2300 to $980

Learn how to drastically reduce your database expenses with expert cost optimization strategies for Supabase, Firebase, and PlanetScale. Cut your bill from $230

Supabase
/pricing/supabase-firebase-planetscale-comparison/cost-optimization-strategies
41%
compare
Similar content

PostgreSQL vs MySQL vs MariaDB vs SQLite vs CockroachDB

Compare PostgreSQL, MySQL, MariaDB, SQLite, and CockroachDB to pick the best database for your project. Understand performance, features, and team skill conside

/compare/postgresql-mysql-mariadb-sqlite-cockroachdb/database-decision-guide
41%
tool
Similar content

Change Data Capture (CDC) Performance Optimization Guide

Demo worked perfectly. Then some asshole ran a 50M row import at 2 AM Tuesday and took down everything.

Change Data Capture (CDC)
/tool/change-data-capture/performance-optimization-guide
37%
integration
Recommended

Build a Payment System That Actually Works (Most of the Time)

Stripe + React Native + Firebase: A Guide to Not Losing Your Mind

Stripe
/integration/stripe-react-native-firebase/complete-authentication-payment-flow
35%
tool
Similar content

pgLoader Overview: Migrate MySQL, Oracle, MSSQL to PostgreSQL

Move your MySQL, SQLite, Oracle, or MSSQL database to PostgreSQL without writing custom scripts that break in production at 2 AM

pgLoader
/tool/pgloader/overview
34%
tool
Similar content

Change Data Capture (CDC) Troubleshooting Guide: Fix Common Issues

I've debugged CDC disasters at three different companies. Here's what actually breaks and how to fix it.

Change Data Capture (CDC)
/tool/change-data-capture/troubleshooting-guide
34%
compare
Similar content

PostgreSQL vs MySQL vs MariaDB: Developer Ecosystem Analysis

PostgreSQL, MySQL, or MariaDB: Choose Your Database Nightmare Wisely

PostgreSQL
/compare/postgresql/mysql/mariadb/developer-ecosystem-analysis
34%

Recommendations combine user behavior, content similarity, research intelligence, and SEO optimization