Using Cloud Firestore 

Cloud Firestore is a flexible, scalable NoSQL database for mobile, web, and server development. As of 2026, it remains the recommended database back end for FlutterFlow projects, and Google has continued to invest heavily in it — most notably with the arrival of an Enterprise edition in Native mode and support for multiple databases within a single project. If you are building a mobile app that needs a database back end, Cloud Firestore is still the clearest path to production.

Cloud Firestore is a NoSQL database, which means you don't define its entire structure in tables ahead of time and you don't use SQL statements to query it. Instead, you store data in collections, which contain documents, which contain fields of various types mapped to values. The supported data types are: Array, Boolean, Bytes, Date and time, Floating-point number, Geographical point, Integer, Map, Null, Reference, and Text string.

TL:DR – There is a fair amount of setup involved. You will need to configure Cloud Firestore for the Web, and to run the Firebase Local Emulator Suite you will need a Java Runtime Environment (JRE) — the quickest route on a modern Mac is via Homebrew.

 

What's changed in 2026

Enterprise edition, multiple databases, and a lighter SDK option

A few things have changed since this article was first written, and they are worth knowing about before you dive in.

  • Enterprise edition in Native mode — Cloud Firestore now offers an Enterprise tier in Native mode, aimed at production workloads that need stronger SLAs and higher throughput guarantees. For most indie and small-team projects the standard tier is still perfectly adequate, but it is good to know the option exists as your app scales.
  • Multiple databases per project — You can now run more than one Cloud Firestore database inside a single Firebase project. This makes it straightforward to keep, for example, a Cloud Firestore database and a Datastore database side by side in the same project without any conflict.
  • Firestore Lite SDK — If your use case is simple REST-style CRUD and you don't need real-time listeners, the Firestore Lite SDK is a lighter-weight alternative available via npm. It reduces your bundle size noticeably and is worth considering for admin web apps that don't need live updates.
  • Firebase SDK 12.x — The current npm package is This email address is being protected from spambots. You need JavaScript enabled to view it..0. If you are following any older tutorial that references version 8 or 9 modular syntax, be aware that the API surface has continued to evolve. Install with npm install This email address is being protected from spambots. You need JavaScript enabled to view it..0 --save.
  • Node.js versions — Firebase CLI and Cloud Functions now support current Node.js LTS releases. Node 14 — referenced in earlier versions of this article — is long past end-of-life. Use Node 20 LTS or Node 22 LTS for new projects.
  • FriendlyEats is retired — The FriendlyEats sample app that underpinned earlier versions of this guide has been superseded. See the updated quickstart guidance below.

Data model

Firestore is flexible, but it helps to think the structure through first

This app needs a collection called territories which will contain documents representing organisations, each holding a set of data fields. A simple diagram helps to make that concrete.


  ┌───────────┐
  │           │
  │Territories│
  │           │
  └─────┬─────┘
        │
        │ ┌───────────────┐
        └─┤Organisation 1 │
          ├───────────────┤
          │               │
          │ ranking: 2.75 │
          │               │
          │ category: "a" │
          │               │
          │ id: "text id" │
          │               │
          │ name: "name"  │
          │               │
          │ dataPoint1: 1 │
          │               │
          │ dataPoint2: 2 │
          │               │
          │ dataPoint3: 3 │
          │               │
          │ dataPoint4: 4 │
          │               │
          │ etc ...       │
          └───────────────┘

Cloud Firestore has no built-in mechanism for calculating or aggregating field values across documents. When data needs to be updated — adjusting several fields for a given organisation at once — the Firestore documentation recommends using a Cloud Function for Firebase to handle the aggregation and write the result back to the database. For a small initial data set, adding records manually in the Firebase console is fine for testing. An admin web app handles ongoing changes in production.

Cloud Firestore for the Web

Getting started with the official quickstart

Cloud Firestore is the primary database offering inside Google Firebase for mobile and web apps. There is an older Realtime Database in Firebase too, but FlutterFlow targets Cloud Firestore, and that is the right choice for new projects in 2026. The best starting point is the official Cloud Firestore quickstart on the Firebase documentation site, which covers initialising a database, writing and reading documents, and setting up security rules. The Firebase team also maintains a YouTube channel with up-to-date video walkthroughs if you prefer to learn that way.

