Firebase is the most powerful platform that I saw to support an MVP stage of a project that implies a website + mobile applications.
Be careful with what I say there: "to support an MVP". Firebase is awesome for early stages, but it has some huge technical problems.
Let's talk now about the PROS:
- With a few clicks, you have a full platform, with an AWESOME free tier, ready to be used. Serverless support for static files (your website in JS, probably), backend support for realtime DB, or even Google Cloud Functions made simple (Firebase Functions).
- Probably one of the most important things: You can integrate Analytics, and Push Notifications to your Android and iOS app with a few clicks.
- NoSQL DB (this may also be consider as a CONS. Careful here.
- With Firebase Functions, it's super simple to have global vars in memory, to speed up the backend responses
- Awesome support with Expo (awesome technology for mobile MVPs)
- Super simple local testing. Just run
firebase initand thennpm run serveand you'll have your backend running in your local env. - Huge Authorization+Authentication integrated flows: Login with Facebook, Gmail, and all the other options, with just a couple of minutes of configurations and barely few lines of code.
Now, some CONS:
-
In Firebase Firestore DB (the DB you'll probably use): Compound queries are not allowed. For example, you can NOT do this:
.where("state", ">=", "CA").where("population", ">", 100000). You can't combine different attributes of the object in thewherequery. Read more about that limitation in https://firebase.google.com/docs/firestore/query-data/queries#compound_queries -
In Firebase Functions: OR querys (like
where user_status = 2 OR user_status = 3in SQL) are not allowed. Yes... This is HUGE. Not be able to do an OR query is a huge blocker in performance. Luckily in the last months Firebase added an "IN" query, where you can do.where('country', 'in', ['USA', 'Japan'])but it's limited to only 10 values in theinarray. Good enough, but still some limitations there. Check more about that limitation in https://firebase.google.com/docs/firestore/query-data/queries#in_not-in_and_array-contains-any
Feel free to ask any question, and I'll share some details here