Aggregator

Aggregates Javascript files to a footer and header file.

Author:EdwardBock (profile at wordpress.org)
WordPress version required:4.8
WordPress version tested:7.0.2
Plugin version:2.2.0
Added to WordPress repository:05-06-2015
Last updated:04-08-2026
Rating, %:0
Rated by:0
Plugin URI:
Total downloads:3 109
Active installs:10+
plugin download
Click to start download

This plugin has reached the end of its life and receives no further updates. Please deactivate and delete it.

It aggregated a site’s local JavaScript files into one header and one footer request, back when the number of requests was what made a page slow. That has not been true for years, and on a current WordPress the plugin now does more harm than good.

Why it is being retired

HTTP/2 removed the reason it existed. Bundling files was a way around HTTP/1.1, which opened a new connection per file. HTTP/2 and HTTP/3 send many files over one connection, so a handful of separate scripts costs next to nothing – while one big bundle has to be re-downloaded in full whenever any part of it changes.

WordPress does the job itself now. Since 6.3 a script can be registered with defer or async (wp_script_add_data( $handle, 'strategy', 'defer' )), which is a better answer to blocking scripts than merging them. Since 6.5 there are script modules, a separate registry this plugin never touched at all – so on a modern block theme part of the JavaScript was never aggregated in the first place.

And it breaks pages. Measured on WordPress 7.0.2 with version 2.1.2:

  • Anything added with wp_add_inline_script() is silently dropped. Both before and after code disappear. WordPress itself and a great many plugins pass configuration to their scripts this way, so this can leave a page with script files that never get their settings.
  • A defer or async strategy is lost. Scripts that were meant not to block rendering end up inside a bundle that does.

    wp_localize_script() data survives – the plugin re-renders it itself – which is why the damage is not always obvious.

What to do instead

Deactivate and delete the plugin. Nothing needs to replace it: WordPress serves the individual files again, which is the right thing over HTTP/2. If single scripts block rendering, register them with a defer strategy.

The aggregated files the plugin wrote are left behind on purpose so nothing breaks mid-request. They can be deleted afterwards – by default in wp-content/uploads/aggregated/, or in your theme directory if that was configured under Settings › Aggregator.