Installation is very straightforward:
- Upload the zip-file and unzip it in the /wp-content/plugins/ directory
- Activate the plugin through the ‘Plugins’ menu in WordPress
- Go to
Which browsers support the ‘async’ and ‘defer’ attributes
The ‘async’ attribute is new in HTML5. It is supported by the following browsers:
- IE 10 and higher
- Firefox 3.6 and higher
Where can I get help?
Do you offer professional support/ configuration services?
What about CSS?
- Disable the plugin
- Delete the plugin
Wachangiaji & Wasanidi
- workaround for issues with some inline JS getting asynced (hat tip to WP Bullet’s Mike)
- fix for an authenticated stored XSS vulnerability, credits to m0ze for discovering
- confirmed working with WordPress 5.8 (beta)
- fix for some ternary operators warning in PHP 7.4 and up.
- hard-exclude document.write (WordPress core injects inline JS that has
<script srcin it which AsyncJS acted on)
- fix for WordPress 5.6 renaming jQuery from jquery.js into jquery.min.js
- extra security measure; check the nonce when saving settings/ going through wizard.
- wizard: if something fails then communicate this onscreen instead of on the console.
- autoptimize integration: change copy to explain this might or might not be helpful.
- fix for some nasty issues, thanks for the heads-up Mikey
- changed textdomain to match slug as suggested by Eneko Garrido
- confirmed working with WordPress 5.2
- the “happy birthday to me” edition 😉
- new: added option to disable Async JS for logged in users
- new: added option to disable Async JS on shop cart/ checkout pages (woocommerce, edd & wp ecommerce)
- added ‘settings’-link to plugin overview screen (hi Mike!)
- updated the chosen JS library to 1.8.7
- confirmed working with WordPress 5.0
- fix integration issue with Autoptimize, thx for reporting ElephantDude!
- don’t async (or defer) on AMP-pages
- disable async/ defer by when
?aj_noptimize=1is part of the URL
- Re-arrange content on the different tabs of the settings page.
- Continued refactoring of backend code, no functionality should be affected.
- Remove all images from the project such as the animated hands and progress bar gif.
- Remove empty rows that added unnecessary space.
- Switch buttons to use WordPress button styles.
- Fix broken Dashboard Widget from 2.18.03.15 and reduce font-size to fix text overflow.
- Remove all CSS !important declarations for easier CSS styling.
- Remove inline CSS styles.
- Switch to a CSS based progress bar.
- Spell check readme.
- Remove almost all tables from files.
- Add wormeyman as a contributor (thanks man!).
- bugfix: only load asyncjs’ JS & CSS on own settings page as reported by Marat Petrov
- bugfix: check if jQuery chosen is correctly loaded before using it (based on same report, thanks Marat!)
- update jQuery Chosen lib
- small readme tweaks
- ASync JS is now maintained by Frank Goossens (Optimizing Matters), thanks for the great job done David!
- Moved all Pro features into the standard version.
- Some code refactoring
- Made strings ready for translations
- MOD: Added User Agent to GTMetrix requests
- MOD: Check for GTMetrix class existence prior to including class
- FIX: Issue converting array for plugin & theme exclusions
- FIX: Sanitise all $_GET and all $_POST
- FIX: Add nonce to ajax calls
- MOD: Dashboard Widget and Notices only available to Administrators
- NEW: Added quick settings buttons to allow common settings to be quickly applied
- NEW: Added current version info to help page
- FIX: Some installs not saving plugin/theme exclusions due to theme incompatibility
- MOD/FIX: On some WordPress installs is_plugin_active function being called too early. Moved is_plugin_active into a dedicated function called via admin_init as per codex: https://codex.wordpress.org/Function_Reference/is_plugin_active
- FIX: Incorrect textarea identifier preventing exclusion save
- FIX: Resolve early loading of plugin causing a fatal error due to function not available yet
- FIX: CSS / JS not loading
- MOD: Add text to advise running Wizard is not mandatory
- Now includes a Setup Wizard, Status page, Settings page and a help page.
- Communicates directly with GTmetrix (account required)