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 32 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

Config
import bundleStatsPlugin, { type GroupingRule } from './src';
import { BlacklistEntry } from './src/lib/runner/types';

const sharedHint =
  'Remove or conditionally load. Supported natively in modern browsers or replace with modern Angular architecture. See: https://blog.angular.io/zone-less-angular-explained-5fa951ce6f6e';

const blacklist: BlacklistEntry[] = [
  // 🧹 Remove or conditionally load. Supported natively in modern browsers or replace with modern Angular architecture.
  {
    pattern: '**/node_modules/core-js/**',
    hint: sharedHint,
  },
  {
    pattern: '**/node_modules/zone.js/**',
    hint: sharedHint,
  },
  {
    pattern: '**/node_modules/smoothscroll-polyfill/**',
    hint: sharedHint,
  },
  {
    pattern: '**/node_modules/web-animations-js/**',
    hint: sharedHint,
  },

  // 🔁 Replace with modern alternatives
  {
    pattern: '**/node_modules/lodash/**',
    hint: 'Replace with `lodash-es` and use selective imports like `import isEmpty from "lodash-es/isEmpty"`.',
  },
  {
    pattern: '**/node_modules/underscore/**',
    hint: 'Replace with `lodash-es` or native utilities like `Object.keys`, `Array.prototype.map`, etc.',
  },
  {
    pattern: '**/node_modules/decimal.js/**',
    hint: 'Replace with native `BigInt` if full decimal precision isn’t required.',
  },
  {
    pattern: '**/node_modules/angular2-toaster/**',
    hint: 'Replace with actively maintained alternatives like `ngx-toastr` or `ngneat/hot-toast`.',
  },

  // 🕒 Use lazy loading for heavy dependencies
  {
    pattern: '**/node_modules/socket.io-client/**',
    hint: 'Use lazy loading for real-time features. Replace with native WebSocket API or `ws` where possible.',
  },
  {
    pattern: '**/node_modules/launchdarkly-js-client-sdk/**',
    hint: 'Use lazy loading for feature flag SDKs to reduce initial bundle size.',
  },
  {
    pattern: '**/node_modules/@microsoft/**',
    hint: 'Use lazy loading for Microsoft SDKs due to their large size.',
  },
  {
    pattern: '**/node_modules/ngx-toastr/**',
    hint: 'Use lazy loading for notifications. Consider `ngneat/hot-toast` or `notiflix` as lighter alternatives.',
  },
  {
    pattern: '**/node_modules/ngx-scrollbar/**',
    hint: 'Use lazy loading for custom scrollbars. Replace with native CSS where possible.',
  },
  {
    pattern: '**/node_modules/@angular-slider/**',
    hint: 'Use lazy loading for sliders. Consider `ngx-slider-v2` or custom lightweight slider components.',
  },
  {
    pattern: '**/node_modules/howler/**',
    hint: 'Use lazy loading for audio libraries to reduce bundle size.',
  },
  {
    pattern: '**/node_modules/hls.js/**',
    hint: 'Use lazy loading for video streaming libraries like `hls.js`.',
  },
  {
    pattern: '**/node_modules/lottie-web/**',
    hint: 'Use lazy loading for animations. Consider `ngx-lottie` wrapper for Angular.',
  },
  {
    pattern: '**/node_modules/ngx-device-detector/**',
    hint: 'Use lazy loading for device detection logic or move detection server-side.',
  },
  {
    pattern: '**/node_modules/ua-parser-js/**',
    hint: 'Use lazy loading or replace with server-side detection if possible.',
  },

  // 🚫 Exclude from production builds
  {
    pattern: '**/node_modules/@storybook/**',
    hint: 'Exclude Storybook packages from production bundles.',
  },
  {
    pattern: '**/node_modules/jest/**',
    hint: 'Exclude test frameworks like Jest from production builds.',
  },
];

const nodeModulesGroup: GroupingRule[] = [
  // Angular packages (processed first)
  {
    patterns: [
      '**/node_modules/@angular/**', // Catches @angular/core, @angular/common, @angular/router, etc.
      '**/node_modules/@ng*/**', // Catches @ngrx/store, @ngrx/effects, etc.#
      '**/node_modules/@ngx-*/**',
      '**/node_modules/@angular-*/**', // Catches @angular-slider, @angular-devkit, etc.
      '**/node_modules/@*angular*/**', // Catches @rx-angular, @push-based-angular, etc.
    ],
    icon: '🅰️',
    numSegments: 3, // Shows @angular/router, @angular/common, @ngrx/store, etc.
  },
  // Non-scoped Angular packages (processed second)
  {
    patterns: [
      '**/node_modules/ngx-*/**',
      '**/node_modules/ng-*/**',
      '**/node_modules/*angular*/**', // Non-scoped packages containing "angular"
    ],
    icon: '🅰️',
    numSegments: 2, // Shows ngx-toastr, ng-bootstrap, etc.
  },
  // All scoped packages (processed third) - no title allows auto-derivation of individual package names
  {
    patterns: ['**/node_modules/@*/**'],
    icon: '📦',
    numSegments: 3, // Shows @rx-angular/state, @push-based/test-lib, @ngx-translate/core, etc.
  },
  // General node_modules group (processed last - catches everything else)
  {
    title: 'Node Modules',
    patterns: ['**/node_modules/**'],
    icon: '📦',
    numSegments: 1, // Shows individual unscoped packages
  },
];

