Skip to content

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

Open
wants to merge 35 commits into
base: main
Choose a base branch
from

Conversation

BioPhoton
Copy link
Collaborator

@BioPhoton BioPhoton commented Jul 7, 2025

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

NOTE:
This PoC PR serves as an initial implementation to validate the proposed architecture and core functionality.
The final implementation will be delivered in smaller, focused PRs to ensure clarity, better reviewability, and incremental improvements.

Examples

Features

Legend:

  • Tested - 🧪
  • Documented/Planned - 📖
  • Implemented - 👩‍💻

Todos:

  • use generic type PluginArtefactOptions to models
  • merge plugin and audit level configs. 📖 👩‍💻 🧪
  • 📊 Stats Unification - 📖 👩‍💻 🧪
    • esbuild - 📖 👩‍💻 🧪
    • webpack - 📖
    • rsbuild - 📖
    • vite - 📖
    • roldown - 📖
  • 🎯 Selection - 📖 👩‍💻 🧪
    • output - 📖 👩‍💻 🧪
    • input - 📖 👩‍💻 🧪
    • entryPoint - 📖 👩‍💻 🧪
  • 📏 Scoring - 📖 👩‍💻 🧪
    • Total Size - 📖 👩‍💻 🧪
    • Penalty - 📖 👩‍💻 🧪
      • Too small - 📖 👩‍💻 🧪
      • Too big - 📖 👩‍💻 🧪
      • Blacklisted - 📖 👩‍💻 🧪
  • 🧠 Insights Table - 📖 👩‍💻
    • Good strategy for accurate "byte picking" - 📖 👩‍💻
    • Grouping - 📖 👩‍💻
    • Remaining Bytes - 📖 👩‍💻
  • 🌲 Artefact Tree - 📖 👩‍💻
    • Pruning - 📖 👩‍💻
    • Grouping - 📖 👩‍💻
    • Formatting - 📖 👩‍💻

✅ MVP State

The final implementation is delivered in the following PR's:

  • utils
  • runner
    • unify logic
    • selection
    • scoring
  • plugin
  • docs
  • e2e
  • runner optional
    • artefact tree
    • insights table

@github-actions github-actions bot added 📖 Project documentation improvements or additions to the project documentation 🔬 testing writing tests 🛠️ tooling labels Jul 7, 2025
Copy link

github-actions bot commented Jul 10, 2025

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

🏷️ Category ⭐ Previous score ⭐ Current score 🔄 Score change
Security 🔴 44 🔴 0 ↓ −43.8
Code style 🟢 100 🟡 85 ↓ −15.2
Documentation 🔴 23 🔴 15 ↓ −7.6
Updates 🟡 74 🟡 71 ↓ −3.1
Code coverage 🟢 90 🟡 88 ↓ −2.5
Performance 🔴 43 🔴 45 ↑ +1.8
Bug prevention 🟢 100 🟢 98 ↓ −1.5
Accessibility 🟢 92 🟢 92
Best Practices 🟢 100 🟢 100
SEO 🟡 61 🟡 61
Type Safety 🟢 100 🟢 100
Miscellaneous 🟢 100 🟢 100
👍 1 group improved, 👎 12 groups regressed, 👍 7 audits improved, 👎 57 audits regressed, 12 audits changed without impacting score

🗃️ Groups

🔌 Plugin 🗃️ Group ⭐ Previous score ⭐ Current score 🔄 Score change
ESLint No Mutations (functional) 🟢 100 🔴 0 ↓ −100
ESLint No Statements (functional) 🟢 100 🔴 0 ↓ −100
ESLint Stylistic (functional) 🟢 100 🔴 0 ↓ −100
JS Packages NPM audit 🔴 44 🔴 0 ↓ −43.8
ESLint Helpful warnings (import) 🟢 100 🟡 75 ↓ −25
ESLint Style guide (import) 🟢 100 🟡 80 ↓ −20
ESLint Suggestions 🟢 100 🟡 85 ↓ −15.2
ESLint Static analysis (import) 🟢 100 🟡 88 ↓ −12.5
JSDoc coverage Documentation coverage 🔴 23 🔴 15 ↓ −7.6
ESLint Problems 🟢 100 🟢 94 ↓ −6
JS Packages NPM outdated dependencies 🟡 74 🟡 71 ↓ −3.1
Code coverage Code coverage metrics 🟢 90 🟡 88 ↓ −2.5
Lighthouse Performance 🔴 43 🔴 45 ↑ +1.8

