Fastify v5+ firebase-admin plugin. Adds a singleton firebase object to your Fastify instance with full TypeScript support.
- Supports both camelCase and snake_case Firebase cert keys TypeScript types for both cert formats.
- Prevents multiple Firebase app initializations (singleton)
- Throws clear errors for missing/invalid certs
- Works with Fastify v5+ and fastify-plugin v5+
- Async/Promise plugin signature for modern Fastify
- Full TypeScript support
npm i fastify-firebase
# or
yarn add fastify-firebase
# or
pnpm add fastify-firebase
Add the plugin into your project using the register
function, provide the cert file from Firebase console and you are done!
This plugin will add the firebase
namespace to your Fastify instance.
import Fastify from 'fastify';
import fastifyFirebase from 'fastify-firebase';
import firebasePrivateKeyJson from '../firebase.json'; // <-- private key file from Firebase console
const server = Fastify({ logger: true });
server.register(fastifyFirebase, firebasePrivateKeyJson); // just hook the plugin with the cert file
server.get('/getAllUsers', async (request, reply) => {
// firebase is available on request.server.firebase
const firebase = request.server.firebase;
const snapshot = await firebase.firestore().collection('Users').get();
const arrayOfUsers = snapshot.docs.map((doc) => doc.data());
reply.send(arrayOfUsers);
});
(async () => {
try {
const address = await server.listen({ port: 3000 });
console.log(`Server listening at ${address}`);
} catch (err) {
server.log.error(err);
process.exit(1);
}
})();
- Now requires Fastify v5+
- Cert keys can be camelCase or snake_case
- Only one Firebase app instance is created (singleton)
- Plugin is now async/Promise-based
- How to generate a private key file for your service account
- Firebase's Settings > Service Accounts.
- Fastify
- fastify-plugin NPM
- firebase-admin NPM
- fastify-firebase NPM
Licensed under MIT.