Firebase is a collection of tools (Realtime Database, Cloud Firestore, Cloud Functions, Hosting, Authentication, Cloud Storage, and related analytics) that make it easier to build apps.
Hosting, Authentication, Firestore, Cloud Functions, and Cloud Storage fit particularly well in my opinionated app making decisions:
- I can statically deploy apps for free with built in custom domain SSL on Hosting. After configuration, deployments are a simple
$ firebase deploy and scale at $0.15/GB transferred with a built in CDN and rollbacks. Fantastic - as long as the bill stays reasonable, I never have to think about the DevOps of hosting my apps again.
- I don’t have to run through OAuth authentication boiler plate again. Firebase Authentication means my MVP can have any mix of password, phone number, Google, Facebook, Twitter, Github, or custom authentication in a dozen clicks. Most things I build need authentication, so that’s a huge win.
- Configuring and maintaining a database isn’t a reason I build apps. I’d rather pay a little more to have a scalable hosted way to create, read, edit, delete, and query data that would’ve gone in Postgres. Firestore sacrificed a little speed of Firebase’s Realtime Database to get querying which make Firestore practically as powerful as Postgres. Working in a NoSQL database is a little weird if you’re coming from a SQL background but Firebase has an excellent YouTube series on migrating from SQL to NoSQL to help out.
- Using React most application logic lives on the client. For the rare bits of code that can’t run on the client (like charging credit cards or responding to webhooks) Cloud Functions make it super easy to deploy functions (way easier than AWS Lambda) and have the bonus of responding to database or storage events.
- Managing document storage on Virtual Private Servers is terrible. I moved to S3 as fast as I could. In the Firebase ecosystem, Cloud Storage integrates way easier and is about the same price as S3. If you’re on a budget and your app stores a lot of documents it might make sense to put in more leg work and store on Backblaze’s B2.
I’m not terribly worried about being locked in to just using Firebase products. Static hosting and cloud functions are commodities and there are open source alternatives to Firestore. If google decided to charge me 7000% more what they’re currently charging I’d have migration options.
Before trying anything in the guides below make sure you’ve added firebase to your project.