firebase / firebase/firebase-admin-node
[FR] Bundle size
- Dominant language
- TypeScript
- Stars
- 1.7k
- Forks
- 419
- Avg merge
- 3d 10h
- Merged PRs (30d)
- 16
Description
**Is your feature request related to a problem? Please describe.**
When using `firebase-admin` on AWS lambda it adds a big blog to the bundle size. We are using `esbuild` to bundle our sources written in TS, and bundling the admin sdk adds an extra of 5.7MB, minified 2.8MB. This is far from optimal, because the bundle should be as small as possible for better cold-start performance. The code looks like this:
```js
import * as admin from "firebase-admin";
const app = admin.initializeApp();
console.log("app :>> ", app);
const firestore = app.firestore();
console.log("firestore :>> ", firestore);
```
**Describe the solution you'd like**
Make it possible to load or install only the parts of the SDK that are really needed (like the new version of the js client sdk => https://github.com/firebase/firebase-js-sdk)
**Describe alternatives you've considered**
I tried to add only parts of SDK we need, e.g.
```js
import { initializeApp } from "firebase-admin/lib/firebase-namespace";
const app = initializeApp();
console.log("app :>> ", app);
const firestore = app.firestore();
console.log("firestore :>> ", firestore);
```
but this gives the same bundle size and it does not work, even when compiling with `tsc`: When running via `node main.js` it gives this:
```bash
/some/path/main.js:6
var app = (0, firebase_namespace_1.initializeApp)();
^
TypeError: (0 , firebase_namespace_1.initializeApp) is not a function
```
Contributor guide
Research direction
Start with the TypeScript example importing firebase-admin and the alternative entry point firebase-admin/lib/firebase-namespace, then reproduce the reported bundle with esbuild and inspect the generated main.js. Done means the SDK can load only the needed parts and the resulting bundle is materially smaller without breaking initialization or Firestore usage.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, nodejs, typescript
- Domain
- build-system, cloud, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100