Stacks vs Firebase

Firebase syncs data to clients. Stacks runs the application in the middle.

Firebase is built on the idea that the client is the application and the backend is a synchronised document store. That is a genuinely good fit for chat, presence, and offline-first mobile apps. Firestore is a poor fit for reporting, invoicing, or complex authorisation. Firebase now offers Postgres through SQL Connect, but it is still reached through Firebase, on Google Cloud, and billed per operation. Relational work on a server you own is where Stacks is aimed.

What Firebase is.

In its own terms, not ours.

Firebase gives you realtime document sync, offline persistence, authentication, cloud functions, hosting, crash reporting, analytics, and SQL Connect (formerly Data Connect) for Postgres on Cloud SQL, with the best mobile SDKs in the category. For a small team shipping a mobile product it removes an enormous amount of work, and the free tier carries a project a long way.

Where each one wins.

Same amount of room on both sides, on purpose.

Pick Firebase for

  • Offline and sync

    Local persistence and conflict handling on mobile is hard, and Firestore does it well. Stacks has no equivalent.

  • Mobile SDK quality

    iOS and Android SDKs, push, crash reporting, and analytics from one vendor with one integration.

  • Zero operations

    No servers, no scaling decisions, and no on-call rota.

  • Time to first release

    For a prototype or a small consumer app, nothing here is faster to ship.

Pick Stacks for

  • Queries that are not a compromise

    Joins, aggregates, transactions, and reporting are ordinary SQL against your own database, rather than denormalised Firestore documents and fan-out writes.

  • Security rules become code

    Authorisation lives in gates and policies you can unit test, instead of a rules language with its own failure modes.

  • Cost predictability

    Firestore bills per document read, write, and delete, and SQL Connect per operation, so a bad query is a bad invoice. A server and a database you pay for directly have a shape you can forecast.

  • No lock-in

    Your data is in your own SQL database, and the application that reads it is yours.

  • Your own mail server

    Stacks ships an SMTP and IMAP server, so hello@ and support@ on your domain are real mailboxes on your own box, readable in Mail.app or any client. buddy mail:provision creates them and their MX, SPF, DKIM, and DMARC records. None of the frameworks compared here ships one.

Side by side.

The dimensions teams actually decide on.

Dimension Stacks Firebase
Data model Relational, with migrations Firestore documents, or Postgres via SQL Connect
Queries Full SQL, joins, aggregates, transactions Document queries with index constraints
Authorisation Gates and policies in TypeScript Security rules
Realtime Channels and model broadcasts Document subscriptions with offline sync
Background work Queues, schedules, retries Cloud Functions and scheduled functions
Mobile Native iOS and Android from STX, against your own API First-party SDKs with offline support
Cost model A server you pay for directly Per operation
Portability Your database, your servers Google Cloud only
Mail server Built in: SMTP, IMAP, real mailboxes A send-only extension; inboxes are a separate provider

If you did move.

What ports cleanly, what does not, and where to start.

Flatten the documents first

Collections become tables and models, and the denormalisation Firestore required usually disappears.

Cloud Functions become jobs and actions

Triggered functions become model event listeners; scheduled functions become entries in app/Scheduler.ts.

Keep the client SDKs if you want

A phased move can leave auth with Firebase while the data layer moves, and push can stay on Firebase Cloud Messaging, which Stacks sends through directly.

The verdict.

Both answers are real. Most teams already know which paragraph is theirs.

Choose Firebase when

The product is a mobile or consumer app that needs offline sync and realtime documents, and you want no infrastructure at all.

Choose Stacks when

The product has relational data, reporting, billing, or authorisation rules complex enough to want tests and code review.

The frameworks that usually come up in the same conversation.