Flutter CTO Report 2024
Get insights about Flutter directly from CTOs, CIOs, Tech Leads, and Engineering Managers!

Why Firestore, Part I: Reasons to Love It

Jakub Fijałkowski
Head of Backend at LeanCode; Security Expert; DevOps Expert; Head of the Infrastructure, DevOps and Support Team at LeanCode.

Rating: 4.82 / 5 Based on 34 reviews

Nov 17th, 2020 • 10 min
Free product design tips
Join our Newsletter for Expert Flutter Tips & Product Design Insights from our seasoned team!
By submitting your email you agree to receive the content requested and to LeanCode's Privacy Policy.
or follow us

Firestore & Firebase suite are great technologies. They allow us to build some features really fast. Showing your stakeholders that you’ve made real-time, collaborative features in almost no time gets you the “wow effect” so needed in some fields. However, Firestore also has many pain points that, in my opinion, outweigh the pros in most of the more advanced cases.

This is a series of articles where we comprehensively describe the pros and cons of using Firestore as the backend for your next mobile application. In this series, we will try to show you that making this decision is not a simple process, and you need to analyze your app from multiple perspectives.

Posts in the series:

  1. Why Firestore, Part I: reasons to love it [you are currently reading it].
  2. Why Firestore, Part II: reasons to hate it.
  3. Why Firestore, Part III: 6 things you need to know before using Firestore.
  4. Why Firestore, Part IV: how to escape it.

Is Firestore appropriate for you? As with everything in IT - it depends. Read on to find out why!

Easy to integrate

Firestore has outstanding libraries for mobileAndroid (Kotlin!), iOS (Swift!), Flutter (Dart!) - every one of them works magically. For free, you get services that complement each other with ergonomic and easy-to-bootstrap libraries. With Firestore libs, you get all the goodies of the Firebase suite - auth, serverless, storage, ML, and others perfectly blended with the language specifics.

Kotlin, Swift, Dart

The only bad thing about them is that they are pervasive - once you get them, you start using them everywhere. In all layers. Generally, that is a bad thing, but let’s be honest here, most small apps don’t need any additional abstractions, and using the libraries directly is a good thing.

Offline capabilities

Cyclist

This is a significant trait of Firestore. The truly killer feature - it can work (to some extent) offline. Seamlessly. If you have accessed the data previously, you can do so again without the Internet connection. You can even save the data there without an active connection. Firestore libraries handle all the syncing, data merging, notifications, and other problems.

You don’t need a backend… sometimes

The Firebase platform (that Firestore is part of) might be a viable “backend” option for minor, user-focused apps. If you use it alongside other SaaS solutions (e-mails, voice calls, etc.), you might even be able to build a not-so-small app without creating any traditional backend system.

Firebase platform

Firebase suite provides you with:

  1. Auth - Firebase Auth.
  2. Storage - Firebase Cloud Storage.
  3. Serverless - Firebase Cloud Functions.
  4. Basic machine learning - Firebase ML.
  5. A/B tests & user-scoped configuration - Firebase Remote Configuration.
  6. App distribution & monitoring - Firebase App Distribution & Crashlytics.
  7. Many, many more.

Being Google’s product, it also integrates well with GCP. It blends with it more and more with every release, and I suppose that soon, these two will be fully merged.

Having all these solutions in a single place, governed by the same IAM services and configured the same, gives you a great advantage right at the beginning. It allows you to focus on what matters, leaving all the gritty details to Firebase. Even if you need some more advanced backend features, you can always use Cloud Functions and do it the usual way.

Examples

If you need to have offline capabilities, using Firestore for that is also great - we used this approach in Activy, and it worked wonders.

Activy - mobile application

We need there to record GPS tracks as reliably as sports devices (e.g., watches), but being a casual gaming app, it needs to do so in very rough conditions without specialized hardware. Jagged GPS signal, no Internet, prolonged connection, intermittent Internet connection, apparent connection - all need to be taken care of. With Firestore, we handled all of the cases and gave our users a solution that works everywhere - even in very remote areas without that much of development.

There are many other places where Firestore is an excellent solution, but Firestore's simplicity can take its toll. Where Firestore shines and simplifies things initially, it can make your hair gray after the application gets complicated enough. As with everything in programming, you need to wage pros and cons, consider the future and select the best for your app.

Do you want to find out how the Firestore pricing works or what traps wait for you if you're going to secure it properly? Maybe you want to create an auction-based app that requires quick updates? We learned about this the hard way. Paying thousands for improper usage, breaking live apps because of deployments, overcoming all the shortcomings of Firestore - we've been there.

Read the 2nd part of our series on "Why Firestore" to learn about the biggest limitations of Firestore.

Free product design tips
Join our Newsletter for Expert Flutter Tips & Product Design Insights from our seasoned team!
By submitting your email you agree to receive the content requested and to LeanCode's Privacy Policy.
or follow us
Rate this article
4.82 / 5 Based on 34 reviews

Read more

Why Firestore, Part II: Reasons to Hate It

Firestore (and Firebase) is a really great solution for many different use cases. However, there is a number of limitations that make using Firestore painful. Tricky latency, data migration problems, and complicated privacy are just the beginning of the trouble. Read the article to find out why!
Firestore limiations

Why Firestore, Part III:  6 Things You Need to Know Before Using Firestore

It's worth understanding the Firestore limitations and how to overcome them before you start building your next web or mobile application using native or cross-platform solutions like Flutter, React Native, or Kotlin. Read hints on how to use Firestore effectively and not hurt yourself in the process.
Image tile

Why Firestore, Part IV: How to Escape It

This is our final article about Firestore! Have you realized that Firestore makes your life more difficult? At first sight, Firestore seems like a perfect fit for your use case but then the bad things happen. If you're looking for the way out - in this part we'll show you how to escape from Firestore!
Image tile

Lessons Learned After Making the First 10 Commercial Apps in Flutter

There is always exciting technology our team wants to try out. We challenged them and asked for proof on how Flutter can bring value to the client. We are sharing the insights after making the first 10 commercial apps within the last 24 months during which we’ve spent some 17.193,00 hours on Flutter projects.
Four mobile phones with small icons