- 
                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 34fcb41 with previous commit 7daf201. 🕵️ See full comparison in Code PushUp portal 🔍 🏷️ Categories👍 1 group improved, 👎 12 groups regressed, 👍 4 audits improved, 👎 62 audits regressed, 14 audits changed without impacting score🗃️ Groups
 8 other groups are unchanged. 🛡️ Audits530 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-sizeIssues
 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: 0violations - 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.jsmatches blacklist pattern**/node_modules/lodash/**- Replace withlodash-esand use selective imports likeimport 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.mjsmatches 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.jsmatches 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.jsmatches 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.jsmatches 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.jsmatches 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: 10matches; weight:0
 
- Blacklist: 
- 
Issues: - Error: 1+candidates - Violation detected, requires action
- Info: 0candidates - 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: 0violations - 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 (b3d0961) | 0.69.5 | 38.64 s | 1 | 0 | 5 | 
Made with ❤ by Code PushUp
# Conflicts: # package-lock.json # package.json # packages/cli/project.json # packages/models/src/lib/configuration.ts # packages/utils/src/index.ts
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:
PluginArtefactOptionsto models✅ MVP State
The final implementation is delivered in the following PR's: