SolisReach
← Journal
MVP & Product5 min read

Choosing between Supabase, Firebase, and a custom backend for an MVP

Written by the SolisReach team

For most MVPs, a fully custom backend is more engineering effort than the validation stage justifies. The real decision is usually between a backend-as-a-service platform like Supabase or Firebase, and the choice between those two, or a lighter custom setup, comes down to a handful of concrete factors rather than a general platform preference.

We see a lot of founders arrive with a strong opinion already formed, usually based on whatever a podcast or a technical friend recommended, rather than an assessment of their own product's actual requirements. That's a reasonable starting point for a quick decision, but it's worth a short, deliberate check against the product's real data model and access patterns before committing, since the wrong choice here is genuinely expensive to unwind later.

Supabase, if the data model is genuinely relational

Supabase is built on Postgres, which means real relational queries, joins, and constraints work the way a traditional relational database expects. For an MVP whose core value depends on relationships between entities (bookings tied to providers tied to availability, for instance) that relational foundation saves real time compared to modeling the same relationships in a document database.

It also means an MVP built on Supabase inherits decades of mature, well-understood relational database tooling almost for free, migrations, constraints, and query optimization all work the way a backend engineer already expects, rather than requiring the team to learn a platform-specific query paradigm from scratch. For a team with existing SQL experience, that familiarity alone is worth real development speed in the first few weeks.

Firebase, if real-time sync is the actual product requirement

Firebase's real-time database and Firestore are built specifically for live, multi-client data sync, which matters a lot for chat features, live collaborative editing, or anything where multiple users need to see the same data update instantly. For products where that's not a core requirement, Firebase's document model can make relational queries more awkward than they need to be.

We've watched teams choose Firebase primarily for its generous free tier and easy initial setup, without weighing whether their actual product needs real-time sync at all, and then spend real effort later working around the document model's limitations for what turned out to be a fundamentally relational problem. The free tier is a real advantage, but it shouldn't be the deciding factor if the underlying data model doesn't actually fit.

When we still build custom, even for an MVP

If the product has an unusual, non-standard data access pattern, or genuinely needs infrastructure control neither platform's abstractions support well, a lighter custom backend (a simple API on a lightweight framework, backed by a managed Postgres instance) is sometimes still the faster path, because fighting a platform's assumptions costs more time than building around the actual requirement directly. This is the exception, not the default, but it's worth checking for before committing to either platform out of habit.

A common trigger for this exception is a product with unusually strict data residency or compliance requirements from day one, where a managed platform's infrastructure choices don't line up with what a regulated industry actually needs. In those specific cases, the control a custom setup provides is worth the extra initial engineering time, even at the MVP stage, because retrofitting compliance onto a platform that wasn't built for it is a much harder problem to solve later.

The migration path we build in from day one, regardless of choice

Whichever platform a client chooses, we structure the data access layer with a clear boundary between the application logic and the specific platform's client library, rather than scattering platform-specific calls throughout the codebase. It's a small amount of extra discipline upfront, and it means that if a product does eventually outgrow its initial platform choice, the migration touches one well-defined layer of the codebase instead of requiring a rewrite of the entire application.

We've executed exactly this kind of migration for a couple of clients who outgrew their original backend-as-a-service platform once usage scaled past what the platform's pricing model or performance characteristics could comfortably support, and in both cases the clean data-layer boundary we'd insisted on at the start turned what could have been a months-long rewrite into a few focused weeks of work. It's the kind of upfront discipline that's easy to skip under early time pressure and genuinely painful to have skipped once it matters.

Whichever platform a client chooses, we structure the data access layer with a clear boundary between the application logic and the specific platform's client library, rather than scattering platform-specific calls throughout the codebase.

Cost trajectories differ more than the initial pricing pages suggest

Both platforms' free and early tiers make the initial cost comparison look closer than the real trajectory once a product has meaningful usage. We model out a rough cost projection at several usage milestones, not just the current stage, before helping a client commit to either platform, since a choice that looks cost-equivalent at launch can diverge substantially in cost once a product reaches real scale, and that divergence is much easier to plan for in advance than to react to after the fact.

What we ask before recommending anything at all

Before opening either platform's documentation, we ask a founder to describe their data model out loud, in plain language, without any technology names attached: what are the core entities, how do they relate to each other, and does the product need multiple users seeing the same data update live. Those answers, gathered before any platform bias enters the conversation, are consistently a better predictor of the right choice than any feature comparison chart, since they surface the product's actual shape rather than a preference formed by whatever technology a founder happened to read about most recently, and the conversation itself usually takes less than twenty minutes to reach a clear recommendation.

We write the recommendation down alongside the reasoning that produced it, not just the platform name, specifically so the decision is revisitable later without relitigating the whole conversation from scratch. A founder six months in asking "should we still be on Supabase" can check that written reasoning against how the product has actually evolved, rather than the team having to reconstruct an unrecorded conversation from memory under real time pressure.

A decision that's cheap to change early and expensive to change late

The honest reassurance we give most founders agonizing over this choice is that, with the data-layer boundary in place, an MVP-stage backend decision is genuinely reversible for a modest amount of engineering time, not a permanent architectural commitment. That reassurance changes how the decision actually gets made: a founder who understands the choice is reversible spends appropriately little time on it and moves on to building, rather than stalling the entire project on a decision that doesn't deserve weeks of deliberation at this stage.

Start a project

Want this applied to your site?

We run a Core Web Vitals and SEO audit before quoting any performance marketing engagement, and we're happy to share what we'd find on yours.