You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
firebase emulator ui does not respect "emulator.ui.host" field in firebase.json #6222
Thanks for the detailed report, @dt665m. I was able to reproduce the behavior you mentioned. Just to make sure we’re on the same page, is your expected behavior for the console to output something similar to:
┌─────────────────────────────────────────────────────────────┐
│ ✔ All emulators ready! It is now safe to connect your app. │
│ i View Emulator UI at http://0.0.0.0:4000/ │
└─────────────────────────────────────────────────────────────┘
┌────────────────┬──────────────┬─────────────────────────────────┐
│ Emulator │ Host:Port │ View in Emulator UI │
├────────────────┼──────────────┼─────────────────────────────────┤
│ Authentication │ 0.0.0.0:9098 │ http://0.0.0.0:4000/auth │
├────────────────┼──────────────┼─────────────────────────────────┤
│ Firestore │ 0.0.0.0:8080 │ http://0.0.0.0:4000/firestore │
└────────────────┴──────────────┴─────────────────────────────────┘
Emulator Hub running at 127.0.0.1:4400
Other reserved ports: 4500, 9150
Thanks for the detailed report, @dt665m. I was able to reproduce the behavior you mentioned. Just to make sure we’re on the same page, is your expected behavior for the console to output something similar to:
┌─────────────────────────────────────────────────────────────┐
│ ✔ All emulators ready! It is now safe to connect your app. │
│ i View Emulator UI at http://0.0.0.0:4000/ │
└─────────────────────────────────────────────────────────────┘
┌────────────────┬──────────────┬─────────────────────────────────┐
│ Emulator │ Host:Port │ View in Emulator UI │
├────────────────┼──────────────┼─────────────────────────────────┤
│ Authentication │ 0.0.0.0:9098 │ http://0.0.0.0:4000/auth │
├────────────────┼──────────────┼─────────────────────────────────┤
│ Firestore │ 0.0.0.0:8080 │ http://0.0.0.0:4000/firestore │
└────────────────┴──────────────┴─────────────────────────────────┘
Emulator Hub running at 127.0.0.1:4400
Other reserved ports: 4500, 9150
@aalej yes, that indicator for the Emulator UI host in the console (along with the one for Emulator Hub) could clear some confusion. Thanks for taking a look at this!
Thanks dt665m, I agree this is unintended behavior. We'll get to this when we can, but in the meantime if anyone would like to take a crack at adjusting the output let me know and I can provide some direction.
From reading printEmulatorOverview in emulators-start.ts on main: the table's Host:Port column shows each emulator's listen address through commandUtils.getListenOverview, but the "View Emulator UI at" line is built with EmulatorRegistry.url(Emulators.UI), which goes through getInfo() and connectableHostname(). So with "ui": { "host": "0.0.0.0" } the UI listens on 0.0.0.0 while the banner shows 127.0.0.1, which is what @dt665m saw. The "Emulator Hub host:" line uses getInfo() too, so it has the same mismatch.
A link to http://0.0.0.0:4000 can't be opened everywhere (it fails on Windows), so I'd keep the link connectable and show the listen address next to it:
i View Emulator UI at http://127.0.0.1:4000/ (listening on 0.0.0.0:4000)
and print the Hub's listen address the same way. The per-emulator "View in Emulator UI" links would stay as they are, since they need to be clickable. Does that match what you had in mind, or would you prefer a different output?
Activity
dt665m commentedon Aug 7, 2023
After further testing, this is actually working properly. It's just the console output that is not correct

aalej commentedon Aug 7, 2023
Thanks for the detailed report, @dt665m. I was able to reproduce the behavior you mentioned. Just to make sure we’re on the same page, is your expected behavior for the console to output something similar to:
dt665m commentedon Aug 8, 2023
@aalej yes, that indicator for the Emulator UI host in the console (along with the one for Emulator Hub) could clear some confusion. Thanks for taking a look at this!
christhompsongoogle commentedon Aug 8, 2023
Thanks dt665m, I agree this is unintended behavior. We'll get to this when we can, but in the meantime if anyone would like to take a crack at adjusting the output let me know and I can provide some direction.
gauranshahuja commentedon Oct 11, 2026
@christhompsongoogle I'd like to take you up on this one if it's still open.
From reading
printEmulatorOverviewinemulators-start.tsonmain: the table's Host:Port column shows each emulator's listen address throughcommandUtils.getListenOverview, but the "View Emulator UI at" line is built withEmulatorRegistry.url(Emulators.UI), which goes throughgetInfo()andconnectableHostname(). So with"ui": { "host": "0.0.0.0" }the UI listens on 0.0.0.0 while the banner shows 127.0.0.1, which is what @dt665m saw. The "Emulator Hub host:" line usesgetInfo()too, so it has the same mismatch.A link to
http://0.0.0.0:4000can't be opened everywhere (it fails on Windows), so I'd keep the link connectable and show the listen address next to it:and print the Hub's listen address the same way. The per-emulator "View in Emulator UI" links would stay as they are, since they need to be clickable. Does that match what you had in mind, or would you prefer a different output?
christhompsongoogle commentedon Oct 29, 2026
Yes this approach looks great
gauranshahuja commentedon Nov 1, 2026
@christhompsongoogle thanks! The PR is up at #11407, with the startup output from a real run in the description.