How to choose your Flutter stack
Pick tools in the order you'll feel their pain. The first decision that constrains everything else is the backend, because it decides your data model, auth, and security boundary. Choose that before you touch state management or payments.
The honest split is narrow:
- Offline-first app (field workers, spotty connectivity, must work on a plane) → Firebase. Firestore's offline cache and reconnect sync are hard to match.
- Relational data, multi-tenant, you think in SQL → Supabase. Postgres + row-level security keeps tenants isolated at the database, not in app code.
That one fork settles 80% of the rest. On top, Riverpod is the default for state and Flutter itself is the framework — both are decisions you rarely regret. Payments and a no-code builder are situational, not foundational; bolt them on once the core is proven.
Don't assemble the whole stack on a whiteboard before writing code. Start with framework + backend + one state tool, ship one real screen end to end, and let the friction tell you what's missing.