System - Bundler

Your Joomla site is loading 40+ JavaScript and CSS files on every page, and each one is a separate request slowing everything down. System - Bundler automatically combines those files into just a few optimized bundles, cutting your page requests by 90% and reducing file sizes by up to 80%. Your visitors get faster load times, Google sees better performance metrics, and you never think about it again.

Overview

Proof

Real results from production sites:

  • 25 script files → 2 bundles (92% fewer requests)
  • 363KB CSS → 69KB (81% smaller)
  • 251KB JavaScript → 67KB (73% smaller)

Used in the wild: Running on this site right now

How It Works

You tell Bundler which JavaScript and CSS files load on every page of your site. It combines them into single minified files and compresses them with gzip. When visitors load your site, their browser downloads 2-4 optimized bundles instead of dozens of individual files. The bundles update automatically whenever you install or update extensions.

Features

  • Automatic updates - Bundles rebuild whenever you update extensions, so you're always serving optimized files
  • Preserves script behavior - Keeps defer and async attributes intact, so your JavaScript executes exactly as intended
  • Smart caching - After the first page load, bundles are cached and reused, making subsequent pages lightning fast
  • Invisible to visitors - Works completely in the background with zero impact on user experience
  • Debugging built-in - Each bundle includes comments showing which files are included, making troubleshooting simple
  • Free forever - No premium version, no feature limits, no tricks

Frequently Asked Questions:

Will this break my site?

You control exactly which files get bundled. Start with 2-3 files, test it, then add more. You can disable it instantly if needed.

Is this hard to set up?

Install like any plugin, add file paths to your bundles, save. Most people are running it in under 10 minutes.

What if I update an extension?

Bundles rebuild automatically when extensions update. Joomla's media version system triggers the rebuild—you don't lift a finger.

Will this slow down my site?

The opposite. You're replacing 40 separate file requests with compressed bundles. Even with minification overhead, you're dramatically reducing total load time.

Video

Technical Details

For the Technically Curious

Architecture:

  • Event-driven with Joomla's WebAssetManager API
  • Subscribes to onBeforeCompileHead (Priority::MIN)
  • Auto-rebuild on onInstallerAfterInstaller and onExtensionAfterSave
  • Cache invalidation via Joomla's mediaVersion system

Minification:

  • JavaScript: MatthiasMullie\Minify\JS
  • CSS: MatthiasMullie\Minify\CSS
  • Gzip compression level 9 (maximum)

Output:

  • Bundles saved to /media/plg_system_bundler/
  • Naming pattern: {bundle-name}_{mediaVersion}.{ext}
  • Source comments preserved for debugging: /** @origin {filepath} */

Compatibility:

  • Joomla 4.x, 5.x, 6.x
  • PHP 7.4+ (8.x recommended)
  • Works with standard WebAssetManager-registered assets
  • Does not support ES6 modules (type="module")
  • Does not support template-rendered assets (yet)

Cache Strategy:

  • Cache key: bundler_{mediaVersion}
  • Cache group: plg_system_bundler
  • Stores: Array of asset names to remove from WebAssetManager
  • Invalidates on: Extension install/update, plugin config save

Security:

  • All file reads use absolute paths (JPATH_ROOT)
  • Graceful error handling for missing files
  • No user-supplied code execution
  • No external dependencies beyond minification library

Attribute Preservation:

  • Maintains defer, async, and combined attributes on script bundles
  • Separate bundles required for different execution contexts
  • Style bundles support media attribute preservation

Installation:

  • Upload via Extensions Manager
  • Enable plugin in System > Plugins
  • Configure bundles (bundle name, type, attributes, file list)
  • Save and test

Known Limitations:

  • Cannot bundle ES6 modules (type="module")
  • Cannot remove template-injected assets (rendered after onBeforeCompileHead)
  • Only bundles assets registered via WebAssetManager
  • Requires manual file path configuration (no auto-discovery)

Best for:

  • Sites with many extensions loading JavaScript/CSS
  • Template core files used on every page
  • System plugins with universal assets
  • Bootstrap framework files
  • Site-wide utility scripts
  • Page-specific component assets
  • Conditionally-loaded module scripts
  • Assets from templates that bypass WebAssetManager
  • Dynamic/inline scripts

Performance Impact:

  • First page load: Scanning overhead (1-2ms)
  • Subsequent loads: Cache hit, near-zero overhead
  • File generation: One-time cost on config save or extension update
  • Minification: Handled offline during bundle generation
Reviews

Download

  System - Bundler 5.2.23357

  Report a Bug   Documentation

Why is this software free?

I’m ditching the freemium game and giving this software to the Joomla crowd for free. It’s a nod to “Jumla”—Swahili for “all together”—because fragmentation sucks, and I’d rather focus on innovation and paid gigs. Use it, build with it, and if you need custom work, I’m super into that.

What's The Catch?

There isn’t one! I’m all about building tools that empower the Joomla community and spark creativity. This software’s free because I’d rather see it in your hands - fueling awesome projects. If you really feel like paying something, I’d appreciate a review in the Joomla Extension Directory—your feedback means a lot!
In The Wild