8 other groups are unchanged.

🛡️ Audits

🔌 Plugin 🛡️ Audit 📏 Previous value 📏 Current value 🔄 Value change
ESLint Enforce treating data as immutable. 🟩 passed 🟥 99 errors ↑ +∞ %
ESLint Disallow imperative loops. 🟩 passed 🟥 69 warnings ↑ +∞ %
ESLint Enforce the style of numeric separators by correctly grouping digits. 🟩 passed 🟥 48 warnings ↑ +∞ %
ESLint Disallow mutable variables. 🟩 passed 🟥 34 warnings ↑ +∞ %
ESLint Enforce consistent brace style for all control statements 🟩 passed 🟥 29 warnings ↑ +∞ %
ESLint Disallow unused variables 🟩 passed 🟥 25 errors ↑ +∞ %
ESLint Enforce type definitions to consistently use either interface or type 🟩 passed 🟥 18 warnings ↑ +∞ %
ESLint Disallow number literals with zero fractions or dangling dots. 🟩 passed 🟥 13 warnings ↑ +∞ %
ESLint Enforce a maximum depth that blocks can be nested 🟩 passed 🟥 13 warnings ↑ +∞ %
ESLint Enforce a maximum number of lines of code in a function 🟩 passed 🟥 13 warnings ↑ +∞ %
ESLint Disallow non-null assertions using the ! postfix operator 🟩 passed 🟥 13 errors ↑ +∞ %
ESLint enforce using toBe() 🟩 passed 🟥 12 warnings ↑ +∞ %
ESLint enforce the style of file extensions in import declarations 🟩 passed 🟥 11 errors ↑ +∞ %
ESLint Disallow the use of console 🟩 passed 🟥 10 warnings ↑ +∞ %
ESLint Disallow the any type 🟩 passed 🟥 9 errors ↑ +∞ %
ESLint Template literals should not be nested 🟩 passed 🟥 8 warnings ↑ +∞ %
ESLint Disallow duplicate module imports 🟩 passed 🟥 8 warnings ↑ +∞ %
ESLint Forbid repeated import of the same module in multiple places. 🟩 passed 🟥 6 warnings ↑ +∞ %
ESLint Collapsible "if" statements should be merged 🟩 passed 🟥 6 warnings ↑ +∞ %
ESLint Disallow if statements as the only statement in if blocks without else. 🟩 passed 🟥 6 warnings ↑ +∞ %
ESLint Require consistently using either T[] or Array<T> for arrays 🟩 passed 🟥 6 warnings ↑ +∞ %
ESLint Forbid any invalid exports, i.e. re-export of the same name. 🟩 passed 🟥 5 errors ↑ +∞ %
ESLint Enforce a maximum number of lines per file 🟩 passed 🟥 5 warnings ↑ +∞ %
ESLint Checks dependencies in project's package.json for version mismatches 🟩 passed 🟥 5 errors ↑ +∞ %
ESLint Collection and array contents should be used 🟩 passed 🟥 4 errors ↑ +∞ %
ESLint Do not use a for loop that can be replaced with a for-of loop. 🟩 passed 🟥 4 warnings ↑ +∞ %
ESLint Enforce a maximum cyclomatic complexity allowed in a program 🟩 passed 🟥 4 warnings ↑ +∞ %
ESLint Require const declarations for variables that are never reassigned after declared 🟩 passed 🟥 3 errors ↑ +∞ %
ESLint Disallow negated conditions. 🟩 passed 🟥 3 warnings ↑ +∞ %
ESLint Disallow useless fallback when spreading in object literals. 🟩 passed 🟥 3 warnings ↑ +∞ %
ESLint Require for-in loops to include an if statement 🟩 passed 🟥 3 errors ↑ +∞ %
ESLint Enforce using a particular method signature syntax 🟩 passed 🟥 3 warnings ↑ +∞ %
ESLint Prefer property signatures over method signatures. 🟩 passed 🟥 3 warnings ↑ +∞ %
ESLint Prefer .at() method for index access and String#charAt(). 🟩 passed 🟥 2 warnings ↑ +∞ %
ESLint Enforce throwing TypeError in type checking conditions. 🟩 passed 🟥 2 warnings ↑ +∞ %
ESLint Require template literals instead of string concatenation 🟩 passed 🟥 2 warnings ↑ +∞ %
ESLint Forbid a module from importing a module with a dependency path back to itself. 🟩 passed 🟥 2 errors ↑ +∞ %
ESLint Enforce consistent usage of type assertions 🟩 passed 🟥 2 errors ↑ +∞ %
ESLint Replaces x => f(x) with just f. 🟩 passed 🟥 2 warnings ↑ +∞ %
ESLint Identical expressions should not be used on both sides of a binary operator 🟩 passed 🟥 1 error ↑ +∞ %
ESLint Enforce explicitly comparing the length or size property of a value. 🟩 passed 🟥 1 warning ↑ +∞ %
ESLint Disallow empty files. 🟩 passed 🟥 1 warning ↑ +∞ %
ESLint Prefer Array#{indexOf,lastIndexOf}() over Array#{findIndex,findLastIndex}() when looking for the index of an item. 🟩 passed 🟥 1 warning ↑ +∞ %
ESLint Require braces around arrow function bodies 🟩 passed 🟥 1 warning ↑ +∞ %
ESLint Disallow reassigning function parameters 🟩 passed 🟥 1 error ↑ +∞ %
ESLint Disallow renaming import, export, and destructured assignments to the same name 🟩 passed 🟥 1 warning ↑ +∞ %
ESLint Require or disallow method and property shorthand syntax for object literals 🟩 passed 🟥 1 warning ↑ +∞ %
ESLint Enforce a maximum number of parameters in function definitions 🟩 passed 🟥 1 warning ↑ +∞ %
ESLint Disallow variable declarations from shadowing variables declared in the outer scope 🟩 passed 🟥 1 warning ↑ +∞ %
ESLint disallow unsupported Node.js built-in APIs on the specified version 🟩 passed 🟥 1 error ↑ +∞ %
ESLint Checks dependencies in project's package.json for version mismatches 🟩 passed 🟥 1 error ↑ +∞ %
JSDoc coverage Interfaces coverage 🟩 0 undocumented interfaces 🟥 17 undocumented interfaces ↑ +∞ %
JS Packages Vulnerabilities for NPM prod dependencies. 🟨 8 vulnerabilities (4 high, 4 low) 🟥 9 vulnerabilities (1 critical, 4 high, 4 low) ↑ +12.5 %
Code coverage Line coverage 🟨 86.8 % 🟨 78.7 % ↓ −9.3 %
Lighthouse First Contentful Paint 🟥 3.1 s 🟨 3.0 s ↓ −5.2 %
JSDoc coverage Functions coverage 🟥 496 undocumented functions 🟥 564 undocumented functions ↑ +13.7 %
Lighthouse Largest Contentful Paint 🟥 4.4 s 🟥 4.2 s ↓ −4.3 %
JS Packages Outdated NPM prod dependencies. 🟨 17 outdated package versions (6 major, 7 minor, 4 patch) 🟨 18 outdated package versions (7 major, 6 minor, 5 patch) ↑ +5.9 %
Lighthouse Speed Index 🟥 6.7 s 🟥 6.5 s ↓ −2.6 %
Code coverage Function coverage 🟩 93.3 % 🟩 90.9 % ↓ −2.6 %
JSDoc coverage Variables coverage 🟥 220 undocumented variables 🟥 239 undocumented variables ↑ +8.6 %
Code coverage Branch coverage 🟨 85.9 % 🟨 85.1 % ↓ −1 %
JS Packages Outdated NPM dev dependencies. 🟨 56 outdated package versions (29 major, 23 minor, 4 patch) 🟨 57 outdated package versions (29 major, 23 minor, 5 patch) ↑ +1.8 %
JSDoc coverage Types coverage 🟥 230 undocumented types 🟥 294 undocumented types ↑ +27.8 %
Lighthouse Avoids enormous network payloads 🟩 Total size was 2,031 KiB 🟩 Total size was 1,999 KiB ↓ −1.6 %
Lighthouse Minimizes main-thread work 🟥 18.3 s 🟥 16.4 s ↓ −10.2 %
Lighthouse Server Backend Latencies 🟩 1,550 ms 🟩 1,020 ms ↓ −34.1 %
Lighthouse Total Blocking Time 🟥 4,050 ms 🟥 3,610 ms ↓ −10.8 %
Lighthouse Uses efficient cache policy on static assets 🟨 31 resources found 🟨 31 resources found ↑ +0.1 %
Lighthouse Max Potential First Input Delay 🟥 1,830 ms 🟥 1,630 ms ↓ −10.9 %
Lighthouse JavaScript execution time 🟥 7.0 s 🟥 6.8 s ↓ −2.5 %
Lighthouse Metrics 🟩 100% 🟩 100% ↓ −0.5 %
Lighthouse Time to Interactive 🟥 14.2 s 🟥 14.1 s ↓ −0.5 %
Lighthouse Network Round Trip Times 🟩 30 ms 🟩 30 ms ↑ +17.4 %
Lighthouse Avoids an excessive DOM size 🟥 2,271 elements 🟥 2,266 elements ↓ −0.2 %
Lighthouse Initial server response time was short 🟩 Root document took 400 ms 🟩 Root document took 400 ms ↓ −0.3 %

529 other audits are unchanged.

hoebbelsB and others added 5 commits July 22, 2025 17:17
@BioPhoton
Copy link
Collaborator Author

BioPhoton commented Jul 23, 2025

Code PushUp Report

🛡️ Audits

🔥 Initial Bundle Size (Bundle Stats)

🟥 1.4 MB (77 files) (score: 0)
Group Modules Size
🅰️ @angular 61 550.29 kB
🟣 vanilla 323 310.84 kB
🚫 Theme Park Package 48 185.31 kB
📦 lodash-es 364 49.55 kB
🟣 Design System Package 7 49.4 kB
🚫 Blacklist 2 49.15 kB
📦 rxjs 166 35.19 kB
🅰️ @ngrx 2 19.43 kB
📦 @floating-ui 4 18.92 kB
🅰️ ngx-toastr 1 18.79 kB
🅰️ ngx-float-ui 1 14.83 kB
🟣 loaders-lib 10 14.68 kB
🅰️ @ngx-translate 1 10.77 kB
📦 @rtms 1 9.44 kB
🟣 payments 14 7.93 kB
🟣 sports 40 6.83 kB
🟣 host-app 11 6.57 kB
📦 @push-based 1 5.66 kB
🅰️ ngx-lottie 1 4.72 kB
🅰️ @rx-angular 3 1.64 kB
🟣 oxygen 3 811 B
🟣 casino 1 129 B
📁 Rest - 57.65 kB

