Brett Owers
← All Projects

FlutterFire

Archived

August 1, 2019

Working with the FlutterFire packages — the official Firebase integration for Flutter. Firebase makes it absurdly easy for a solo developer or small team to get started working in the cloud without managing servers, writing backend code, or configuring infrastructure.

Purpose

Explored the FlutterFire ecosystem to integrate Firebase services into Flutter apps. Firebase was the gateway to cloud development — authentication, databases, storage, hosting, and push notifications without writing a single line of backend code or provisioning a single server.

Stack

FlutterDartFirebaseFirestoreFirebase AuthCloud FunctionsFirebase StorageFCM

What I Learned

  • Firebase is a Backend-as-a-Service (BaaS) that gives you a production-grade backend through configuration and client SDKs instead of server code. Firestore for the database, Firebase Auth for authentication, Cloud Storage for files, Cloud Functions for server-side logic, FCM for push notifications — each is a managed service you configure through a console and access through a client library. No servers to provision. No uptime to monitor. No scaling to plan.
  • Firestore is a NoSQL document database with real-time sync built in. You write a query, and the results stream live to every connected client. When a document changes, every listener updates instantly. For chat apps, collaborative tools, or any real-time feature, this eliminates the WebSocket infrastructure that you would otherwise have to build and maintain yourself.
  • Firebase Auth supports email/password, Google, Apple, Facebook, phone number, and anonymous authentication out of the box. Setting up auth from scratch (password hashing, session management, token rotation, OAuth flows, email verification) takes weeks. Firebase Auth takes an afternoon. For most apps, this alone justifies using Firebase.
  • The FlutterFire packages are the bridge between Flutter and Firebase. Each Firebase service has a corresponding Dart package (cloud_firestore, firebase_auth, firebase_storage, etc.) with Flutter-idiomatic APIs. The setup process — adding google-services.json for Android and GoogleService-Info.plist for iOS — is the only manual step. After that, you are writing Dart code that talks to Google's infrastructure.
  • Cloud Functions let you run server-side code without a server. They trigger on Firestore writes, Auth events, HTTP requests, or scheduled intervals. This is where you put business logic that should not live on the client — payment processing, data validation, sending emails, aggregating analytics. The mental model shift: you are not managing a server, you are defining reactions to events.
  • The tradeoff is vendor lock-in and cost at scale. Firebase is cheap or free for prototypes and small apps. At scale, Firestore reads and Cloud Function invocations add up. Migrating away from Firebase means rewriting every database query, auth flow, and cloud function. The bet you are making: "I will grow fast enough that paying for Firebase is a good problem to have." For most projects, that bet is correct.

Key Insights

  • Firebase removed the single biggest barrier to building real applications: the backend. Before BaaS, a solo developer who wanted to build a mobile app with user accounts, a database, and push notifications needed to learn server deployment, database administration, API design, and DevOps. Firebase collapses all of that into client SDK calls. This is why so many indie apps and startups launched on Firebase — it lets you ship a full-stack product with a front-end team.
  • The cloud is not a place — it is a billing model. When you use Firebase, you are renting compute, storage, and bandwidth from Google's data centers, billed per operation. Understanding this demystifies "the cloud" for anyone starting out: your Firestore documents live on Google's SSDs. Your Cloud Functions run on Google's servers. Your Storage files sit on Google's disks. You are paying someone else to keep the lights on, and for most developers, that is an excellent trade.
  • For the Potatuhs ecosystem, Firebase powers several properties and has been a reliable workhorse. The pattern: use Firebase to validate an idea fast, and only migrate to self-managed infrastructure when the economics demand it. Most ideas die before they reach that scale. The ones that survive have already proven themselves worth the migration effort.
  • The progression every developer should understand: Firebase (zero infrastructure, fastest start) → managed platforms like Railway, Render, or Supabase (more control, less lock-in) → self-managed infrastructure on AWS/GCP (full control, full responsibility). Start at the top. Only move down when you have a specific reason. Most projects never need to leave Firebase.
#Flutter#Dart#Firebase#Firestore#BaaS#cloud#authentication#real-time#Cloud Functions#serverless#backend#infrastructure#Potatuhs

This post was composed through a conversation between Brett Owers and Claude Code (Anthropic). The content reflects Brett's recollection of each project and the lessons drawn from it. Some details may be approximate or omitted — the purpose is to paint an honest picture of a software engineer's development over time, not to serve as a precise historical record.