 #  I Rebuilt My Bundler Plugin Because Your Joomla Site is Embarrassingly Slow 

 

  ![I Rebuilt My Bundler Plugin Because Your Joomla Site is Embarrassingly Slow](https://cdn.richeyweb.com/images/articles/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow/dominoes-bundler-meme.webp)    Yes, I know yours is loading 47 JavaScript files. I can hear it from here. It sounds like a dial-up modem having an existential crisis.

Look, I'm not here to make friends. I'm here to tell you that your [Joomla site](/joomla-techniques/youtube-rss-feed-gallery "YouTube RSS Feed Gallery") is probably loading more JavaScript files than a 2010 WordPress blog running 40 SEO plugins and a cryptocurrency miner, and that's just sad.

## The Problem (AKA: Why I Can't Have Nice Things)

A few weeks ago, I was testing my own site - you know, the one I use to convince people I know what I'm doing - and I noticed something horrifying in the browser's Network tab.

### Twenty. Five. JavaScript. Files.

On the homepage. The homepage. Not some bloated admin panel with seventeen dashboards and a live feed of my portfolio value declining. Not a page builder with 40 widgets. Just the regular old homepage that shows some text, maybe a picture or two, and a contact form that nobody ever uses.

And that's just the scripts. We're not even talking about the 15+ CSS files doing God knows what. Probably making buttons rounded and adding drop shadows to things that don't need drop shadows. Revolutionary stuff. Real cutting-edge web design happening here.

## How Did We Get Here?

Here's what happens when you run a Joomla site in 2026:

1. Your template loads 3 JavaScript files because it's "modern" and "modular"
2. Bootstrap loads 6 separate component files because someone at Twitter in 2011 thought splitting a framework into seventeen pieces was a good idea
3. Every plugin you install adds 1-2 files because they're each "being responsible" and "not bloating the core"
4. [Joomla core](/blog/development/new-for-2025 "New for 2025") adds a few more for actual legitimate reasons
5. Some module somewhere loads jQuery from a CDN because apparently it's special and can't use the version already loaded
6. Another extension loads the same icon library twice because dependencies are hard\\
 
Add it all up and you've got 40+ HTTP requests before your visitor even sees a single word of your carefully-crafted content about Why You Should Hire Me For Web Development Because I Definitely Know What I'm Doing And This Site Is Very Fast, I Promise.

The irony is not lost on me. In fact, the irony loaded before half my JavaScript files did.

## The Old Solution

Back in the Joomla 3 days, I built the original Bundler plugin. It did one thing: took all those ridiculous individual files and smashed them into a single bundle like a drunk teenager making a protein shake.

It worked. People used it. I moved on with my life.

But then Joomla 4 came out with its fancy new [WebAssetManager](/joomla-techniques/how-to-add-custom-scripts-or-stylesheets-to-a-single-joomla-article-without-losing-your-mind "Add Custom Scripts or Stylesheets to a Joomla Article") and event-driven architecture and namespace requirements, and suddenly my old plugin was about as useful as a flip phone at a 5G conference.

## So I Rebuilt It From Scratch

[System - Bundler](/software/joomla/plugins/system-bundler) 5.0 is a complete ground-up rebuild for modern Joomla. Same goal, better execution, fewer compromises.

### What it does:

- Combines dozens of JavaScript and CSS files into a handful of optimized bundles
- Minifies everything automatically
- Compresses with gzip (bundles are 70-80% smaller)
- Rebuilds automatically when you install or update extensions
- Actually works with template assets (more on that in a second)
 
The results on my own site:

- Before: 9 JavaScript files, 251KB total
- After: 2 bundles, 67KB total (73% smaller)
- Before: 15+ CSS files, 363KB total
- After: 2 bundles, 69KB total (81% smaller)
 
My Network tab went from looking like a CVS receipt to looking like a responsible adult made a shopping list.

## The Catch (Because There's Always a Catch)

This isn't a one-click magic solution. It's a power-user tool.

You have to:

1. Identify which assets load on every page of your site
2. Configure bundles for those assets
3. Test across different page types
4. Maybe iterate if you got something wrong
 
It'll take you 1-2 hours to set up properly. But then it's done. Forever. Bundles rebuild automatically when extensions update. You configure it once and forget about it.

If you want something that "just works" with zero effort, this isn't it. If you're willing to invest an afternoon for permanent 70%+ performance gains, download it.

## Why It's Free

- I built it for my own sites first
- The freemium model is exhausting and I'm over it
- The Joomla community is called "Jumla" (Swahili for "all together") for a reason
- My money comes from client work, not selling plugins
 
### If you want to pay me back:

Leave a review in the JED  
Hire me for custom work  
Tell someone else about it  
Or just use it and make faster websites

## The Part Where I'm Briefly Serious

Page speed is a ranking factor. [Core Web Vitals](/white-hat-seo/technical-seo "Technical SEO") matter. Your bounce rate suffers when pages load slowly. You know this already.

Most Joomla sites hemorrhage performance because they load dozens of individual files on every page. Not because Joomla is bad, but because the ecosystem of templates and extensions creates this mess.

You can manually optimize every file, set up webpack, hire someone expensive, or spend an afternoon configuring a free plugin that solves it permanently.

Your call.

P.S. - Yes, I'm using it on this site right now. Check the page source if you don't believe me. Search for plg\_system\_bundler.

P.P.S. - If you install this and your site gets slower, you did it wrong. Read the docs. Specifically the part about only bundling site-wide assets.

P.P.P.S. - If your template uses deprecated $doc-&gt;addScript() methods instead of WebAssetManager, those won't get bundled. But those APIs are being removed in Joomla 7 anyway, so your template needs updating regardless.



- [      email ](mailto:?subject=I+Rebuilt+My+Bundler+Plugin+Because+Your+Joomla+Site+is+Embarrassingly+Slow&body=https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fi-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow)
- [      facebook ](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fi-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow)
- [      x-twitter ](https://twitter.com/intent/tweet?text=I+Rebuilt+My+Bundler+Plugin+Because+Your+Joomla+Site+is+Embarrassingly+Slow%3A+https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fi-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow)
- [      linkedin ](http://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fi-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow&title=I+Rebuilt+My+Bundler+Plugin+Because+Your+Joomla+Site+is+Embarrassingly+Slow&summary=Yes%2C+I+know+yours+is+loading+47+JavaScript+files....)
- [      pinterest ](http://pinterest.com/pin/create/button/?url=https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fi-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow&media=https%3A%2F%2Fcdn.joomla.org%2Fimages%2Fjoomla-org-og.jpg&description=I+Rebuilt+My+Bundler+Plugin+Because+Your+Joomla+Site+is+Embarrassingly+Slow)
 


 

   [  Previous article: I Built This on February 3rd. Cloudflare Announced It on February 12th   I Built This on February 3rd. Cloudflare Announced It on February 12th ](/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th) [  Next article: SEO Friendly Tabs with details/summary  SEO Friendly Tabs with details/summary  ](/blog/development/seo-tabs-with-details-summary)  

##### We Value Your Privacy

 

We use cookies to enhance your experience and for traffic analysis. By continuing to visit this site you agree to our use of cookies.

[Privacy Policy](/privacy-policy)

 Details 

###### Google Tag Manager Items

- Ad Storage
- Ad User Data
- Ad Personalization
- Analytics Storage
- Functionality Storage
- Personalization Storage
- Security Storage
 
 

 

 

 

 

 Decline Accept
```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.richeyweb.com/#organization","name":"RicheyWeb","url":"https://www.richeyweb.com/","logo":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/logo/richeyweb.svg","contentUrl":"https://www.richeyweb.com/images/logo/richeyweb.svg","width":{"@type":"QuantitativeValue","value":38,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":38,"unitCode":"PX"},"@id":"https://www.richeyweb.com/#logo"},"image":{"@id":"https://www.richeyweb.com/#logo"},"sameAs":["https://x.com/ComRicheyweb","https://www.facebook.com/RicheyWebDev/","https://www.youtube.com/channel/UCxnVG8BwOvQRO7hVqNX7T2g","https://community.joomla.org/service-providers-directory/listings/115:richeyweb.html"],"description":"RicheyWeb is a custom software developer specializing in Joomla extensions.","ContactPoint":[{"@type":"ContactPoint","url":"https://www.richeyweb.com/contact-us","telephone":"903-873-8460","contactType":"Owner/Administrator","areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"availableLanguage":"en"},{"@type":"ContactPoint","url":"https://www.richeyweb.com/bugs","telephone":"903-873-8460","contactType":"Technical Support","areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"availableLanguage":"en"}],"knowsAbout":["Computer programming",{"@type":"Thing","name":"Computer programming","sameAs":["https://en.wikipedia.org/wiki/Computer_programming","https://www.wikidata.org/wiki/Q80006","https://g.co/kg/m/01mf_"]},"PHP",{"@type":"Thing","name":"PHP","sameAs":["https://en.wikipedia.org/wiki/PHP","https://www.wikidata.org/wiki/Q59","https://g.co/kg/m/060kv"]},"JavaScript",{"@type":"Thing","name":"JavaScript","sameAs":["https://en.wikipedia.org/wiki/JavaScript","https://www.wikidata.org/wiki/Q2005","https://g.co/kg/m/02p97"]},"arduino","Computer forensics",{"@type":"Thing","name":"Computer forensics","sameAs":["https://en.wikipedia.org/wiki/Computer_forensics","https://www.wikidata.org/wiki/Q878553","https://g.co/kg/m/02wxbd"]},"White hat",{"@type":"Thing","name":"White hat","sameAs":["https://en.wikipedia.org/wiki/White_hat_(computer_security)","https://www.wikidata.org/wiki/Q7995625","https://g.co/kg/m/03ns_5"]},"Search engine optimization",{"@type":"Thing","name":"Search engine optimization","sameAs":["https://en.wikipedia.org/wiki/Search_engine_optimization","https://www.wikidata.org/wiki/Q180711","https://g.co/kg/m/019qb_"]},"Search engine marketing",{"@type":"Thing","name":"Search engine marketing","sameAs":["https://en.wikipedia.org/wiki/Search_engine_marketing","https://www.wikidata.org/wiki/Q846132","https://g.co/kg/m/06mw8r"]},"Digital marketing",{"@type":"Thing","name":"Digital marketing","sameAs":["https://en.wikipedia.org/wiki/Digital_marketing","https://www.wikidata.org/wiki/Q1323528","https://g.co/kg/g/122hcnps"]},"Web hosting service",{"@type":"Thing","name":"Web hosting service","sameAs":["https://en.wikipedia.org/wiki/Web_hosting_service","https://www.wikidata.org/wiki/Q5892272","https://g.co/kg/m/014pz4"]},"Email hosting service",{"@type":"Thing","name":"Email hosting service","sameAs":["https://en.wikipedia.org/wiki/Email_hosting_service","https://www.wikidata.org/wiki/Q5368818","https://g.co/kg/m/09w60m"]},"Internet hosting service",{"@type":"Thing","name":"Internet hosting service","sameAs":["https://en.wikipedia.org/wiki/Internet_hosting_service","https://www.wikidata.org/wiki/Q1210425","https://g.co/kg/m/09w5yw"]},"Virtual hosting",{"@type":"Thing","name":"Virtual hosting","sameAs":["https://en.wikipedia.org/wiki/Virtual_hosting","https://www.wikidata.org/wiki/Q588365","https://g.co/kg/m/024mvh"]},"Web performance",{"@type":"Thing","name":"Web performance","sameAs":["https://en.wikipedia.org/wiki/Web_performance","https://www.wikidata.org/wiki/Q7978612","https://g.co/kg/m/0gfj3f1"]},"Web content management system",{"@type":"Thing","name":"Web content management system","sameAs":["https://en.wikipedia.org/wiki/Web_content_management_system","https://www.wikidata.org/wiki/Q45211","https://g.co/kg/m/0615s2"]},"Content management system",{"@type":"Thing","name":"Content management system","sameAs":["https://en.wikipedia.org/wiki/Content_management_system","https://www.wikidata.org/wiki/Q131093","https://g.co/kg/m/0k23c"]},"General Data Protection Regulation",{"@type":"Thing","name":"General Data Protection Regulation","sameAs":["https://en.wikipedia.org/wiki/General_Data_Protection_Regulation","https://www.wikidata.org/wiki/Q1172506","https://g.co/kg/m/0pk_7xs"]},"SERP",{"@type":"Thing","name":"SERP","sameAs":["https://en.wikipedia.org/wiki/SERP","https://www.wikidata.org/wiki/Q2205811","https://g.co/kg/g/11c5szp7kc"]},"Artificial intelligence",{"@type":"Thing","name":"Artificial intelligence","sameAs":["https://en.wikipedia.org/wiki/Artificial_intelligence","https://www.wikidata.org/wiki/Q11660","https://g.co/kg/m/0mkz"]},"Prompt engineering",{"@type":"Thing","name":"Prompt engineering","sameAs":["https://en.wikipedia.org/wiki/Prompt_engineering","https://www.wikidata.org/wiki/Q108941486","https://g.co/kg/g/11p6kpgt_n"]},"E-learning",{"@type":"Thing","name":"E-learning","sameAs":["https://en.wikipedia.org/wiki/E-learning_(theory)","https://www.wikidata.org/wiki/Q182250","https://g.co/kg/g/122czm1f"]},"Sharable Content Object Reference Model",{"@type":"Thing","name":"Sharable Content Object Reference Model","sameAs":["https://en.wikipedia.org/wiki/Sharable_Content_Object_Reference_Model","https://www.wikidata.org/wiki/Q827811","https://g.co/kg/m/06_40"]},"Experience API",{"@type":"Thing","name":"Experience API","sameAs":["https://en.wikipedia.org/wiki/Experience_API","https://www.wikidata.org/wiki/Q7807728","https://g.co/kg/g/1yw9ktxr8"]},"Joomla",{"@type":"Thing","name":"Joomla","sameAs":["https://en.wikipedia.org/wiki/Joomla","https://www.wikidata.org/wiki/Q13167","https://g.co/kg/m/07qb81"]},"Nginx",{"@type":"Thing","name":"Nginx","sameAs":["https://en.wikipedia.org/wiki/Nginx","https://www.wikidata.org/wiki/Q306144","https://g.co/kg/m/02qft91"]},"MySQL",{"@type":"Thing","name":"MySQL","sameAs":["https://en.wikipedia.org/wiki/MySQL","https://www.wikidata.org/wiki/Q850","https://g.co/kg/m/04y3k"]}],"areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"memberOf":["Mensa International",{"@type":"Organization","name":"Mensa International","sameAs":["https://en.wikipedia.org/wiki/Mensa_International","https://www.wikidata.org/wiki/Q184194","https://g.co/kg/m/0140pf"]},"National Rifle Association",{"@type":"Organization","name":"National Rifle Association","sameAs":["https://en.wikipedia.org/wiki/National_Rifle_Association","https://www.wikidata.org/wiki/Q863259","https://g.co/kg/m/0j6f9"]},"CompTIA",{"@type":"Organization","name":"CompTIA","sameAs":["https://en.wikipedia.org/wiki/CompTIA","https://www.wikidata.org/wiki/Q597534","https://g.co/kg/m/040shq"]},"ISFCE LLC",{"@type":"Organization","name":"ISFCE LLC","sameAs":["https://isfce.com","https://g.co/kg/g/11wxm5r0rg"]}],"hasCredential":[{"@type":"EducationalOccupationalCredential","name":"Joomla 3 Certified Administrator","credentialCategory":"Certification","description":"Administrator Exam is the first available Joomla! certification exam","recognizedBy":{"@type":"Organization","name":"Open Source Matters, Inc.","sameAs":["https://en.wikipedia.org/wiki/Open_Source_Matters,_Inc.","https://g.co/kg/g/11f00wvjhz"]},"url":"https://certification.joomla.org/certified-user-directory/michael-richey","about":["Content management system",{"@type":"Thing","name":"Content management system","sameAs":["https://en.wikipedia.org/wiki/Content_management_system","https://www.wikidata.org/wiki/Q131093","https://g.co/kg/m/0k23c"]},"Web content management system",{"@type":"Thing","name":"Web content management system","sameAs":["https://en.wikipedia.org/wiki/Web_content_management_system","https://www.wikidata.org/wiki/Q45211","https://g.co/kg/m/0615s2"]},"Joomla",{"@type":"Thing","name":"Joomla","sameAs":["https://en.wikipedia.org/wiki/Joomla","https://www.wikidata.org/wiki/Q13167","https://g.co/kg/m/07qb81"]}],"educationalLevel":"expert","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/contact/badge.webp","contentUrl":"https://www.richeyweb.com/images/contact/badge.webp","width":{"@type":"QuantitativeValue","value":300,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":86,"unitCode":"PX"},"caption":"Joomla 3 Certified Administrator"}},{"@type":"EducationalOccupationalCredential","name":"Certified Computer Examiner","credentialCategory":"Certification","description":"Internationally recognized computer forensics certifiecation","recognizedBy":{"@type":"Organization","name":"ISFCE LLC","sameAs":["https://en.wikipedia.org/wiki/ISFCE_LLC","https://g.co/kg/g/11wxm5r0rg"]},"url":"https://isfce.com/","about":["Digital forensics",{"@type":"Thing","name":"Digital forensics","sameAs":["https://en.wikipedia.org/wiki/Digital_forensics","https://www.wikidata.org/wiki/Q3246940","https://g.co/kg/m/0cnxzfx"]},"Computer forensics",{"@type":"Thing","name":"Computer forensics","sameAs":["https://en.wikipedia.org/wiki/Computer_forensics","https://www.wikidata.org/wiki/Q878553","https://g.co/kg/m/02wxbd"]},"Mobile device forensics",{"@type":"Thing","name":"Mobile device forensics","sameAs":["https://en.wikipedia.org/wiki/Mobile_device_forensics","https://www.wikidata.org/wiki/Q6887097","https://g.co/kg/m/06zp3tp"]},"Network forensics",{"@type":"Thing","name":"Network forensics","sameAs":["https://en.wikipedia.org/wiki/Network_forensics","https://www.wikidata.org/wiki/Q7001032","https://g.co/kg/m/05pb280"]},"Database forensics",{"@type":"Thing","name":"Database forensics","sameAs":["https://en.wikipedia.org/wiki/Database_forensics","https://www.wikidata.org/wiki/Q5227405","https://g.co/kg/m/0cgqsy"]}],"educationalLevel":"expert","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/contact/isfce-cce.webp","contentUrl":"https://www.richeyweb.com/images/contact/isfce-cce.webp","width":{"@type":"QuantitativeValue","value":150,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":150,"unitCode":"PX"},"caption":"Certified Computer Examiner"}}],"hasOfferCatalog":{"@type":"OfferCatalog","name":"Web Services","itemListElement":[{"@type":"Offer","itemOffered":{"@type":"Service","name":"Hosting"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Development"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Search Engine Optimization"}}]}},{"@type":"WebSite","@id":"https://www.richeyweb.com/#website","url":"https://www.richeyweb.com/","name":"RicheyWeb","publisher":{"@id":"https://www.richeyweb.com/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.richeyweb.com/search?q={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string","valueMaxLength":256,"valueMinLength":2,"valuePattern":"^[A-Za-z0-9\\s]+$"}},"creator":{"@id":"https://www.richeyweb.com/#organization"},"copyrightHolder":{"@id":"https://www.richeyweb.com/#organization"}},{"@type":"WebPage","@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#webpage","url":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow","name":"I Rebuilt My Bundler Plugin Because Your Joomla Site is Embarrassingly Slow","description":"Bundler 5.0 optimizes your Joomla site by reducing JavaScript and CSS files for faster load times and better performance.","isPartOf":{"@id":"https://www.richeyweb.com/#website"},"about":{"@id":"https://www.richeyweb.com/#organization"},"inLanguage":"en-GB"},{"@type":"Article","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow/dominoes-bundler-meme.webp","contentUrl":"https://www.richeyweb.com/images/articles/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow/dominoes-bundler-meme.webp","width":{"@type":"QuantitativeValue","value":725,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":407,"unitCode":"PX"},"caption":"I Rebuilt My Bundler Plugin Because Your Joomla Site is Embarrassingly Slow","representativeOfPage":true},"headline":"I Rebuilt My Bundler Plugin Because Your Joomla Site is Embarrassingly Slow","description":"Bundler 5.0 optimizes your Joomla site by reducing JavaScript and CSS files for faster load times and better performance.","author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"},"datePublished":"2026-02-12T00:00:00+00:00","dateModified":"2026-03-30T00:00:00+00:00","about":["Joomla",{"@type":"SoftwareApplication","name":"Joomla","sameAs":["https://en.wikipedia.org/wiki/Joomla","https://www.wikidata.org/wiki/Q13167","https://g.co/kg/m/07qb81"]},"System - Bundler",{"@type":"SoftwareApplication","@id":"https://www.richeyweb.com/software/joomla/plugins/system-bundler/#softwareapplication","name":"System - Bundler","sameAs":["https://extensions.joomla.org/extension/core-enhancements/performance/system-bundler/"]},"Web performance",{"@type":"Thing","name":"Web performance","sameAs":["https://en.wikipedia.org/wiki/Web_performance","https://www.wikidata.org/wiki/Q7978612","https://g.co/kg/m/0gfj3f1"]},"JavaScript",{"@type":"Thing","name":"JavaScript","sameAs":["https://en.wikipedia.org/wiki/JavaScript","https://www.wikidata.org/wiki/Q2005","https://g.co/kg/m/02p97"]},"Minification",{"@type":"Thing","name":"Minification","sameAs":["https://en.wikipedia.org/wiki/Minification_(programming)","https://www.wikidata.org/wiki/Q6865242","https://g.co/kg/m/025skdv"]},"CSS",{"@type":"Thing","name":"CSS","sameAs":["https://en.wikipedia.org/wiki/CSS","https://www.wikidata.org/wiki/Q46441","https://g.co/kg/m/015tjh"]},"Google PageSpeed Tools",{"@type":"Thing","name":"Google PageSpeed Tools","sameAs":["https://en.wikipedia.org/wiki/Google_PageSpeed_Tools","https://www.wikidata.org/wiki/Q1537678","https://g.co/kg/g/1225qfwy"]}],"mentions":["Bootstrap",{"@type":"Thing","name":"Bootstrap","sameAs":["https://en.wikipedia.org/wiki/Bootstrap_(front-end_framework)","https://g.co/kg/m/0j671ln"]},"Google Analytics",{"@type":"Thing","name":"Google Analytics","sameAs":["https://en.wikipedia.org/wiki/Google_Analytics","https://www.wikidata.org/wiki/Q220577","https://g.co/kg/m/08w9_f"]},"Webpack",{"@type":"Thing","name":"Webpack","sameAs":["https://en.wikipedia.org/wiki/Webpack","https://www.wikidata.org/wiki/Q22909730","https://g.co/kg/g/11clg_kyfc"]},"Vite",{"@type":"Thing","name":"Vite","sameAs":["https://en.wikipedia.org/wiki/Vite_(software)","https://g.co/kg/g/11rvk4p2kz"]},"gzip",{"@type":"Thing","name":"gzip","sameAs":["https://en.wikipedia.org/wiki/Gzip","https://www.wikidata.org/wiki/Q283647","https://g.co/kg/m/03bzt"]},"Content delivery network",{"@type":"Thing","name":"Content delivery network","sameAs":["https://en.wikipedia.org/wiki/Content_delivery_network","https://www.wikidata.org/wiki/Q72588","https://g.co/kg/m/03l9cn"]},"Search engine optimization",{"@type":"Thing","name":"Search engine optimization","sameAs":["https://en.wikipedia.org/wiki/Search_engine_optimization","https://www.wikidata.org/wiki/Q180711","https://g.co/kg/m/019qb_"]},"WordPress",{"@type":"SoftwareApplication","name":"WordPress","sameAs":["https://en.wikipedia.org/wiki/WordPress","https://www.wikidata.org/wiki/Q13166","https://g.co/kg/m/02vtpl"]},"Twitter",{"@type":"Thing","name":"Twitter","sameAs":["https://en.wikipedia.org/wiki/Twitter,_Inc.","https://www.wikidata.org/wiki/Q918","https://g.co/kg/m/0hn1vcg"]},{"@type":"Article","@id":"https://www.richeyweb.com/white-hat-seo/technical-seo#article","url":"https://www.richeyweb.com/white-hat-seo/technical-seo","name":"Technical SEO","headline":"Technical SEO","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/seo/technical-seo/technical-seo-v2.webp","contentUrl":"https://www.richeyweb.com/images/articles/seo/technical-seo/technical-seo-v2.webp","width":{"@type":"QuantitativeValue","value":1280,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":720,"unitCode":"PX"},"caption":"Technical SEO"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/joomla-techniques/youtube-rss-feed-gallery#article","url":"https://www.richeyweb.com/joomla-techniques/youtube-rss-feed-gallery","name":"YouTube RSS Feed Gallery","headline":"YouTube RSS Feed Gallery","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/tutorialmemes/i-bet-hes-thinking-about-other-women.webp","contentUrl":"https://www.richeyweb.com/images/tutorialmemes/i-bet-hes-thinking-about-other-women.webp","width":{"@type":"QuantitativeValue","value":889,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":500,"unitCode":"PX"},"caption":"YouTube RSS Feed Gallery"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/blog/development/new-for-2025#article","url":"https://www.richeyweb.com/blog/development/new-for-2025","name":"New for 2025","headline":"New for 2025","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/new-2025/joomla.svg","contentUrl":"https://www.richeyweb.com/images/articles/new-2025/joomla.svg","width":{"@type":"QuantitativeValue","value":800,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":800,"unitCode":"PX"},"caption":"New for 2025"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/joomla-techniques/how-to-add-custom-scripts-or-stylesheets-to-a-single-joomla-article-without-losing-your-mind#article","url":"https://www.richeyweb.com/joomla-techniques/how-to-add-custom-scripts-or-stylesheets-to-a-single-joomla-article-without-losing-your-mind","name":"Add Custom Scripts or Stylesheets to a Joomla Article","headline":"Add Custom Scripts or Stylesheets to a Joomla Article","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/thumbs-up-kid.webp","contentUrl":"https://www.richeyweb.com/images/articles/thumbs-up-kid.webp","width":{"@type":"QuantitativeValue","value":600,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":337,"unitCode":"PX"},"caption":"Add Custom Scripts or Stylesheets to a Joomla Article"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}}],"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#article","isPartOf":{"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#webpage"},"publisher":{"@id":"https://www.richeyweb.com/#organization"},"citation":[{"@type":"CreativeWork","@id":"https://www.richeyweb.com/software/joomla/plugins/system-bundler#softwareapplication","url":"https://www.richeyweb.com/software/joomla/plugins/system-bundler","name":"System - Bundler"}],"keywords":"Joomla site, JavaScript files, CSS files, Network tab, WebAssetManager, Joomla core, jQuery, HTTP requests, Bundler plugin, Bundler 5.0, gzip, template assets, Core Web Vitals, page speed, ranking factor, bounce rate, plg_system_bundler","articleSection":"Development","url":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow","hasPart":[{"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-the-problem-aka-why-i-cant-have-nice-things_2_1"},{"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-twenty-five-javascript-files_3_2"},{"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-how-did-we-get-here_2_3"},{"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-the-old-solution_2_4"},{"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-so-i-rebuilt-it-from-scratch_2_5"},{"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-what-it-does_3_6"},{"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-the-catch-because-theres-always-a-catch_2_7"},{"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-why-its-free_2_8"},{"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-if-you-want-to-pay-me-back_3_9"},{"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-the-part-where-im-briefly-serious_2_10"}]},{"@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex","@type":"ItemList","name":"I Rebuilt My Bundler Plugin Because Your Joomla Site is Embarrassingly Slow","numberOfItems":10,"itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-the-problem-aka-why-i-cant-have-nice-things_2_1","name":"The Problem (AKA: Why I Can't Have Nice Things)","url":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#toc-the-problem-aka-why-i-cant-have-nice-things_2_1"}},{"@type":"ListItem","position":2,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-twenty-five-javascript-files_3_2","name":"Twenty. Five. JavaScript. Files.","url":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#toc-twenty-five-javascript-files_3_2"}},{"@type":"ListItem","position":3,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-how-did-we-get-here_2_3","name":"How Did We Get Here?","url":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#toc-how-did-we-get-here_2_3"}},{"@type":"ListItem","position":4,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-the-old-solution_2_4","name":"The Old Solution","url":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#toc-the-old-solution_2_4"}},{"@type":"ListItem","position":5,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-so-i-rebuilt-it-from-scratch_2_5","name":"So I Rebuilt It From Scratch","url":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#toc-so-i-rebuilt-it-from-scratch_2_5"}},{"@type":"ListItem","position":6,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-what-it-does_3_6","name":"What it does:","url":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#toc-what-it-does_3_6"}},{"@type":"ListItem","position":7,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-the-catch-because-theres-always-a-catch_2_7","name":"The Catch (Because There's Always a Catch)","url":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#toc-the-catch-because-theres-always-a-catch_2_7"}},{"@type":"ListItem","position":8,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-why-its-free_2_8","name":"Why It's Free","url":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#toc-why-its-free_2_8"}},{"@type":"ListItem","position":9,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-if-you-want-to-pay-me-back_3_9","name":"If you want to pay me back:","url":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#toc-if-you-want-to-pay-me-back_3_9"}},{"@type":"ListItem","position":10,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#articleindex-toc-the-part-where-im-briefly-serious_2_10","name":"The Part Where I'm Briefly Serious","url":"https://www.richeyweb.com/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow#toc-the-part-where-im-briefly-serious_2_10"}}]}]}
```
