firebase / firebase/firebase-js-sdk

firebase/auth and firebase/database treeshaking please

Open
#6,502 13 comments 6 reactions 1 assignee Claimed by @hsubox76 View on GitHub
api: auth api: database needs-attention question v9
Dominant language
TypeScript
Stars
5.1k
Forks
1k
Avg merge
2d 21h
Merged PRs (30d)
37

Description

Current firebase: 9.9.1

Some of firebase's modules are tree-shaking friendly, but some still aren't. In particular, `firebase/database` and `firebase/auth`.

For example, I have a module that doesn't need to do actual authentication, but just get persistence storage, and generate tokens. But even just importing `getAuth` (`import {getAuth} from "firebase/auth";`) still brings +300kb out of the file's 400kb to the rollup bundle (80kb after terser, etc, but still). Things that get included: all the `*AuthProvider()`; all `*Persistence()`; `Subscription`, `Redirects`, etc.

I know that the new philosophy behind the SDK is to support function-based import, and I think some other modules saw a big difference. But this still hurts quite a bit.

A similar problem with `firebase/database`. If you only want to get/set values from the realtime database, you must import almost the whole file for something that can be actually replaced by a fetch with token to the REST API.

Right now, doing:

```
import {initializeApp} from "firebase/app";
import {getAuth} from "firebase/auth";
import {getDatabase} from "firebase/database";

const app = initializeApp(firebaseConfig);
const auth = getAuth(app);
const db = getDatabase(auth);
```
and bundling with rollup generates a 738kb pre-terser (193kb after) and those two modules are the biggest offender.

Maybe there's a magical `rollupConfig.treeshake` option that I'm missing, but it would be nice to have a solutions for those.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.