MarcoRestif
All articles
· 2 min read

Choosing a tech stack for your MVP in 2026

The stack matters less than you think, and more than founders admit. A practical way to decide between Next.js, Flutter and the rest without betting the company on it.

Every founder I talk to asks the same question in the first call: what should we build it with? The honest answer is that your first version will be rewritten in parts no matter what you pick. The goal is to choose something that lets you learn fast and does not punish you when you do.

Three questions that actually decide it

  1. Where are your users? If 80% of them will arrive from a Google search or a shared link, you want a web app with good SEO. If they open the product ten times a day, a native-feeling mobile app earns its keep.
  2. Who will maintain it in twelve months? Pick what the team you can realistically hire knows. A brilliant Elixir backend is a liability if your next two hires are TypeScript developers.
  3. What is the riskiest assumption? The stack should make that cheap to test. For a marketplace it is supply; for a B2B tool it is the integration with the customer's existing data.

If you cannot answer question three in one sentence, you are not ready to pick a stack. Run three customer interviews first.

My defaults

These are the tools I reach for unless something in the answers above says otherwise.

NeedDefaultWhy
Web app, dashboard, marketing siteNext.js + TypeScriptOne codebase for SEO pages and app screens, great hosting story
Mobile app on both storesFlutterNative performance, one team, mature tooling
Backend for a small teamFirebase or Postgres (Supabase/Neon)Auth, storage and data without running servers
PaymentsStripeBoring in the best way

What I avoid at the MVP stage

  • Microservices. One deployable unit until you have a reason.
  • Custom auth. Use a provider; your users do not care how the login was built.
  • A design system before a design. Ship screens, then extract patterns.
feature-flags.ts
// Keep risky features behind a flag so you can ship daily without a big-bang launch
export const flags = {
  newOnboarding: process.env.NEXT_PUBLIC_FLAG_ONBOARDING === "1",
};

The decision in one line

Pick the stack that lets the smallest team ship to the channel your users already live in, then stop debating and build.

MR

Marco Restif

Software engineer · AI & full-stack. Writing about what I build.

Read next

Working on something similar?

I take on a few projects at a time. Get in touch and we can see if it is a fit.