Deleting an entire collection from Firestore should be handled on a backend server. Collections can grow infinitely large, so deleting a millions of documents can be an excessively large workload to put on a clientside web or mobile app. Option A - Use the CLI or Console You can manually delete a collection or subcollection from the Firebase Console OR by using the CLI. command line firebase firestore:delete path-to-delete Option B - Use a Cloud Function It is possible to interact with Firebase Tools from a Cloud Function. This works especially well with Callable functions because you most certainly want to enforce some form of user authorization. First, obtain CI token to authenticate firebase tools. cd functions npm i firebase-tools -D firebase login:ci # your_token firebase functions:config:set ci_token="your_token" The function should validate the user has permission to run the operation. If allowed, it runs the CLI command recursively on the collection and its nested subcollections. const project = process.env.GCLOUD_PROJECT; const token = functions.config().ci_token; exports.deleteCollection = functions.runWith({ timeoutSeconds: 540}) .https.onCall((data, context) => { const path = data.path; const allowed = context.auth.uid === path.split('/')[0]; // TODO your own logic if (!allowed) { throw new functions.https.HttpsError( 'permission-denied', 'Hey, that is not cool buddy!' ); } return firebase_tools.firestore .delete(path, { project, token, recursive: true, yes: true, }) .then(() => ({ result: 'all done!' })); }); Q&A Chat