# Firenook compared with the Firebase Local Emulator Suite

> Firenook beside the official Firebase emulators: what each runs on, speed, memory, data between runs, the console, MCP, and where the official suite is ahead.

Both run your Firebase project on your machine from the same files. Firenook is faster, lighter and keeps your data; the official suite emulates more services and is the reference. Here they are side by side.

## Side by side

The measured rows are from the benchmark of Firenook against firebase-tools 15.22.0 on Java 26, on a real application.

| Topic                  | Firenook                                                                                                 | Firebase Local Emulator Suite                                                                     |
| ---------------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| What you install       | One npm package with a native engine for your platform. Nothing else is downloaded.                      | firebase-tools, which downloads the Java emulators and the Emulator UI the first time they start. |
| What it runs on        | Node 22, 24 or 26 on macOS, Linux with glibc 2.28 or newer, or Windows x64. No Java.                     | Java 21 or newer, and Node for the CLI and your functions.                                        |
| Emulators              | Firestore, Authentication, Cloud Storage, Cloud Functions, Pub/Sub, Cloud Tasks, Eventarc and Extensions | The same, and Realtime Database, Hosting, App Hosting and Data Connect.                           |
| A write, median        | 5.1 ms                                                                                                   | 208.2 ms                                                                                          |
| Memory at peak         | 2.11 GiB                                                                                                 | 22.57 GiB, growing with your data                                                                 |
| Firestore query shapes | Faster on 25 of 26, and a tie on the last                                                                | Faster on none. On 2.7 million documents it ran out of memory on Java’s defaults.                 |
| Data between runs      | Kept on disk with --keep-data. A restart takes 0.59 s.                                                   | Exported at every stop and imported at every start. A restart took 30.8 s.                        |
| After a crash          | At most the last second of writes is lost.                                                               | Everything since the last export is lost.                                                         |
| Firestore databases    | Every database your app names, each with its own rules.                                                  | One. It refuses a second.                                                                         |
| The console            | Every service it runs: function calls, Pub/Sub, Cloud Tasks and Eventarc included.                       | The Emulator UI: Firestore, Auth, Storage, Realtime Database, Extensions and logs.                |
| Functions runtimes     | Node                                                                                                     | Node and Python                                                                                   |
| TypeScript functions   | Compiled as you save with --build, with the compiler’s errors in the log.                                | Compiled by npm run build:watch, which you run yourself beside the emulators.                     |
| Deploy and login       | No. Keep firebase-tools for them.                                                                        | Yes: it is the whole Firebase CLI.                                                                |
| Status                 | 0.2.0, its first release for public use, open source under the Apache License 2.0.                       | Generally available, made by Google.                                                              |

The brighter cell is ahead on its row. Firebase is a trademark of Google LLC; Firenook is independent and not affiliated with Google. [How it was measured](https://firenook.dev/benchmarks).

## What stays the same

Firenook reads what the official suite reads and answers on the same ports, so switching is one word.

- ### Your configuration

  firebase.json, .firebaserc, rules and indexes, read the way the Firebase CLI reads them.

- ### Your ports and SDKs

  Every emulator on its usual port, so connectFirestoreEmulator and the emulator variables work unchanged.

- ### Your data

  The official export format, both ways: --import what you have, and export for the official emulator any time.

- ### Your commands

  emulators:start and emulators:exec, with --only, --import, --export-on-exit and --inspect-functions.

## Choose Firenook when

- You restart the emulators often and want your data back at once.
- Your machine or CI runner is short of memory, or you’d rather not install Java.
- Your app writes a lot, or your tests wait on Firestore.
- You want to see every function call, message and task, or give an agent the emulators.

## Keep the official suite when

- You need Realtime Database, Hosting, App Hosting and Data Connect.
- Your functions are in Python.
- You need a generally available release, or your queries mostly order large collections.
- You can also run both: Firenook for what it covers, the official suite for the rest, on other ports.

## Try it on your project

Install it next to firebase-tools and change one word in your emulator script. If it isn’t for you, export your data and change the word back.

`npm install --save-dev firenook`

[Switch in three steps](https://firenook.dev/docs/get-started/switch)