The goal for this project is an admin web front end in the browser that can read, write, update, and delete entries in Cloud Firestore for the mobile app to consume. The quickstart covers exactly that workflow. Work through it, get comfortable with the modular SDK syntax introduced in Firebase 9 and carried forward into the current version 12 release, and you will have a solid foundation to build on.

Authentication is not a feature of the first release of the mobile app, but the admin web app does need some form of access control. Anonymous login — where the browser user is silently signed in without a prompt — is a reasonable starting point. The Firestore security rule then simply requires an authenticated user, which keeps unauthenticated traffic out. Before deploying to production, tighten the rule to restrict access to authorised administrators only.

Step-by-step: starting a fresh Firebase project for a Firestore-backed admin web app

  • Xcode — On a Mac, make sure Xcode and the command-line tools are properly installed before anything else. This is especially relevant if you need to build native tooling for Apple silicon.
  • Java — Firebase Local Emulator Suite requires a Java Runtime Environment (JRE). The easiest install on a modern Mac is via Homebrew — see the instructions below.
  • Node.js — Install a current Node.js LTS release. Node 14, referenced in older guides, is end-of-life. Use Node 20 LTS or Node 22 LTS. Node Version Manager (nvm) is still the most convenient way to manage versions:
    nvm install --lts
    Installing latest LTS version.
    ...
    Now using node v20.x.x (npm v10.x.x)
    See also: Firebase Functions: Get Started
  • Firebase CLI — Install the Firebase CLI globally by running npm install -g firebase-tools. Once complete, the firebase command is available in your terminal. See also: Firebase CLI via npm
  • Firebase SDK — In your project directory, install the current Firebase SDK:
    npm install This email address is being protected from spambots. You need JavaScript enabled to view it..0 --save
    If your use case is simple CRUD without real-time listeners, consider the Firestore Lite SDK instead — it is lighter and reduces your bundle size.
  • Run firebase login to authenticate via the browser:
    firebase login
    Visit this URL on this device to log in:
    https://accounts.google.com/o/oauth2/auth?client_id=xxxxxxxxxxx_xxxxxxxx
    
    Waiting for authentication...
    Open the URL in your browser, enter your Google credentials, and close the tab once authentication completes. Your shell session will confirm success:
    ✔  Success! Logged in as This email address is being protected from spambots. You need JavaScript enabled to view it.
  • In your project directory, run firebase init firestore and accept the defaults for Firestore rules and index files.
  • Select Test mode and note that this is insecure — you will need to tighten the rules before any real deployment.
  • Select a location for your Firestore database. This becomes the default Google Cloud Platform resource location for your project. Choose a region close to your users — for a UK audience, europe-west2 (London) is a sensible choice.
  • Run firebase init functions and install dependencies with npm. Select JavaScript for language support, or TypeScript if you prefer — both are well supported in 2026.
  • Enable Anonymous Auth — In the Firebase console, open the Build section in the left nav, click Authentication, then find the Sign-in providers tab. Enable the Anonymous provider and click Save.
  • Run firebase emulators:start --only hosting. The emulator will serve your app locally:
    hosting: Local server: http://localhost:5000
    Open http://localhost:5000 in your browser.

Build and customise your admin web app

With the emulator running and the quickstart working, you have everything you need to start building a Firestore-backed admin interface. The pattern — a simple web form that reads and writes Cloud Firestore documents — is exactly what the mobile app needs on the admin side. From here, customise the UI to match your project: update manifest.json for colours and icons, swap in your own images and favicons (tools like favicon.io make this quick), and adjust the colour palette to suit your brand. Refresh the browser after each change to see it take effect.

If the emulator fails to start, the most likely cause is a missing Java Runtime Environment. See the section below.

Java Runtime Environment (JRE) for Firebase Local Emulator Suite

The quickest route in 2026 is Homebrew

Firebase Local Emulator Suite requires a Java Runtime Environment. In 2026, the simplest way to get one on a Mac — whether Intel or Apple silicon — is via Homebrew. There is no need to hunt down a platform-specific installer or navigate a third-party download page.

If you do not have Homebrew installed, follow the instructions at brew.sh first. Then install OpenJDK with a single command:

brew install openjdk

Homebrew will handle the download, build, and linking automatically. Once complete, verify the installation:

java --version
openjdk 17.0.19 2026-04-21
OpenJDK Runtime Environment Homebrew (build 17.0.19+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.19+0, mixed mode, sharing)

With a working JRE confirmed, the Firebase Local Emulator Suite will start without complaint and you can get on with local development.