The console the Firebase emulators should have had

Google’s Emulator UI has no page for your Functions, Pub/Sub, Cloud Tasks or Eventarc, only a log. Firenook’s console covers every service it runs, live, on the Emulator UI’s port.

npx firenook emulators:start
Read the console guide
The console’s Overview: all nine services running with their ports and counts, recent problems, the data and the engine

The Overview: every service’s health, its counts and its port, the problems since the start, and the engine. Every picture on this page is the console on the demo project, on 0.2.0.

Every function call, kept

Each call with what triggered it, its request or event, its answer, its duration and the lines it logged. Open a failed one to read its error and stack, then run it again after your fix.

Function calls: every call with its time, function, trigger, outcome and duration, one of them a 500

Your functions at a glance

Every function with its trigger, its codebase, when it last ran, how often, how often it failed and how long it takes. Scheduled ones show their next run.

All functions: checkout, nightlyReport, sendReceipt and stripeWebhook with their triggers, runs, errors and times

Firestore, browsable and editable

Collections at once, even on a store of millions of documents, documents as fields or as code, and edits that save only when you say so.

Firestore: the collections, a page of orders and one order open for editing

Rules you can watch decide

The rules in force beside every decision they made, with the line that decided it. Try a request in the playground, run tests, and see which lines your app has covered.

Firestore rules: the rules file in an editor, with the decisions, playground, tests and coverage beside it

Users, and what Auth would have sent

Users with their providers, claims and activity. The verification emails, sign-in links and SMS codes Auth would have sent wait in an inbox.

Authentication: a list of users with filters, one open with its profile, security and providers

Files, shown as files

Browse buckets as folders or as a grid of pictures, upload and move files, and read the rules that guard them.

Storage: a folder of product photos shown as a grid of thumbnails

Messages you can see

Each topic’s messages with their attributes, its subscriptions and their backlog, publishing by hand, and your schedules, which you can pause or run now.

Pub/Sub: the orders topic with its four messages, their data and attributes

One log for everything

Every emulator and every function in one stream, filtered by level, kind, service or function, each line linked to the call that printed it.

Logs: the lines of every emulator and function, with filters by level, kind, service and function

And the rest

The console covers every service the suite runs, so nothing you start is out of sight.

  • Cloud Tasks

    Queues with their tasks; pause, resume and purge a queue, run or delete a task.

  • Eventarc

    Every event with what each function did with it, and publishing or replaying one.

  • Extensions

    Each instance with its state and functions, and its parameters, reloaded when they change.

  • Connect

    The code to connect your app, for the web, Flutter, Android, Apple platforms and servers, and your coding agent.

  • Snapshots and resets

    Download Firestore, Auth and Storage as an export, or empty one service without a restart.

  • Light, dark and offline

    It follows your system’s theme, needs no network, and the Emulator UI’s old addresses lead to it.

Questions

The rest is in the console guide. Something else? Ask on GitHub.

Where is the console?

At /console on the Emulator UI’s port: http://127.0.0.1:4000/console by default, or the port emulators.ui.port gives in firebase.json. Press o in Firenook’s terminal to open it.

What happened to Google’s Emulator UI?

Firenook doesn’t serve it. The console covers every feature it had, and its addresses, such as /firestore or /auth, lead to the console’s page for the same thing.

Can I open it through a proxy or another host name?

Any name under localhost works, such as my-app.localhost behind a local proxy. Other names need --allowed-hosts, so a page on another site can’t reach your emulators through a name it controls.

Does it change my data when I look?

No. Reading never writes. Edits are staged until you save them, and the console asks before it deletes or resets anything.

Open it on your project

Start Firenook in your project and press o. The console opens on the Overview, live, with nothing to install.

npm install --save-dev firenook
Get started