const productGroups: GroupingRule[] = [
  {
    title: 'Payments Package',
    patterns: ['**/packages/payments/**'],
    icon: '💳',
  },
  { title: 'Casino Package', patterns: ['**/packages/casino/**'], icon: '🎰' },
  { title: 'Bingo Package', patterns: ['**/packages/bingo/**'], icon: '🎯' },
  { title: 'Sports Package', patterns: ['**/packages/sports/**'], icon: '⚽' },
  { title: 'Poker Package', patterns: ['**/packages/poker/**'], icon: '🃏' },
  {
    title: 'Lottery Package',
    patterns: ['**/packages/lottery/**'],
    icon: '🎲',
  },
  {
    title: 'Horse Racing Package',
    patterns: ['**/packages/horseracing/**'],
    icon: '🐎',
  },
  { title: 'Oxygen Package', patterns: ['**/packages/oxygen/**'], icon: '🫧' },
  {
    title: 'Engagement Package',
    patterns: ['**/packages/engagement/**'],
    icon: '🎯',
  },
  {
    title: 'My Account Package',
    patterns: ['**/packages/myaccount/**'],
    icon: '👤',
  },
  {
    title: 'Design System Package',
    patterns: ['**/packages/design-system/**'],
    icon: '🎨',
  },
  {
    title: 'Global Search Package',
    patterns: ['**/packages/global-search/**'],
    icon: '🔍',
  },
  { title: 'Gantry Package', patterns: ['**/packages/gantry/**'], icon: '🏗️' },
  {
    title: 'Vanilla Package',
    patterns: ['**/packages/vanilla/**'],
    icon: '🍦',
  },
  { title: 'Promo Package', patterns: ['**/packages/promo/**'], icon: '🎁' },
  {
    title: 'Moka Bingo Package',
    patterns: ['**/packages/mokabingo/**'],
    icon: '🎯',
  },
  {
    title: 'Host App Package',
    patterns: ['**/packages/host-app/**'],
    icon: '🏠',
  },
  {
    title: 'Theme Park Package',
    patterns: ['**/packages/themepark/**'],
    icon: '🎢',
  },
  {
    title: 'Rewards Hub Package',
    patterns: ['**/packages/rewards-hub/**'],
    icon: '🏆',
  },
  {
    title: 'Migration Kit Package',
    patterns: ['**/packages/migration-kit/**'],
    icon: '🔄',
  },
  {
    title: 'Loaders Lib Package',
    patterns: ['**/packages/loaders-lib/**'],
    icon: '📦',
  },
  {
    title: 'Geo Coordinator Lib Package',
    patterns: ['**/packages/geo-coordinator-lib/**'],
    icon: '🌍',
  },
  {
    title: 'Extractor App Package',
    patterns: ['**/packages/extractor-app/**'],
    icon: '📤',
  },
  {
    title: 'Gantry App Package',
    patterns: ['**/packages/gantry-app/**'],
    icon: '🏗️',
  },
  {
    title: 'Device Atlas Smoke Test Package',
    patterns: ['**/packages/device-atlas-smoke-test/**'],
    icon: '📱',
  },
  {
    title: 'Zendesk Webchat Feature Package',
    patterns: ['**/packages/zendesk-webchat-feature/**'],
    icon: '💬',
  },
  {
    title: 'Dev Kit Package',
    patterns: ['**/packages/dev-kit/**'],
    icon: '🛠️',
  },
];

const config = {
  plugins: [
    await bundleStatsPlugin({
      bundler: 'esbuild',
      artefactsPath:
        './packages/plugin-bundle-stats/mocks/fixtures/stats/angular-large.stats.json',
      selection: {
        excludeOutputs: ['**/*.map', '**/*.d.ts'], // Only exclude source maps as they're not part of runtime bundle
      },
      scoring: {
        penalty: {
          // Penalty for individual files that are too large
          // This highlights large files without hiding them
          artefactSize: [0, 3_000_000], // 0-3MB range - penalty for files > 3MB
          blacklist,
        },
      },
      insightsTable: [
        ...productGroups, // Process product groups first for better specificity
        ...nodeModulesGroup, // Process general node_modules groups last
      ],
      dependencyTree: {
        groups: [
          ...productGroups, // Process product groups first for better specificity
          ...nodeModulesGroup, // Process general node_modules groups last
        ],
        pruning: {
          maxChildren: 10,
          maxDepth: 3,
          minSize: 1_000, // Reduced from 50_000 to show smaller files (1KB threshold)
        },
      },
      audits: [
        {
          title: 'All Files',
          description: 'All files in the bundle',
          selection: {
            // Use specific includeOutputs instead of global include for better control
            includeOutputs: ['**/*'],
            // Exclude patterns to filter out unwanted files
            excludeOutputs: [
              '**/*.map', // Source maps
              '**/*.d.ts', // TypeScript declarations
            ],
          },
          scoring: {
            // Main bundle size threshold - warn when total exceeds 80MB
            totalSize: 80_000_000, // 80MB in bytes
          },
        },
        // Initial bundle size audit
        {
          title: 'Initial Bundle Size',
          description:
            'Initial bundle size audit for main and polyfills bundles as well as styles assets',
          selection: {
            includeOutputs: [
              '**/main-*.js',
              '**/polyfill-*.js',
              '**/styles-*.css',
            ],
          },
          scoring: {
            totalSize: 8_000_000,
          },
        },
      ],
    }),
  ],
};

export default config;

Code PushUp Report

🛡️ Audits

All Files (Bundle Stats)