initial-bundle-size

🗂️ initial-bundle-size                                                    1.4 MB  1068  21                        
├── 📄 chunk-XMJGD64P.js                                                                     594.28 kB  706 modules
│   ├── 🟣 vanilla                                                                           300.55 kB  312 modules
│   ├── 🅰️ @angular/router                                                                   75.64 kB    3 modules
│   ├── 📦 lodash-es                                                                          49.55 kB  364 modules
│   ├── 🟣 Design System Package                                                               49.4 kB    7 modules
│   ├── 🅰️ @angular/common                                                                      22 kB    2 modules
│   ├── 📦 @floating-ui                                                                       18.92 kB    4 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/@rtms/client/fesm2015/rtms-client.js                                   9.44 kB             
│   ├── 📦 node_modules/@push-based/ngx...vg/fesm2022/ngx-fast-svg.mjs                         5.66 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             
│   └── 📄 node_modules/js-levenshtein/index.js                                                  818 B             
├── 📄 chunk-FWSPTPCX.js                                                                     239.75 kB  171 modules
│   ├── 🅰️ @angular/core                                                                     190.5 kB    4 modules
│   ├── 📦 rxjs                                                                               35.19 kB  166 modules
│   └── 📄 node_modules/tslib/tslib.es6.mjs                                                   11.07 kB             
├── 📄 chunk-JCE5E6ZQ.js                                                                     117.05 kB   35 modules
│   ├── 🅰️ @angular/cdk                                                                      98.28 kB   33 modules
│   └── 🅰️ @angular/material                                                                  17.4 kB    2 modules
├── 📄 chunk-A7WNARMW.js                                                                                  3 modules
│   └── 🅰️ @angular/animations                                                                65.9 kB    3 modules
├── 📄 chunk-MTPOUXPC.js                                                                                  6 modules
│   └── 🅰️ @angular/common                                                                   55.67 kB    6 modules
├── 📄 chunk-IGE4HHZ4.js                                                                                  2 modules
│   └── 🚫 Blacklist                                                                          49.15 kB    2 modules
├── 📍 main-BDM3RIPG.js                                                                       27.13 kB   56 modules
│   ├── 🟣 loaders-lib                                                                        13.46 kB    8 modules
│   ├── 🟣 host-app                                                                            6.57 kB   11 modules
│   ├── 🟣 sports                                                                              3.79 kB   33 modules
│   ├── 🟣 payments                                                                            1.14 kB    2 modules
│   ├── 🟣 packages/oxygen/libs/coral/d...l-sports-feature.provider.ts                           287 B             
│   └── 🟣 packages/casino/app/src/lottie-options.provide.ts                                     129 B             
├── 📄 styles-RH2YPOUA.css                                                                                         
│   └── 🚫 packages/themepark/themes/wh...nts/product-menu/styles.scss                        23.47 kB             
├── 📄 chunk-V5NKDI5C.js                                                                                           
│   └── 📄 node_modules/hammerjs/hammer.js                                                    19.97 kB             
├── 📄 chunk-ROQZT5LZ.js                                                                                           
│   └── 🅰️ node_modules/@ngrx/store/fesm2022/ngrx-store.mjs                                  14.31 kB             
├── 📄 styles-G43FGKUQ.css                                                                                         
│   └── 🚫 packages/themepark/themes/wh...ts/message-panel/styles.scss                        14.03 kB             
├── 📄 styles-Z43PANIN.css                                                                                         
│   └── 🚫 packages/themepark/themes/wh...omponents/footer/styles.scss                        12.33 kB             
├── 📄 chunk-52G5QY5E.js                                                                                           
│   └── 🅰️ node_modules/@ngx-translate/...m2022/ngx-translate-core.mjs                       10.77 kB             
├── 📄 styles-VHWOE7I3.css                                                                                         
│   └── 🚫 packages/themepark/themes/wh...components/inbox/styles.scss                        10.54 kB             
├── 📄 styles-QWZT5OTV.css                                                                                         
│   └── 🚫 packages/themepark/themes/wh.../rtms/rtms-layer/styles.scss                         9.92 kB             
├── 📄 styles-AXDDHPZ4.css                                                                                         
│   └── 🚫 packages/themepark/themes/wh...ents/date-picker/styles.scss                         9.88 kB             
├── 📄 chunk-RY2Y6BTD.js                                                                                  7 modules
│   └── 🟣 vanilla                                                                             8.81 kB    7 modules
├── 📄 styles-QLHNKCO4.css                                                                                         
│   └── 🚫 packages/themepark/themes/wh...omponents/header/styles.scss                         8.11 kB             
├── 📄 styles-BVMEFQ5G.css                                                                                         
│   └── 🚫 packages/themepark/themes/wh...s/session-limits/styles.scss                         7.67 kB             
├── 📄 chunk-E4YPOLYH.js                                                                                 12 modules
│   └── 🟣 payments                                                                            6.79 kB   12 modules
└── 📁 ...                                                                                      118 kB     59 files

Issues

Severity Message Source file Line(s)
🚨 error 🔺 chunk-FWSPTPCX.js is 239.75 kB (> 97.66 kB) chunk-FWSPTPCX.js
🚨 error 🔺 chunk-JCE5E6ZQ.js is 117.05 kB (> 97.66 kB) chunk-JCE5E6ZQ.js
🚨 error 🔺 chunk-XMJGD64P.js is 594.28 kB (> 97.66 kB) chunk-XMJGD64P.js
⚠️ warning 🔻 styles-E25WI4JT.css is 68 B (< 100 B) styles-E25WI4JT.css

Monitors critical loading performance, enforces size budgets, detects bloat sources, and prevents slow startup times in main application bundles.

⚙️ Configuration
  • Scoring:

    • Artefact Size: >100 B & <97.66 kB; weight: 0
    • Total Size: >976.56 kB threshold
  • Issues:

    • Warning: <97.66 kB - Size acceptable but monitor growth
    • Error: >97.66 kB - Exceeds size budget
  • Table:

    • Groups: Detail listing of 🚫Blacklist, 🟣Design System Package, 🚫Theme Park Package, 💳Payments Package, 🎰Casino Package
    • Rest: Other contributing modules
  • Tree:

    • Groups: Same as table
    • Pruning: 20 children, 2 depth
    • Rest: Remaining items grouped for clarity

🗂️ All Files (Bundle Stats)

🟩 109.03 MB (4557 files) (score: 100)
Group Modules Size
📁 Node Modules 1109 30.12 MB
🟣 oxygen 4723 26.97 MB
🟣 myaccount 2275 12.58 MB
🟣 sports 3939 7.63 MB
🟣 payments 807 7.36 MB
🟣 poker 1951 3.48 MB
🟣 casino 712 3.39 MB
🟣 promo 707 2.52 MB
🟣 vanilla 1340 1.83 MB
🅰️ Angular 185 1.71 MB
🟣 bingo 208 871.86 kB
🟣 Design System Package 109 869.97 kB
🚫 Blacklist 224 750.22 kB
🟣 rewards-hub 63 236.11 kB
🟣 mokabingo-app 70 211.98 kB
🚫 Theme Park Package 49 185.82 kB
🟣 engagement 46 130.41 kB
🟣 lottery 40 54.01 kB
🟣 horseracing 38 53.71 kB
🟣 global-search 12 19.09 kB
🟣 loaders-lib 10 14.68 kB
🟣 geo-coordinator-lib 8 12.29 kB
🟣 host-app 13 6.79 kB
📁 Rest - 8.1 MB

Analyzes complete bundle composition, identifies architectural patterns, tracks package distribution, and reveals size contributors across all bundle artifacts.

⚙️ Configuration
  • Issues:

    • Info: 0 violations - Analysis only, no penalties
  • Table:

    • Groups: Detail listing of 🚫Blacklist, 🟣Design System Package, 🚫Theme Park Package, 🅰️Angular, 💳Payments Package
    • Rest: Other contributing modules

🅰️ Angular Ecosystem (Bundle Stats)

🟩 15.42 MB (501 files) (score: 100)
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
  • 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
  • Issues:

    • Error: 1+ candidates - Violation detected, requires action
    • Info: 0 candidates - No violations found
  • 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
  • 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🧩 models 📖 Project documentation improvements or additions to the project documentation 🔬 testing writing tests 🛠️ tooling 🧩 utils
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants