DEV Community

Filip Sobol
Filip Sobol

Posted on

Visualizing JavaScript and CSS Bundles with Sonda

In this article, I'll show what Sonda is and what it can do. If you want to give it a try, check out https://sonda.dev/ or the demo page.

If you've ever struggled with optimizing your JavaScript and CSS bundles, you're not alone. As web applications grow more complex, fewer developers focus or learn build tools. But understanding how your code is bundled and what’s inside those bundles becomes increasingly important. This knowledge pays dividends in the long run and should be a key part of a web developer's toolkit.

One open-source tool that can help you understand your bundles better is Sonda. Sonda lets you visualize and analyze JavaScript and CSS bundles. In this article, let's explore how it can help you gain a deeper understanding of your final bundles after optimizations like minification and tree-shaking.

Tree map graph showing individual files in the bundle

Works With All Major Bundlers

Sonda works seamlessly with all major bundlers, including:

  • Vite
  • Rollup
  • esbuild
  • webpack
  • Rspack

There are no second-class citizens. Plugins for all bundlers offer the same features and provide consistent insights, so you don't need to change tools or workflows because of the bundler you're using.

More Accurate Insights

Many existing bundle visualizers struggle to provide an accurate picture of the final bundles, often visualizing the output before crucial optimizations like tree-shaking or minification have occurred. This means that what you see in these reports may not match what is actually delivered to users.

Sonda addresses this by showing information about the final bundle, after all optimizations are complete. This ensures an accurate representation of what is ultimately delivered to users.

You can learn more in the What Makes Sonda Accurate? article.

Detailed Reports for Better Understanding

Sonda provides a detailed analysis, including:

  • Sizes before and after compression
  • Download times
  • A dependency graph

Sizes of a bundle before and after compression and estimated download times

This helps you understand the impact that each file and dependency has on the bundles. With this information, you can make informed decisions about which dependencies are worth keeping or where to trim down your code.

Supports Multiple Formats: HTML & JSON

Sonda can generate reports in HTML and JSON formats. The HTML reports are ideal for visual analysis, offering a clear, interactive visualization that can be easily shared with teammates. The JSON output is useful for integrating Sonda into CI/CD pipelines or other automated processes, making it flexible enough to fit into various workflows.

Highlighting the Code That Matters

Sonda can highlight the code that is actually used in the final bundle. In complex projects, it can be challenging to keep track of which parts of a library or module are necessary. Sonda makes it clear by showing exactly what is in use.

Application code where parts used in the bundle are highlighted

This feature can save significant time on debugging and pruning unnecessary code, providing a straightforward path to bundle optimization.

Identifying Common Issues

Sonda also provides warnings about common issues, such as duplicated dependencies. This helps prevent unintentional duplication that can increase bundle size and impact load times.

These warnings help you maintain best practices and keep your bundles clean and optimized.

Conclusion

Sonda is a powerful tool for understanding and optimizing JavaScript and CSS bundles. Its bundler-agnostic approach, detailed reports, and accurate post-optimization insights make it a solid choice for shipping smaller and faster web applications.

If you're interested, give Sonda a try at https://sonda.dev/ or check out the demo page


What are your biggest challenges when analyzing bundlers? Are there any features that Sonda is missing?

Top comments (1)

Collapse
 
fvsch profile image
Florens Verschelde

Thanks a bunch for creating this tool. This was sorely missing, especially in the Rollup/Vite ecosystem.