🟥 109.6 MB (4797 files) (score: 0)
Group Modules Size
🫧 Oxygen Package 4723 26.97 MB
📦 @Jumio 56 19.91 MB
👤 My Account Package 2275 12.58 MB
⚽ Sports Package 3939 7.63 MB
💳 Payments Package 807 7.36 MB
📦 @incodetech 2 5.76 MB
📦 Node Modules 1047 4.04 MB
🃏 Poker Package 1951 3.48 MB
🎰 Casino Package 712 3.39 MB
🎁 Promo Package 707 2.52 MB
🍦 Vanilla Package 1340 1.83 MB
🅰️ @angular 116 1.27 MB
🎯 Bingo Package 208 871.86 kB
🎨 Design System Package 109 869.97 kB
📦 @pixi 41 430.08 kB
📦 @seontechnologies 1 395.39 kB
🏆 Rewards Hub Package 63 236.11 kB
🎢 Theme Park Package 49 185.82 kB
🎯 Engagement Package 46 130.41 kB
📦 @opentelemetry 134 76.15 kB
🅰️ ngx-daterangepicker-material 1 63.81 kB
🅰️ ngx-slider-v2 1 60.76 kB
📦 @module-federation 8 60.25 kB
🅰️ @angular-slider 31 59.41 kB
🎲 Lottery Package 40 54.01 kB
🐎 Horse Racing Package 38 53.71 kB
📦 @microsoft 25 49.95 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
📦 @img-arena 1 20.93 kB
🔍 Global Search Package 12 19.09 kB
📦 @floating-ui 4 18.92 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
📦 Loaders Lib Package 10 14.68 kB
🌍 Geo Coordinator Lib Package 8 12.29 kB
🅰️ @ngx-translate 1 10.77 kB
📦 @rtms 1 9.44 kB
🏠 Host App Package 13 6.79 kB
🅰️ ng-dynamic-component 1 6.04 kB
🅰️ ng-in-viewport 1 6 kB
🅰️ ng-lazyload-image 1 5.93 kB
📦 @push-based 1 5.66 kB
📦 @cloudflare 1 5.12 kB
🅰️ angularx-qrcode 1 4.84 kB
🅰️ ngx-lottie 1 4.72 kB
📦 @emotion 2 4.19 kB
📦 @swimlane 1 2.72 kB
📦 @babel 5 1022 B
📄 Rest - 8.87 MB

all-files

