I first learned about Firebase bretty soon after it was initially launched. I first tested it myself for a small personal app few years ago but then migrated away from it mostly due to issues with the developer tooling and also because of the large payload for even a minimal client. I started working on a new project that uses Firebase and was happy to learn that both of these issues have been largely fixed.
All Firebase version 9 JS packages now support modern ESM modules and they’re also bundled with proper TypeScript typings. The documentation outlines all the available packages, plus there is the firebase-admin for the server side.
I also wrote a TIL about typing Firebase database actions.
The Firebase emulator has learned to export and import data so it’s much easier to use id with testing, among othert things. All in all, I was positively surprised by the state of Firebase tooling.