Supabase vs Appwrite vs PocketBase: Which Open-Source Backend for Your Next App?

Supabase vs Appwrite vs PocketBase: Which Open-Source Backend for Your Next App?

Firebase changed its pricing again. You're not surprised — you've been here before. So you start looking at open-source backends you can actually own, and three names keep coming up: Supabase, Appwrite, and PocketBase. All three promise to replace Firebase. None of them do it the same way.

I've deployed all three on Elestio — Supabase, Appwrite, and PocketBase — and the right choice depends entirely on what you're building and how big it needs to get. Here's what actually matters.

The Core Difference: Database Engine

This is where the three diverge fundamentally, and everything else follows from it.

Supabase runs on PostgreSQL. You get JSONB, full-text search, row-level security, pgvector for AI embeddings, and decades of battle-tested reliability. If your data model is relational — and most are — Supabase gives you the most powerful foundation.

Appwrite uses MariaDB behind a document-style API. You interact with collections and documents, not tables and rows. It feels more like MongoDB, but the data lives in MariaDB. Good for teams who want simplicity without learning SQL.

PocketBase embeds SQLite into a single Go binary. No separate database server. No connection pooling. Just a 20 MB file that contains your entire backend. SQLite in WAL mode is surprisingly fast for reads — but it's a single-writer database, and that's a hard ceiling.

Feature Comparison

Feature Supabase Appwrite PocketBase
DatabasePostgreSQLMariaDB (document API)SQLite (embedded)
AuthEmail, OAuth2, MFAEmail, OAuth2, MFA, OTPEmail, OAuth2, MFA
Real-timeWebSocket subscriptionsWebSocket eventsWebSocket subscriptions
FunctionsDeno edge functionsMulti-runtime (Node, Python, Dart)Go/JS hooks
StorageS3-compatible, transformsLocal or S3, transformsLocal or S3, thumbnails
Admin UIFull dashboardFull dashboardBuilt into binary
Horizontal scalingYes (read replicas)NoNo
Self-hosting complexityHigh (multi-container)Moderate (Docker)Trivial (single binary)
GitHub stars99K+55K+57K+

Supabase: The PostgreSQL Powerhouse

Supabase is the closest thing to "Firebase but with a real database." You get a full PostgreSQL instance with PostgREST on top, real-time subscriptions, auth, storage, and Deno-based edge functions. The ecosystem is mature — 99K+ GitHub stars, 4 million developers, SDKs for JavaScript, Python, Flutter, Swift, and Kotlin.

The tradeoff is complexity. Self-hosting Supabase means running multiple containers — PostgREST, GoTrue (auth), Realtime, Storage, Kong (API gateway), and the Studio dashboard. It's not a quick docker run. On Elestio, this is handled for you — one-click deploy, automated backups, SSL — starting at ~$16/month.

Pick Supabase when: You're building a production SaaS, your data is relational, you need horizontal scaling, or you want pgvector for AI workloads.

Appwrite: The Mobile-First All-in-One

Appwrite takes a different approach — it's a fully integrated platform where auth, database, storage, functions, and even hosting live in one system. The database uses a document-style API (collections and documents), which feels natural if you're coming from Firebase or MongoDB.

Where Appwrite really shines is mobile. The Flutter SDK is first-class, the React Native SDK is maturing, and features like bulk operations, geo queries, and upserts make it practical for real apps. Self-hosting is straightforward Docker Compose — less complex than Supabase, more moving parts than PocketBase.

The limitation: no horizontal scaling for the app server. If you need to handle millions of concurrent writes, Appwrite will hit a ceiling. For most small-to-medium apps — 10K to 500K monthly active users — that ceiling is far away. Deploy it on Elestio and Docker Compose complexity is handled for you.

Pick Appwrite when: You're building mobile apps (especially Flutter), you want Firebase-like convenience with self-hosting, or your team prefers document-style APIs over SQL.

PocketBase: The Single-Binary Wonder

PocketBase is the outlier. Download a 20 MB binary, run ./pocketbase serve, and you have a complete backend with auth, real-time, file storage, and an admin UI. No Docker, no containers, no database server. It's all SQLite.

This simplicity is genuine. A $4/month VPS can handle 10,000+ concurrent WebSocket connections. The admin UI is built in. Extending it means writing Go or JavaScript hooks. For MVPs, prototypes, internal tools, and indie projects — PocketBase is unmatched in speed-to-deploy.

The catch is SQLite's single-writer limitation. One write at a time. No horizontal scaling. If your app is read-heavy (and most are), this is fine. If you're building a write-heavy collaborative tool with thousands of concurrent editors, it won't work. Want managed backups and SSL without the ops work? PocketBase on Elestio starts at ~$16/month.

Pick PocketBase when: You want to ship fast, your app is read-heavy, you're a solo developer or small team, or you need the simplest possible deployment.

The Cost Math

Scenario Supabase Cloud Appwrite Cloud Any of the 3 on Elestio
Solo dev / MVPFree tierFree tier~$16/month (flat)
Growing app (50K MAU)$25+/month (usage-based)$25/month per project~$16/month (flat)
Production (200K MAU)$100+/month (scales with usage)$50+/month~$29/month (flat)
Scale (500K+ MAU)$500+/monthCustom pricing~$59/month (flat)

The key difference: cloud pricing scales with usage. Self-hosting on Elestio is a flat infrastructure cost — no per-user fees, no bandwidth charges, no surprise bills. All three are open-source with no license fees.

The Verdict

Don't overthink this. The decision tree is short:

  • Need PostgreSQL, scale, or AI/vector search? → Supabase
  • Building mobile apps or want an all-in-one platform? → Appwrite
  • Want to ship today with zero complexity? → PocketBase

All three are available on Elestio with managed hosting starting at ~$16/month — automated backups, SSL, updates, and monitoring included. Pick the one that matches your project's actual needs, not its hypothetical future.

Troubleshooting

Supabase self-hosted dashboard won't load Check that all containers are running with docker ps. The Studio dashboard requires the Kong API gateway and PostgREST to be healthy. On Elestio, restart with docker-compose restart.

Appwrite returns 401 on API calls Verify your project ID and API key in the SDK initialization. Appwrite requires both a project ID and an API key with the correct scopes. Check permissions in the Appwrite console under Settings > API Keys.

PocketBase migrations fail after update Back up your pb_data directory before upgrading. PocketBase auto-migrates the SQLite schema, but custom Go hooks may need updating to match the new API. Check the changelog for breaking changes.

Thanks for reading. See you in the next one 👋