🗂️ all-files                                                                 109.6 MB  18693  11                          
├── 📄 chunk-HT4LBL5J.js                                                                             5.96 MB     14 modules
│   ├── 📦 @incodetech/welcome                                                                       5.76 MB               
│   │   └── 📄 node_modules/@incodetech/welcome/dist/onBoarding.mjs                                  5.76 MB               
│   ├── 📦 Node Modules                                                                            138.37 kB      6 modules
│   │   ├── 📄 node_modules/react-dom/cjs/react-dom.production.min.js                              127.64 kB               
│   │   ├── 📄 node_modules/react/cjs/react.production.min.js                                        6.48 kB               
│   │   ├── 📄 node_modules/scheduler/cjs/scheduler.production.min.js                                 3.9 kB               
│   │   └── 📁 ...                                                                                     358 B      3 modules
│   ├── 👤 My Account Package                                                                       60.36 kB      5 modules
│   │   ├── 📄 packages/myaccount/app/src/p.../progress-pills.component.ts                          53.19 kB               
│   │   ├── 📄 packages/myaccount/app/src/r...ation/id-validation.model.ts                           3.95 kB               
│   │   ├── 📄 packages/myaccount/app/src/c...t-selfie-upload.component.ts                           1.94 kB               
│   │   └── 📁 ...                                                                                   1.28 kB      2 modules
│   ├── 📦 @emotion/is-prop-valid                                                                    4.09 kB               
│   │   └── 📄 node_modules/@emotion/is-pro...is-prop-valid.browser.esm.js                           4.09 kB               
│   └── 📁 ...                                                                                         111 B               
├── 📍 chunk-ZXE2JVGH.js                                                                             5.49 MB               
│   └── 📦 @jumio/websdk                                                                             5.49 MB               
│       └── 📄 node_modules/@jumio/websdk/dac_simd.C6bfdWfM.js                                       5.49 MB               
├── 📍 chunk-B3OUX6PL.js                                                                             4.77 MB               
│   └── 📦 @jumio/websdk                                                                             4.77 MB               
│       └── 📄 node_modules/@jumio/websdk/dac.qT7PEl8J.js                                            4.77 MB               
├── 📄 chunk-Y3HMZ5KM.js                                                                             3.31 MB   1326 modules
│   ├── 🃏 Poker Package                                                                             1.99 MB   1222 modules
│   │   ├── 📄 packages/poker/core-lib/poke...ctory/PokerMessageFactory.ts                         266.55 kB               
│   │   ├── 📄 packages/poker/core-lib/poke.../PokerLobbyMessageFactory.ts                         135.58 kB               
│   │   ├── 📄 packages/poker/core-lib/poke...Factory/ARAMessageFactory.ts                          56.04 kB               
│   │   ├── 📄 packages/poker/core-lib/poke.../app/poker-game-container.ts                          53.84 kB               
│   │   ├── 📄 packages/poker/core-lib/poke...ib/views/ControlPanelView.ts                          37.94 kB               
│   │   ├── 📄 packages/poker/core-lib/poke...able-notification.service.ts                          35.41 kB               
│   │   ├── 📄 packages/poker/core-lib/poke...iews/IndividualPlayerView.ts                          34.48 kB               
│   │   ├── 📄 packages/poker/core-lib/poke...lib/lib/vms/CoreViewModel.ts                           30.2 kB               
│   │   ├── 📄 packages/poker/core-lib/poke...ib/lib/views/WinTableView.ts                          27.48 kB               
│   │   ├── 📄 packages/poker/core-lib/poke...es-lib/lib/app/app-facade.ts                          26.89 kB               
│   │   └── 📁 ...                                                                                    1.3 MB   1212 modules
│   ├── 📦 Node Modules                                                                            905.91 kB     61 modules
│   │   ├── 📄 node_modules/moment-timezone/data/packed/latest.json                                 707.6 kB               
│   │   ├── 📄 node_modules/gsap/gsap-core.js                                                       50.28 kB               
│   │   ├── 📄 node_modules/howler/dist/howler.js                                                   35.33 kB               
│   │   ├── 📄 node_modules/gsap/CSSPlugin.js                                                       18.17 kB               
│   │   ├── 📄 node_modules/pixi-multistyle...st/pixi-multistyle-text.m.js                          12.85 kB               
│   │   ├── 📄 node_modules/object-inspect/index.js                                                  9.03 kB               
│   │   ├── 📄 node_modules/get-intrinsic/index.js                                                    8.1 kB               
│   │   ├── 📄 node_modules/moment-timezone/moment-timezone.js                                       7.68 kB               
│   │   ├── 📄 node_modules/url/url.js                                                               7.51 kB               
│   │   ├── 📄 node_modules/fontfaceobserve...dist/fontfaceobserver.umd.js                           6.64 kB               
│   │   └── 📁 ...                                                                                  42.71 kB     51 modules
│   ├── 📦 @pixi/core                                                                              136.24 kB               
│   │   └── 📄 node_modules/@pixi/core/dist/esm/core.mjs                                           136.24 kB               
│   ├── 📦 @pixi/graphics                                                                           28.26 kB               
│   │   └── 📄 node_modules/@pixi/graphics/dist/esm/graphics.mjs                                    28.26 kB               
│   ├── 📦 @pixi/compressed-textures                                                                23.73 kB               
│   │   └── 📄 node_modules/@pixi/compresse.../esm/compressed-textures.mjs                          23.73 kB               
│   ├── 📦 @pixi/loaders                                                                            22.67 kB               
│   │   └── 📄 node_modules/@pixi/loaders/dist/esm/loaders.mjs                                      22.67 kB               
│   ├── 🅰️ @angular/material                                                                       21.55 kB               
│   │   └── 📄 node_modules/@angular/material/fesm2022/button-toggle.mjs                            21.55 kB               
│   ├── 📦 @pixi/interaction                                                                        20.98 kB               
│   │   └── 📄 node_modules/@pixi/interaction/dist/esm/interaction.mjs                              20.98 kB               
│   ├── 📦 @pixi/text-bitmap                                                                         20.6 kB               
│   │   └── 📄 node_modules/@pixi/text-bitmap/dist/esm/text-bitmap.mjs                               20.6 kB               
│   ├── 📦 @pixi/text                                                                               18.67 kB               
│   │   └── 📄 node_modules/@pixi/text/dist/esm/text.mjs                                            18.67 kB               
│   └── 📁 ...                                                                                     158.96 kB     35 modules
├── 📍 chunk-2DMRTCLA.js                                                                             2.87 MB   1246 modules
│   ├── ⚽ Sports Package                                                                             2.58 MB   1218 modules
│   │   ├── 📄 packages/sports/web/libs/pla...gital/pick-odds.component.ts                          66.58 kB               
│   │   ├── 📄 packages/sports/web/libs/pla...odds-boost-card.component.ts                          46.21 kB               
│   │   ├── 📄 packages/sports/web/libs/pla.../betandget-card.component.ts                          39.59 kB               
│   │   ├── 📄 packages/sports/web/libs/pla...et/freebet-card.component.ts                          39.44 kB               
│   │   ├── 📄 packages/sports/web/libs/pla.../risk-free-card.component.ts                          39.25 kB               
│   │   ├── 📄 packages/sports/web/libs/pla...acca-boost-card.component.ts                          36.84 kB               
│   │   ├── 📄 packages/sports/web/libs/pla...-footer-details.component.ts                          36.53 kB               
│   │   ├── 📄 packages/sports/web/libs/pla...ick-info-column.component.ts                          35.98 kB               
│   │   ├── 📄 packages/sports/web/libs/pla...-succeeded-pick.component.ts                          35.56 kB               
│   │   ├── 📄 packages/sports/web/libs/pla...kens-onboarding.component.ts                          29.88 kB               
│   │   └── 📁 ...                                                                                   2.19 MB   1208 modules
│   ├── 💳 Payments Package                                                                        256.02 kB     27 modules
│   │   ├── 📄 packages/payments/betslipqd-...lipqd/betslipqd.component.ts                         115.04 kB               
│   │   ├── 📄 packages/payments/betslipqd-...st/options-list.component.ts                          27.82 kB               
│   │   ├── 📄 packages/payments/betslipqd-...deposit-success.component.ts                          21.44 kB               
│   │   ├── 📄 packages/payments/betslipqd-...tional-messages.component.ts                          11.88 kB               
│   │   ├── 📄 packages/payments/betslipqd-...rid/amount-grid.component.ts                          10.54 kB               
│   │   ├── 📄 packages/payments/betslipqd-...gvc/gvc-betslip.component.ts                           10.1 kB               
│   │   ├── 📄 packages/payments/betslipqd-...lcg/lcg-betslip.component.ts                           9.41 kB               
│   │   ├── 📄 packages/payments/betslipqd-...-input/cc-input.component.ts                           7.92 kB               
│   │   ├── 📄 packages/payments/betslipqd-...uick-deposit/qd.component.ts                           6.87 kB               
│   │   ├── 📄 packages/payments/betslipqd-...-limit-messages.component.ts                            5.1 kB               
│   │   └── 📁 ...                                                                                  29.91 kB     17 modules
│   └── 📦 Node Modules                                                                              18.8 kB               
│       └── 📄 node_modules/js-sha512/src/sha512.js                                                  18.8 kB               
├── 📍 chunk-S42IF5MD.js                                                                             1.63 MB               
│   └── 📦 @jumio/websdk                                                                             1.63 MB               
│       └── 📄 node_modules/@jumio/websdk/assets_da_1_1_5.tar.ANYSPtwf.js                            1.63 MB               
├── 📄 chunk-VF5G2KKZ.js                                                                             1.62 MB               
│   └── 📦 @jumio/websdk                                                                             1.62 MB               
│       └── 📄 node_modules/@jumio/websdk/index.Bua1o1Ys.js                                          1.62 MB               
├── 📍 chunk-EIQWTHRX.js                                                                             1.31 MB               
│   └── 📦 @jumio/websdk                                                                             1.31 MB               
│       └── 📄 node_modules/@jumio/websdk/pdfjs/pdf.worker.min-D0t7fbDu.js                           1.31 MB               
├── 📍 chunk-XPOOHRVC.js                                                                              1.2 MB    185 modules
│   └── 👤 My Account Package                                                                        1.19 MB    185 modules
│       ├── 📄 packages/myaccount/app/src/r...on/registration.component.ts                         274.39 kB               
│       ├── 📄 packages/myaccount/app/src/r...s/mobile-layout.component.ts                          96.83 kB               
│       ├── 📄 packages/myaccount/app/src/r...s/mobile-number.component.ts                          42.65 kB               
│       ├── 📄 packages/myaccount/app/src/r.../address-finder.component.ts                          36.82 kB               
│       ├── 📄 packages/myaccount/app/src/r...n/document-scan.component.ts                          29.47 kB               
│       ├── 📄 packages/myaccount/app/src/r...omponents/email.component.ts                          28.82 kB               
│       ├── 📄 packages/myaccount/app/src/r...onents/password.component.ts                          24.96 kB               
│       ├── 📄 packages/myaccount/app/src/r...bile-otp-verify.component.ts                          24.32 kB               
│       ├── 📄 packages/myaccount/app/src/r...-address-finder.component.ts                           23.4 kB               
│       ├── 📄 packages/myaccount/app/src/r...omotions-switch.component.ts                          22.68 kB               
│       └── 📁 ...                                                                                 617.34 kB    175 modules
├── 📄 chunk-HV7YKUNQ.js                                                                             1.13 MB    362 modules
│   ├── 🫧 Oxygen Package                                                                            1.12 MB    353 modules
│   │   ├── 📄 packages/oxygen/core-lib/src...odds-card-sport.component.ts                          33.01 kB               
│   │   ├── 📄 packages/oxygen/core-lib/src...promotions-list.component.ts                          32.08 kB               
│   │   ├── 📄 packages/oxygen/core-lib/src...s/betslip/betslip.service.ts                          31.14 kB               
│   │   ├── 📄 packages/oxygen/core-lib/src.../promotion-icon.component.ts                          23.06 kB               
│   │   ├── 📄 packages/oxygen/core-lib/src/betslip/services/bet/bet.ts                             22.94 kB               
│   │   ├── 📄 packages/oxygen/core-lib/src.../digit-keyboard.component.ts                          20.44 kB               
│   │   ├── 📄 packages/oxygen/core-lib/src...erver/site-server.service.ts                          20.11 kB               
│   │   ├── 📄 packages/oxygen/core-lib/src...tooltip/tooltip.component.ts                          19.43 kB               
│   │   ├── 📄 packages/oxygen/core-lib/src.../overAsk/over-ask.service.ts                          19.42 kB               
│   │   ├── 📄 packages/oxygen/core-lib/src...nSA/accordionSA.component.ts                          18.96 kB               
│   │   └── 📁 ...                                                                                  904.7 kB    343 modules
│   └── 🍦 Vanilla Package                                                                           9.26 kB      9 modules
│       ├── 📄 packages/vanilla/lib/shared/...rc/virtual-view.directive.ts                           4.38 kB               
│       ├── 📄 packages/vanilla/lib/shared/...l-view-observer.directive.ts                            1.4 kB               
│       ├── 📄 packages/vanilla/lib/shared/...ew/src/virtual-view-cache.ts                           1.12 kB               
│       └── 📁 ...                                                                                   2.36 kB      6 modules
└── 📁 ...                                                                                           80.3 MB  15555 modules

Issues

Severity Message Source file Line(s)
🚨 error 🔺 chunk-2DMRTCLA.js is 2.87 MB (> 2.86 MB) chunk-2DMRTCLA.js
🚨 error 🚫 Blacklisted modules matching **/node_modules/core-js/** included in file - Remove or conditionally load. Supported natively in modern browsers or replace with modern Angular architecture. See: https://blog.angular.io/zone-less-angular-explained-5fa951ce6f6e chunk-2SV3UOQR.js
🚨 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 🚫 node_modules/underscore/underscore.js matches blacklist pattern **/node_modules/underscore/** - Replace with lodash-es or native utilities like Object.keys, Array.prototype.map, etc. chunk-4DVMSCGT.js
🚨 error 🚫 Blacklisted modules matching **/node_modules/socket.io-client/** included in file - Use lazy loading for real-time features. Replace with native WebSocket API or ws where possible. 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 device detection logic or move detection server-side. chunk-AJ2NKFMZ.js
🚨 error 🚫 node_modules/decimal.js/decimal.mjs matches blacklist pattern **/node_modules/decimal.js/** - Replace with native BigInt if full decimal precision isn’t required. chunk-ARS3B3TF.js
🚨 error 🔺 chunk-B3OUX6PL.js is 4.77 MB (> 2.86 MB) chunk-B3OUX6PL.js
🚨 error 🚫 node_modules/ua-parser-js/src/ua-parser.js matches blacklist pattern **/node_modules/ua-parser-js/** - Use lazy loading or replace with server-side detection if possible. chunk-FLWXSBRD.js
🚨 error 🚫 Blacklisted modules matching **/node_modules/@angular-slider/** included in file - Use lazy loading for sliders. Consider ngx-slider-v2 or custom lightweight slider components. chunk-GBQV5BLB.js
🚨 error 🔺 chunk-HT4LBL5J.js is 5.96 MB (> 2.86 MB) chunk-HT4LBL5J.js
🚨 error 🚫 Blacklisted modules matching **/node_modules/ngx-scrollbar/** included in file - Use lazy loading for custom scrollbars. Replace with native CSS where possible. chunk-IGE4HHZ4.js
🚨 error 🚫 node_modules/lottie-web/build/player/lottie.js matches blacklist pattern **/node_modules/lottie-web/** - Use lazy loading for animations. Consider ngx-lottie wrapper for Angular. chunk-LJGDTI7D.js
🚨 error 🚫 node_modules/lottie-web/build/player/lottie.js matches blacklist pattern **/node_modules/lottie-web/** - Use lazy loading for animations. Consider ngx-lottie wrapper for Angular. 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 feature flag SDKs to reduce initial bundle size. chunk-U6V7KC5B.js
🚨 error 🚫 Blacklisted modules matching **/node_modules/@microsoft/** included in file - Use lazy loading for Microsoft SDKs due to their large size. chunk-WWRMO4DV.js
🚨 error 🚫 node_modules/ngx-toastr/fesm2022/ngx-toastr.mjs matches blacklist pattern **/node_modules/ngx-toastr/** - Use lazy loading for notifications. Consider ngneat/hot-toast or notiflix as lighter alternatives. chunk-XMJGD64P.js
🚨 error 🔺 chunk-Y3HMZ5KM.js is 3.31 MB (> 2.86 MB) chunk-Y3HMZ5KM.js
🚨 error 🚫 node_modules/howler/dist/howler.js matches blacklist pattern **/node_modules/howler/** - Use lazy loading for audio libraries to reduce bundle size. chunk-Y3HMZ5KM.js
🚨 error 🔺 chunk-ZXE2JVGH.js is 5.49 MB (> 2.86 MB) chunk-ZXE2JVGH.js
🚨 error 🚫 node_modules/zone.js/fesm2015/zone.js matches blacklist pattern **/node_modules/zone.js/** - Remove or conditionally load. Supported natively in modern browsers or replace with modern Angular architecture. See: https://blog.angular.io/zone-less-angular-explained-5fa951ce6f6e polyfills-ZFIXSWIH.js

All files in the bundle

⚙️ Config Summary

Selection
includeOutputs: **/*
excludeOutputs: **/*.map, **/*.d.ts

