-
Notifications
You must be signed in to change notification settings - Fork 16
feat: bundle-stats plugin poc implementation #1024
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Code PushUp🤨 Code PushUp report has both improvements and regressions – compared current commit 948eceb with previous commit ed01057. 🕵️ See full comparison in Code PushUp portal 🔍 🏷️ Categories👍 1 group improved, 👎 12 groups regressed, 👍 7 audits improved, 👎 57 audits regressed, 12 audits changed without impacting score🗃️ Groups
8 other groups are unchanged. 🛡️ Audits529 other audits are unchanged. |
…ugin-bundle-stats-poc # Conflicts: # packages/plugin-bundle-stats/src/lib/runner/audits/details/table.unit.test.ts
Code PushUp Report🛡️ Audits🔥 Initial Bundle Size (Bundle Stats)🟥 1.4 MB (77 files) (score: 0)
initial-bundle-size
Issues
Monitors critical loading performance, enforces size budgets, detects bloat sources, and prevents slow startup times in main application bundles. ⚙️ Configuration
🗂️ All Files (Bundle Stats)🟩 109.03 MB (4557 files) (score: 100)
Analyzes complete bundle composition, identifies architectural patterns, tracks package distribution, and reveals size contributors across all bundle artifacts. ⚙️ Configuration
|
Group | Modules | Size |
---|---|---|
@angular | 116 | 1.27 MB |
ngx-daterangepicker-material | 1 | 63.81 kB |
ngx-slider-v2 | 1 | 60.76 kB |
@angular-slider | 31 | 59.41 kB |
ngx-scrollbar | 2 | 49.15 kB |
ngx-device-detector | 1 | 36.87 kB |
@ngrx | 6 | 36.55 kB |
🚫 @ng-bootstrap | 1 | 34.16 kB |
@rx-angular | 15 | 30.83 kB |
sports-animations | 3 | 30.52 kB |
@ngu | 1 | 22.04 kB |
🚫 ngx-toastr | 1 | 18.79 kB |
ng-circle-progress | 1 | 17.16 kB |
ngx-popperjs | 1 | 15.28 kB |
ngx-float-ui | 1 | 14.83 kB |
@ngx-translate | 1 | 10.77 kB |
ng-dynamic-component | 1 | 6.04 kB |
ng-in-viewport | 1 | 6 kB |
ng-lazyload-image | 1 | 5.93 kB |
angularx-qrcode | 1 | 4.84 kB |
ngx-lottie | 1 | 4.72 kB |
📁 Rest | - | 13.63 MB |
angular-ecosystem
🗂️ angular-ecosystem 15.42 MB 5282 26
├── 📄 chunk-Y3HMZ5KM.js 3.31 MB 1326 modules
│ ├── 📁 Rest 3.29 MB 1325 modules
│ └── 🅰️ node_modules/@angular/material/fesm2022/button-toggle.mjs 21.55 kB
├── 📄 chunk-HV7YKUNQ.js 362 modules
│ └── 📁 Rest 1.13 MB 362 modules
├── 📄 chunk-IPC3RBKM.js 642.32 kB 262 modules
│ ├── 📁 Rest 630.02 kB 260 modules
│ ├── 🅰️ node_modules/ng-lazyload-ima...sm2020/ng-lazyload-image.mjs 5.93 kB
│ └── 🅰️ node_modules/@ngrx/signals/fesm2022/ngrx-signals.mjs 2.04 kB
├── 📄 chunk-BF2DWCDG.js 54 modules
│ └── 📁 Rest 604.23 kB 54 modules
├── 📍 chunk-NVQ5VL4Y.js 602.77 kB 45 modules
│ ├── 📁 Rest 569.55 kB 42 modules
│ └── 🅰️ node_modules 30.52 kB 3 modules
├── 📄 chunk-XMJGD64P.js 594.28 kB 706 modules
│ ├── 📁 Rest 434.31 kB 690 modules
│ ├── 🅰️ @angular/router 75.64 kB 3 modules
│ ├── 🅰️ @angular/common 22 kB 2 modules
│ ├── 🚫 node_modules/ngx-toastr/fesm2022/ngx-toastr.mjs 18.79 kB
│ ├── 🅰️ @angular/platform-browser 17.32 kB 3 modules
│ ├── 🅰️ node_modules/ngx-float-ui/fesm2022/ngx-float-ui.mjs 14.83 kB
│ ├── 🅰️ node_modules/@angular/animations/fesm2022/animations.mjs 1.9 kB
│ ├── 🅰️ @rx-angular/cdk 1.64 kB 3 modules
│ ├── 🅰️ node_modules/@angular/core/fesm2022/rxjs-interop.mjs 1.1 kB
│ └── 🅰️ node_modules/@angular/cdk/fesm2022/layout.mjs 1.03 kB
├── 📄 chunk-VC6QAOBB.js 68 modules
│ └── 📁 Rest 552.27 kB 68 modules
├── 📄 chunk-P7F2V6TK.js 105 modules
│ └── 📁 Rest 433.21 kB 105 modules
├── 📍 chunk-BT5R6MGD.js 387.29 kB 43 modules
│ ├── 📁 Rest 365.41 kB 42 modules
│ └── 🅰️ node_modules/@angular/cdk/fesm2022/menu.mjs 17.01 kB
├── 📄 chunk-YPBRAJLT.js 99 modules
│ └── 📁 Rest 351.16 kB 99 modules
├── 📄 chunk-SJSSVFWT.js
│ └── 📁 node_modules/braintree-web/dist/browser/index.js 312.82 kB
├── 📄 chunk-FWSPTPCX.js 239.75 kB 171 modules
│ ├── 🅰️ @angular/core 190.5 kB 4 modules
│ └── 📁 Rest 46.26 kB 167 modules
├── 📄 chunk-SYYRCYVE.js 21 modules
│ └── 📁 Rest 215.01 kB 21 modules
├── 📄 chunk-INBYE6V6.js 26 modules
│ └── 📁 Rest 195.1 kB 26 modules
├── 📄 chunk-DAQ6D6Q5.js 185.61 kB 28 modules
│ ├── 📁 Rest 180.3 kB 27 modules
│ └── 🅰️ node_modules/@angular/materi.../material-moment-adapter.mjs 3.23 kB
├── 📄 chunk-FTWYFSHV.js 167.71 kB 62 modules
│ ├── 📁 Rest 161.28 kB 61 modules
│ └── 🅰️ node_modules/@ngrx/component/fesm2022/ngrx-component.mjs 3.99 kB
├── 📄 chunk-GILYN2SN.js 47 modules
│ └── 📁 Rest 148.67 kB 47 modules
├── 📄 chunk-3UHUUF6G.js 32 modules
│ └── 📁 Rest 149.76 kB 32 modules
├── 📄 chunk-D33QGDF3.js 9 modules
│ └── 📁 Rest 144.11 kB 9 modules
├── 📄 chunk-44Z4IQ53.js 49 modules
│ └── 📁 Rest 136.15 kB 49 modules
├── 📄 chunk-GBQV5BLB.js 126.92 kB 44 modules
│ ├── 📁 Rest 66.32 kB 13 modules
│ └── 🅰️ @angular-slider/ngx-slider 59.41 kB 31 modules
├── 📄 chunk-K4GNEKUV.js 122.54 kB 16 modules
│ ├── 🅰️ node_modules/ngx-daterangepi...daterangepicker-material.mjs 63.81 kB
│ └── 📁 Rest 57.95 kB 15 modules
├── 📍 chunk-DWZKI7KU.js 121.18 kB 19 modules
│ ├── 📁 Rest 59.23 kB 18 modules
│ └── 🅰️ node_modules/@angular/cdk/fesm2022/drag-drop.mjs 52.84 kB
├── 📄 chunk-JCE5E6ZQ.js 117.05 kB 35 modules
│ ├── 🅰️ @angular/cdk 98.28 kB 33 modules
│ └── 🅰️ @angular/material 17.4 kB 2 modules
├── 📄 quick-deposit-feature.component-6L65HN7U.css 114.15 kB 2 modules
│ ├── 🅰️ node_modules/@angular/materi...built-themes/indigo-pink.css 86.37 kB
│ └── 📁 packages/payments/quickdepos...posit-feature.component.scss 27.68 kB
└── 📁 ... 4.45 MB 1650 files
Tracks Angular framework usage, optimizes tree-shaking opportunities, identifies duplicate Angular modules, and prevents framework bloat in Angular applications.
⚙️ Configuration
-
Issues:
- Info:
0
violations - Analysis only, no penalties
- Info:
-
Table:
- Groups: Configured groups
- Rest: Other contributing modules
-
Tree:
- Groups: Same as table
- Pruning:
25 children
,2 depth
- Rest: Remaining items grouped for clarity
🚫 Blacklisted (Bundle Stats)
🟩 9.32 MB (132 files) (score: 100)
Group | Modules | Size |
---|---|---|
✅ Not Blacklisted | 3332 | 8.59 MB |
🚫 Blacklist | 224 | 750.22 kB |
Issues
Severity | Message | Source file | Line(s) |
---|---|---|---|
🚨 error | 🚫 node_modules/lodash/lodash.js matches blacklist pattern **/node_modules/lodash/** - Replace with lodash-es and use selective imports like import isEmpty from "lodash-es/isEmpty" . |
chunk-47D45RXC.js |
|
🚨 error | 🚫 Blacklisted modules matching **/node_modules/socket.io-client/** included in file - Use lazy loading for heavy dependencies. |
chunk-5V2PPPNH.js |
|
🚨 error | 🚫 node_modules/ngx-device-detector/fesm2022/ngx-device-detector.mjs matches blacklist pattern **/node_modules/ngx-device-detector/** - Use lazy loading for heavy dependencies. |
chunk-AJ2NKFMZ.js |
|
🚨 error | 🚫 node_modules/ua-parser-js/src/ua-parser.js matches blacklist pattern **/node_modules/ua-parser-js/** - Use lazy loading for heavy dependencies. |
chunk-FLWXSBRD.js |
|
🚨 error | 🚫 Blacklisted modules matching **/node_modules/ngx-scrollbar/** included in file - Use lazy loading for heavy dependencies. |
chunk-IGE4HHZ4.js |
|
🚨 error | 🚫 node_modules/lottie-web/build/player/lottie.js matches blacklist pattern **/node_modules/lottie-web/** - Use lazy loading for heavy dependencies. |
chunk-SXUKVV42.js |
|
🚨 error | 🚫 node_modules/launchdarkly-js-client-sdk/dist/ldclient.es.js matches blacklist pattern **/node_modules/launchdarkly-js-client-sdk/** - Use lazy loading for heavy dependencies. |
chunk-U6V7KC5B.js |
|
🚨 error | 🚫 Blacklisted modules matching **/node_modules/@microsoft/** included in file - Use lazy loading for heavy dependencies. |
chunk-WWRMO4DV.js |
|
🚨 error | 🚫 node_modules/howler/dist/howler.js matches blacklist pattern **/node_modules/howler/** - Use lazy loading for heavy dependencies. |
chunk-Y3HMZ5KM.js |
Detects blacklisted dependencies, enforces architectural standards, prevents security vulnerabilities, and blocks performance bottlenecks from reaching production.
⚙️ Configuration
-
Scoring:
- Blacklist:
10
matches; weight:0
- Blacklist:
-
Issues:
- Error:
1+
candidates - Violation detected, requires action - Info:
0
candidates - No violations found
- Error:
-
Table:
- Groups: Detail listing of 🚫Blacklist, ✅Not Blacklisted
- Rest: Other contributing modules
📦 Node Modules (Bundle Stats)
🟩 6.69 MB (300 files) (score: 100)
Group | Modules | Size |
---|---|---|
📦 Packages | 664 | 1.33 MB |
📦🚫 Legacy Packages | 29 | 186.75 kB |
🆕 moment | 1 | 59.42 kB |
🆕 js-sha512 | 1 | 18.8 kB |
🆕🚫 underscore | 1 | 17.42 kB |
🆕 immer | 1 | 7.95 kB |
🆕 resize-observer-polyfill | 1 | 7.51 kB |
🆕 fastdom | 1 | 1.46 kB |
🆕 js-levenshtein | 1 | 818 B |
🆕 xhr2 | 1 | 43 B |
📁 Rest | - | 5.06 MB |
node-modules
🗂️ node-modules 6.69 MB 3161 11
├── 📍 chunk-2DMRTCLA.js 2.87 MB 1246 modules
│ ├── 📁 Rest 2.83 MB 1245 modules
│ └── 🆕 node_modules/js-sha512/src/sha512.js 18.8 kB
├── 📄 chunk-XMJGD64P.js 594.28 kB 706 modules
│ ├── 📁 Rest 349.94 kB 319 modules
│ ├── 📦 Packages 237.82 kB 386 modules
│ └── 🆕 node_modules/js-levenshtein/index.js 818 B
├── 📄 chunk-YPBRAJLT.js 99 modules
│ └── 📁 Rest 351.16 kB 99 modules
├── 📄 chunk-SJSSVFWT.js
│ └── 📦 node_modules/braintree-web/dist/browser/index.js 312.82 kB
├── 📄 chunk-FWSPTPCX.js 171 modules
│ └── 📦 Packages 236.75 kB 171 modules
├── 📄 chunk-JCE5E6ZQ.js 35 modules
│ └── 📦 Packages 115.69 kB 35 modules
├── 📄 chunk-KGOP3CSX.js 45 modules
│ └── 📁 Rest 84.25 kB 45 modules
├── 📄 chunk-A7WNARMW.js 3 modules
│ └── 📦 Packages 65.9 kB 3 modules
├── 📄 chunk-WWRMO4DV.js 66.19 kB 36 modules
│ ├── 📦🚫 Legacy Packages 49.95 kB 25 modules
│ ├── 📦 Packages 8.72 kB 7 modules
│ └── 📁 Rest 6.85 kB 4 modules
├── 📄 chunk-MSOM6LHI.js
│ └── 🆕 node_modules/moment/moment.js 59.42 kB
└── 📁 ... 1.96 MB 818 files
Detects newly added packages, catches forbidden dependencies, monitors 3rd party costs, and prevents bundle bloat from unreviewed dependencies.
⚙️ Configuration
-
Issues:
- Info:
0
violations - Analysis only, no penalties
- Info:
-
Table:
- Groups: Detail listing of 📦🚫Legacy Packages, 📦Packages
- Rest: Other contributing modules
-
Tree:
- Groups: Same as table
- Pruning:
10 children
,2 depth
- Rest: Remaining items grouped for clarity
About
Report was created by Code PushUp on Fri, Jul 25, 2025, 4:22 AM GMT+2.
Plugin | Audits | Version | Duration |
---|---|---|---|
Bundle Stats | 5 | 0.69.2 |
38.59 s |
Commit | Version | Duration | Plugins | Categories | Audits |
---|---|---|---|---|---|
docs: add examples (b3d0961dc489753ef1f5edbcced33a9127387dea) | 0.69.5 |
38.64 s | 1 | 0 | 5 |
Made with ❤ by Code PushUp
Bundle Stats Plugin PoC Implementation
Fine-grained bundle size tracking for your builds
This plugin enables advanced bundle stats capabilities to avoiding unwanted size increase.
📝 Related Issue
👉 #1015 – Bundle Stats Plugin Architecture Discussion
Examples
Features
Legend:
Todos:
PluginArtefactOptions
to models✅ MVP State
The final implementation is delivered in the following PR's: