When building serverless applications with Firebase, Firestore read efficiency is a recurring concern—especially when a Cloud Function repeatedly accesses the same data. This is where @libs-jd/cloud-firestore-cache steps in. Designed for single-instance Firebase Cloud Functions, it offers a simple and lightweight in-memory caching layer to reduce redundant reads and improve performance.
@libs-jd/cloud-firestore-cache?This NPM package provides a smart wrapper around Firestore that caches reads within a single instance of a Firebase Cloud Function. It’s built for situations where you configure your Cloud Function with maxInstances: 1, ensuring the function runs on a single server instance—allowing reliable in-memory caching.
Scoped Caching: Caches data within the lifecycle of a single function instance.
Minimal Setup: Wraps Firestore operations with caching out-of-the-box.
Performance Boost: Reduces redundant Firestore read operations.
Low Overhead: Lightweight and easy to drop into existing functions.
npm install @libs-jd/cloud-firestore-cache
💡 Basic Usage Example
const { initializeApp } = require("firebase-admin/app");
const { getFirestore, FieldValue } = require("firebase-admin/firestore");
const { FirestoreCache } = require("@libs-jd/cloud-firestore-cache");
initializeApp();
const firestore = getFirestore();
// Wrap Firestore with caching
const db = FirestoreCache(firestore, FieldValue);
// Fetch a document – cached within function instance
db.get("users/user123").then((data) => {
console.log("Cached or fetched result:", data);
});
Behind the scenes, the library stores the result in memory so future calls to the same path during that instance’s lifecycle are pulled from the cache.
Functions with maxInstances: 1 for consistent single-instance behavior
Frequently accessed documents that don’t change often
Firestore-heavy logic where reads repeat during one function lifecycle
Those tools are great—but they require setup, cost, and maintenance. This library offers a no-friction alternative tailored for small- to mid-scale Firebase projects where deploying full-blown caching infrastructure is overkill.
Imagine a billing microservice that needs to verify user roles or limits multiple times during execution. Instead of hitting Firestore repeatedly, this cache keeps the result in-memory, speeding up your logic and reducing read costs.
While gains vary by workload, using this cache:
Reduces Firestore reads (and associated cost)
Speeds up execution time for repeated queries
Simplifies your codebase by abstracting cache logic
The library is still in alpha, meaning APIs may change. Use it in non-critical paths or consider contributing feedback if you adopt it early.
GitHub: https://github.com/jeet-dhandha/cloud-firestore-cache
NPM: https://www.npmjs.com/package/@libs-jd/cloud-firestore-cache
If you're working with Firebase Cloud Functions and want a low-effort way to cut down on redundant Firestore reads, @libs-jd/cloud-firestore-cache is worth trying. It won’t replace Redis or complex caching layers, but for single-instance functions, it's a smart and lightweight optimization. Just remember—caching is only as good as your use case allows. If your data is highly dynamic or shared across instances, look elsewhere. But for targeted use in a controlled setup, this package might just save you time and cost.