Scoring
totalSize: 0 B – 76.29 MB

Initial Bundle Size (Bundle Stats)

🟨 1.4 MB (77 files) (score: 60)
Group Modules Size
🅰️ @angular 61 550.29 kB
🍦 Vanilla Package 323 310.84 kB
🎢 Theme Park Package 48 185.31 kB
📦 Node Modules 533 116.58 kB
🎨 Design System Package 7 49.4 kB
🅰️ ngx-scrollbar 2 49.15 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 Package 10 14.68 kB
🅰️ @ngx-translate 1 10.77 kB
📦 @rtms 1 9.44 kB
💳 Payments Package 14 7.93 kB
⚽ Sports Package 40 6.83 kB
🏠 Host App Package 11 6.57 kB
📦 @push-based 1 5.66 kB
🅰️ ngx-lottie 1 4.72 kB
🅰️ @rx-angular 3 1.64 kB
🫧 Oxygen Package 3 811 B
🎰 Casino Package 1 129 B
📄 Rest - 25.82 kB

initial-bundle-size

🗂️ initial-bundle-size                                                        1.4 MB  1068  11                        
├── 📄 chunk-XMJGD64P.js                                                                         594.28 kB  706 modules
│   ├── 🍦 Vanilla Package                                                                       300.55 kB  312 modules
│   │   ├── 📄 packages/vanilla/lib/core/sr...button-behavior.component.ts                        40.79 kB             
│   │   ├── 📄 packages/vanilla/lib/core/sr...gation/navigation.service.ts                         8.53 kB             
│   │   ├── 📄 packages/vanilla/lib/core/sr...-response-handler.service.ts                         5.23 kB             
│   │   ├── 📄 packages/vanilla/lib/core/sr...fig/client-config.service.ts                         4.12 kB             
│   │   ├── 📄 packages/vanilla/lib/core/src/user/user-core.service.ts                             3.85 kB             
│   │   ├── 📄 packages/vanilla/lib/core/sr.../user-dsl-values-provider.ts                         3.78 kB             
│   │   ├── 📄 packages/vanilla/lib/core/src/toastr/toastr-queue.service.ts                        3.57 kB             
│   │   ├── 📄 packages/vanilla/lib/core/sr...ve-app/native-app.service.ts                         3.34 kB             
│   │   ├── 📄 packages/vanilla/lib/core/sr...ser/device/device.service.ts                         3.16 kB             
│   │   ├── 📄 packages/vanilla/lib/core/src/http/api-base.service.ts                              3.15 kB             
│   │   └── 📁 ...                                                                               221.02 kB  302 modules
│   ├── 🅰️ @angular/router                                                                       75.64 kB    3 modules
│   │   ├── 📄 node_modules/@angular/router/fesm2022/router-B-Y85L0c.mjs                           64.4 kB             
│   │   ├── 📄 node_modules/@angular/router...2/router_module-CbmfhtZA.mjs                        11.17 kB             
│   │   └── 📁 ...                                                                                    64 B             
│   ├── 📦 Node Modules                                                                           50.35 kB  365 modules
│   │   ├── 📄 node_modules/lodash-es/_deburrLetter.js                                             2.08 kB             
│   │   ├── 📄 node_modules/lodash-es/_baseClone.js                                                1.42 kB             
│   │   ├── 📄 node_modules/lodash-es/template.js                                                  1.38 kB             
│   │   ├── 📄 node_modules/lodash-es/_unicodeWords.js                                             1.29 kB             
│   │   └── 📁 ...                                                                                44.19 kB  361 modules
│   ├── 🎨 Design System Package                                                                   49.4 kB    7 modules
│   │   ├── 📄 packages/design-system/ui/button/src/button.component.ts                           41.76 kB             
│   │   ├── 📄 packages/design-system/ui/lo...loading-spinner.component.ts                         4.56 kB             
│   │   ├── 📄 packages/design-system/ui/shared/src/button-base.ts                                 1.26 kB             
│   │   ├── 📄 packages/design-system/ui/sh...src/touch-click.directive.ts                         1.14 kB             
│   │   └── 📁 ...                                                                                   691 B    3 modules
│   ├── 🅰️ @angular/common                                                                          22 kB    2 modules
│   │   ├── 📄 node_modules/@angular/common/fesm2022/module-BHk9jdTn.mjs                           20.5 kB             
│   │   └── 📄 node_modules/@angular/common/fesm2022/http.mjs                                      1.51 kB             
│   ├── 🅰️ ngx-toastr                                                                            18.79 kB             
│   │   └── 📄 node_modules/ngx-toastr/fesm2022/ngx-toastr.mjs                                    18.79 kB             
│   ├── 🅰️ @angular/platform-browser                                                             17.32 kB    3 modules
│   │   ├── 📄 node_modules/@angular/platfo...22/dom_renderer-DGKzginR.mjs                         7.77 kB             
│   │   ├── 📄 node_modules/@angular/platfo...esm2022/platform-browser.mjs                         5.16 kB             
│   │   └── 📄 node_modules/@angular/platfo...esm2022/browser-X3l5Bmdq.mjs                         4.39 kB             
│   ├── 🅰️ ngx-float-ui                                                                          14.83 kB             
│   │   └── 📄 node_modules/ngx-float-ui/fesm2022/ngx-float-ui.mjs                                14.83 kB             
│   ├── 📦 @rtms/client                                                                            9.44 kB             
│   │   └── 📄 node_modules/@rtms/client/fesm2015/rtms-client.js                                   9.44 kB             
│   ├── 📦 @floating-ui/core                                                                       8.09 kB             
│   │   └── 📄 node_modules/@floating-ui/core/dist/floating-ui.core.mjs                            8.09 kB             
│   └── 📁 ...                                                                                    22.15 kB   10 modules
├── 📄 chunk-FWSPTPCX.js                                                                         239.75 kB  171 modules
│   ├── 🅰️ @angular/core                                                                         190.5 kB    4 modules
│   │   ├── 📄 node_modules/@angular/core/fesm2022/core.mjs                                      174.63 kB             
│   │   ├── 📄 node_modules/@angular/core/f...rimitives/event-dispatch.mjs                        10.78 kB             
│   │   ├── 📄 node_modules/@angular/core/fesm2022/untracked-BKcld_ew.mjs                             5 kB             
│   │   └── 📁 ...                                                                                    95 B             
│   └── 📦 Node Modules                                                                           46.26 kB  167 modules
│       ├── 📄 node_modules/tslib/tslib.es6.mjs                                                   11.07 kB             
│       ├── 📄 node_modules/rxjs/dist/esm/internal/Subject.js                                      1.93 kB             
│       ├── 📄 node_modules/rxjs/dist/esm/internal/Subscriber.js                                   1.53 kB             
│       ├── 📄 node_modules/rxjs/dist/esm/internal/Subscription.js                                 1.26 kB             
│       ├── 📄 node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js                         1.1 kB             
│       ├── 📄 node_modules/rxjs/dist/esm/internal/observable/innerFrom.js                         1.02 kB             
│       └── 📁 ...                                                                                28.35 kB  161 modules
├── 📄 chunk-JCE5E6ZQ.js                                                                         117.05 kB   35 modules
│   ├── 🅰️ @angular/cdk                                                                          98.28 kB   33 modules
│   │   ├── 📄 node_modules/@angular/cdk/fe.../overlay-module-d3a6e2de.mjs                        40.47 kB             
│   │   ├── 📄 node_modules/@angular/cdk/fesm2022/a11y-module-3d786847.mjs                        10.58 kB             
│   │   ├── 📄 node_modules/@angular/cdk/fesm2022/dialog.mjs                                      10.14 kB             
│   │   ├── 📄 node_modules/@angular/cdk/fe...2/focus-monitor-9a0037cb.mjs                         6.89 kB             
│   │   ├── 📄 node_modules/@angular/cdk/fe...rtal-directives-7cf40471.mjs                          5.3 kB             
│   │   ├── 📄 node_modules/@angular/cdk/fe...crolling-module-7799f57e.mjs                         5.17 kB             
│   │   ├── 📄 node_modules/@angular/cdk/fe...ist-key-manager-0ce9d5be.mjs                         4.24 kB             
│   │   ├── 📄 node_modules/@angular/cdk/fesm2022/a11y.mjs                                         3.33 kB             
│   │   ├── 📄 node_modules/@angular/cdk/fe...observe-content-0b289083.mjs                         2.81 kB             
│   │   ├── 📄 node_modules/@angular/cdk/fe...points-observer-f26c2a25.mjs                         1.83 kB             
│   │   └── 📁 ...                                                                                 7.53 kB   23 modules
│   └── 🅰️ @angular/material                                                                      17.4 kB    2 modules
│       ├── 📄 node_modules/@angular/material/fesm2022/module-42c8c966.mjs                         17.2 kB             
│       └── 📁 ...                                                                                   205 B             
├── 📄 chunk-A7WNARMW.js                                                                          66.31 kB    3 modules
│   └── 🅰️ @angular/animations                                                                    65.9 kB    3 modules
│       ├── 📄 node_modules/@angular/animations/fesm2022/browser.mjs                              52.59 kB             
│       ├── 📄 node_modules/@angular/animations/fesm2022/util-DN3Vao_r.mjs                         9.06 kB             
│       └── 📄 node_modules/@angular/animat.../private_export-CacKMzxJ.mjs                         4.25 kB             
├── 📄 chunk-MTPOUXPC.js                                                                          56.92 kB    6 modules
│   └── 🅰️ @angular/common                                                                       55.67 kB    6 modules
│       ├── 📄 node_modules/@angular/common...2/common_module-CBrzkrmd.mjs                         42.3 kB             
│       ├── 📄 node_modules/@angular/common/fesm2022/common.mjs                                    7.72 kB             
│       ├── 📄 node_modules/@angular/common/fesm2022/location-DpBxd_aX.mjs                         5.19 kB             
│       └── 📁 ...                                                                                   475 B    3 modules
├── 📄 chunk-IGE4HHZ4.js                                                                          49.99 kB    2 modules
│   └── 🅰️ ngx-scrollbar                                                                         49.15 kB    2 modules
│       ├── 📄 node_modules/ngx-scrollbar/fesm2022/ngx-scrollbar.mjs                              45.53 kB             
│       └── 📄 node_modules/ngx-scrollbar/f...-scrollbar-smooth-scroll.mjs                         3.62 kB             
├── 📍 main-BDM3RIPG.js                                                                           27.13 kB   56 modules
│   ├── 📦 Loaders Lib Package                                                                    13.46 kB    8 modules
│   │   ├── 📄 packages/loaders-lib/src/loaders-map.ts                                             5.49 kB             
│   │   ├── 📄 packages/loaders-lib/src/loader.service.ts                                          4.57 kB             
│   │   ├── 📄 packages/loaders-lib/src/loader-styles.service.ts                                    1.2 kB             
│   │   ├── 📄 packages/loaders-lib/src/module.service.ts                                          1.16 kB             
│   │   └── 📁 ...                                                                                 1.04 kB    4 modules
│   ├── 🏠 Host App Package                                                                        6.57 kB   11 modules
│   │   ├── 📄 packages/host-app/src/app.routes.ts                                                  3.5 kB             
│   │   └── 📁 ...                                                                                 3.07 kB   10 modules
│   ├── ⚽ Sports Package                                                                           3.79 kB   33 modules
│   │   └── 📁 ...                                                                                 3.79 kB   33 modules
│   ├── 💳 Payments Package                                                                        1.14 kB    2 modules
│   │   ├── 📄 packages/payments/cashier-ap...s-page-view-data-provider.ts                            1 kB             
│   │   └── 📁 ...                                                                                   140 B             
│   └── 📁 ...                                                                                       416 B    2 modules
├── 📄 styles-RH2YPOUA.css                                                                        23.54 kB             
│   └── 🎢 Theme Park Package                                                                     23.47 kB             
│       └── 📄 packages/themepark/themes/wh...nts/product-menu/styles.scss                        23.47 kB             
├── 📄 chunk-V5NKDI5C.js                                                                          20.06 kB             
│   └── 📦 Node Modules                                                                           19.97 kB             
│       └── 📄 node_modules/hammerjs/hammer.js                                                    19.97 kB             
├── 📄 chunk-ROQZT5LZ.js                                                                          14.84 kB             
│   └── 🅰️ @ngrx/store                                                                           14.31 kB             
│       └── 📄 node_modules/@ngrx/store/fesm2022/ngrx-store.mjs                                   14.31 kB             
└── 📁 ...                                                                                       218.61 kB   86 modules

Issues

Severity Message Source file Line(s)
🚨 error 🚫 Blacklisted modules matching **/node_modules/ngx-scrollbar/** included in file - Use lazy loading for custom scrollbars. Replace with native CSS where possible. chunk-IGE4HHZ4.js
🚨 error 🚫 node_modules/ngx-toastr/fesm2022/ngx-toastr.mjs matches blacklist pattern **/node_modules/ngx-toastr/** - Use lazy loading for notifications. Consider ngneat/hot-toast or notiflix as lighter alternatives. chunk-XMJGD64P.js

Initial bundle size audit for main and polyfills bundles as well as styles assets

⚙️ Config Summary

Selection
includeOutputs: **/main-*.js, **/polyfill-*.js, **/styles-*.css

Scoring
totalSize: 0 B – 7.63 MB

About

Report was created by Code PushUp on Wed, Jul 23, 2025, 8:34 PM GMT+2.

Plugin Audits Version Duration
Bundle Stats 2 0.69.2 9.84 s
Commit Version Duration Plugins Categories Audits
Merge branch 'main' into plugin-bundle-stats-poc (581911f) 0.69.5 9.89 s 1 0 2

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