When the bundle weighs 2+ MB and LCP is 4 seconds
A JavaScript bundle sized 2+ MB directly hits Core Web Vitals: LCP degrades to 4 seconds, INP suffers, and conversion drops by 15-25%. The root cause: duplicated dependencies, unused polyfills, and oversized libraries like moment.js (290 KB) or @mui/icons-material (150 KB just for importing a single icon). Instead of guessing what bloats your build, use precise tools.
We configure webpack-bundle-analyzer and source-map-explorer for your project. You get an interactive dependency map and a table of source files. Then a concrete plan: library replacement, tree-shaking setup, dynamic imports. In 2-4 hours we identify 5-10 problems and reduce the bundle by 30-50%.
Tool Comparison
| Feature | webpack-bundle-analyzer | source-map-explorer |
|---|---|---|
| Bundler support | Webpack, CRA, Next.js | Any (source maps) |
| Visualization | Interactive treemap | Tabular representation |
| Depth of analysis | Shows modules and sizes | Shows source files |
| Integration | Plugin in config | Run after build |
Example source-map-explorer report
$ npx source-map-explorer dist/assets/*.js Module Size main.js 1.2 MB vendor.js 900 KB ... How to choose a tool?
If the project uses Webpack or Next.js — go with webpack-bundle-analyzer for a visual map. For other bundlers (Vite, Rollup, Parcel) — source-map-explorer is universal. We often use both: first a broad analysis via source-map-explorer, then a deep dive with webpack-bundle-analyzer. In 90% of projects one of them suffices.
Step-by-step setup
Installing webpack-bundle-analyzer
npm install --save-dev webpack-bundle-analyzer For Next.js via @next/bundle-analyzer:
// next.config.js const withBundleAnalyzer = require('@next/bundle-analyzer')({ enabled: process.env.ANALYZE === 'true' }) module.exports = withBundleAnalyzer({ /* config */ }) Run: ANALYZE=true next build.
Installing source-map-explorer
npm install --save-dev source-map-explorer Build with source maps and analyze:
vite build -- --sourcemap npx source-map-explorer dist/assets/*.js What to look for in the report
| Problem type | Example | Solution |
|---|---|---|
| Duplicate dependencies | Two versions of React | Configure resolve.alias |
| Unused polyfills | Whole core-js | Import only needed ones |
| Huge icon sets | @mui/icons-material | Import specific icons |
| Heavy libraries | moment.js (290 KB) | Replace with date-fns (13 KB) — 22× smaller |
Why set up a bundle analyzer now?
Every extra kilobyte in the bundle harms Core Web Vitals. According to HTTP Archive, the median JavaScript size on desktop is 500 KB, on mobile — 400 KB. Exceeding that threshold leads to conversion loss. Our service, with over 5 years of experience and 100+ projects analyzed, guarantees to spot major "fat" dependencies within 2-4 hours. Typical results: bundle size drops from 2.5 MB to 1.5 MB (40% reduction), TTI falls from 5s to 2.5s, LCP from 3s to 1.8s. Conversion climbs by 15-25%. Average monthly savings on traffic and hosting reach up to $300 for a moderately visited project. Our bundle analysis starts at $199 and typically saves $300-500 per month in traffic costs.
What's included in the work
- Installation and configuration of chosen analyzers (webpack-bundle-analyzer, source-map-explorer, or both).
- Generation of an interactive report with dependency visualization.
- Detailed written analysis identifying heavy modules, duplicates, and dead code.
- Optimization recommendations with estimated size reduction.
- Implementation of agreed changes (tree-shaking, dynamic imports, library swaps).
- Final metrics measurement (LCP, TTI, bundle size) and comparison with baseline.
- Documentation and access to the report.
- Training your team to use the analyzers for self-service monitoring.
Work process
- Initial audit — collect metrics and current bundle size.
- Setup analyzers — install and configure tools.
- Generate report — interactive map or table.
- Identify problems — find duplicates, dead code, heavy libraries.
- Recommendations — specific steps with expected impact.
- Implement optimizations — tree-shaking, dynamic imports, library replacement.
- Final measurement — compare metrics before and after.
Timeline: from 2 hours for a basic analysis to 1-2 days for a full project survey. Pricing is tailored individually. Average traffic savings after optimization — up to 30% (≈ $500/month for a project with 10k visitors).
Pro tips
- Use libraries with ES modules (date-fns is 22x smaller than moment.js, lodash-es enables tree-shaking) for efficient tree-shaking.
- Add automated checks in CI — for example,
bundlesizeorwebpack-bundle-analyzerin pipeline. - Regularly review dependencies — many projects keep outdated libraries for years.
Order a bundle analysis now — get a ready report with an optimization plan within a day. We'll evaluate your project in 1 day: contact us for a consultation.
For more info: see the official repository on GitHub and the Next.js documentation.







