flamelink / flamelink-js-sdk

🦊 Official Flamelink JavaScript SDK for both the Firebase Realtime database and Cloud Firestore
https://flamelink.github.io/flamelink-js-sdk
MIT License
43 stars 5 forks source link

Fix/gh 82 bundle size #92

Closed jperasmus closed 5 years ago

jperasmus commented 5 years ago

Created separate DB packages for all the modules.

jperasmus commented 5 years ago

@gitdubz This is a pretty big refactor. There are now separate packages for both RTDB and CF for all the Flamelink modules. This enables end-users to only import the bare minimum that they would need to not bloat their bundle sizes.

jperasmus commented 5 years ago

It is hard to compare file sizes between the old SDK and this new one because the old one did not support Cloud Firestore or the Users module at all. The old SDK also only produced a single file for everything + a gzip option. The new SDK supports both CF and RTDB, allows imports of separate modules (+ different databases now) and gives you a gzip as well as a brotli file now.

Here is a breakdown of the file sizes right now.

Flamelink JS SDK Bundle Sizes

Old SDK

flamelink.js        144K
flamelink.js.gz     38K

No option for individual module imports and only supports RTDB

New SDK

# everything
flamelink.js                299K
flamelink.js.br             44K
flamelink.js.gz             81K

# individual modules (RTDB + CF)
flamelink-app.js            63K
flamelink-app.js.br         18K
flamelink-app.js.gz         21K

flamelink-content.js            121K
flamelink-content.js.br         24K
flamelink-content.js.gz         32K

flamelink-navigation.js         98K
flamelink-navigation.js.br      22K
flamelink-navigation.js.gz      30K

flamelink-schemas.js        90K
flamelink-schemas.js.br     21K
flamelink-schemas.js.gz     27K

flamelink-settings.js           75K
flamelink-settings.js.br        19K
flamelink-settings.js.gz        24K

flamelink-storage.js            150K
flamelink-storage.js.br         30K
flamelink-storage.js.gz         50K

flamelink-users.js              76K
flamelink-users.js.br           20K
flamelink-users.js.gz           24K

# individual modules (RTDB only)
flamelink-content-rtdb.js           87K
flamelink-content-rtdb.js.br        21K
flamelink-content-rtdb.js.gz        26K

flamelink-navigation-rtdb.js        74K
flamelink-navigation-rtdb.js.br     19K
flamelink-navigation-rtdb.js.gz     25K

flamelink-schemas-rtdb.js           72K
flamelink-schemas-rtdb.js.br        19K
flamelink-schemas-rtdb.js.gz        24K

flamelink-settings-rtdb.js          61K
flamelink-settings-rtdb.js.br       17K
flamelink-settings-rtdb.js.gz       20K

flamelink-storage-rtdb.js           110K
flamelink-storage-rtdb.js.br        27K
flamelink-storage-rtdb.js.gz        37K

flamelink-users-rtdb.js             61K
flamelink-users-rtdb.js.br          18K
flamelink-users-rtdb.js.gz          20K

# individual modules (CF only)
flamelink-content-cf.js             91K
flamelink-content-cf.js.br          21K
flamelink-content-cf.js.gz          27K

flamelink-navigation-cf.js          80K
flamelink-navigation-cf.js.br       20K
flamelink-navigation-cf.js.gz       27K

flamelink-schemas-cf.js             74K
flamelink-schemas-cf.js.br          20K
flamelink-schemas-cf.js.gz          25K

flamelink-settings-cf.js            70K
flamelink-settings-cf.js.br         19K
flamelink-settings-cf.js.gz         23K

flamelink-storage-cf.js             112K
flamelink-storage-cf.js.br          27K
flamelink-storage-cf.js.gz          37K

flamelink-users-cf.js               72K
flamelink-users-cf.js.br            19K
flamelink-users-cf.js.gz            24K