NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #4315 most downloaded on Packagist
Asset Manager is a toolkit for managing front-end assets and more tightly controlling where, when, and how they're loaded.
Last release 14 days ago
24 Sep 2026
Ships unpredictably
gaps range from 2 weeks to 1.5 years
Nearly every release is documented
notes for 21 of 22 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
22 releases · first in 2020
Removed the preload load method from am_enqueue_style() , deprecated since 0.1.1.
imagesrcset, imagesizes, and fetchpriority options to am_preload() for preloading responsive images (#55).WordPress.NamingConventions.PrefixAllGlobals sniff. WPCS 3.x enforces a four-character minimum prefix, which rejects the plugin's published am_ prefix.WordPress.WP.EnqueuedResources sniff. Printing <link> and <script> tags directly is what the async and defer load methods are for.phpcs.xml to phpcs.xml.dist so the ruleset can be overridden locally.Mantle\Support\Helpers\capture() in place of a local get_echo() helper.strict_types, test methods declare public visibility and void return types, and each test class is scoped with #[CoversClass].am_enqueue_script() and am_enqueue_style() now call _doing_it_wrong() when given an unrecognised load method, instead of silently falling back to sync. Omitting the load method entirely still selects the default without a notice.Text Domain header to the plugin file.CONTRIBUTING.md.wp_kses_hair() on the HTML API (#76).deps being ignored for assets the plugin prints itself (#22). Inline, async, and defer assets bypass wp_enqueue_* and so never reached core's dependency resolution; they are now ordered so a dependency prints before anything that depends on it, transitively, while unrelated assets keep their registration order.am_modify_load_method() failing to apply async or defer on WordPress 6.3+ (#62). The load method is carried by core's strategy argument, which is only read at enqueue time, so it is now written back with wp_script_add_data().am_modify_load_method() raising a TypeError when passed an array of options, the form shown in the documentation. It now accepts array|string like every other am_* helper.SVG_Sprite adding a nested array to the safe_style_css allowlist (#73), which raised an "Array to string conversion" warning on every rendered page once a downstream callback ran array_unique() over the list.invalid_enqueue_function branch passed the return value of generate_asset_error() — which returns nothing and has already printed the error — into format_error(), so any user with the am_view_asset_error capability hit a method call on null.create_symbol() returning null instead of a pair when an SVG file can't be read or parsed. The caller destructures the return value, so a missing sprite file raised two "Trying to access array offset on value of type null" warnings on every page that used it.condition key of am_enqueue_script() is recognized as accepting both an array and a string (#72).SVG_Sprite::get_svg(), documented as returning a DOMDocument when it returns the <svg> DOMElement, or now null on failure. The wrong type made get_default_dimensions() and create_symbol() look broken to static analysis even though they were correct.generate_asset_error(), documented as taking an array error code when every one of its call sites passes a string, and asset_should_add(), documented as taking a string asset when it is always given an array and whose @return WP_Error resolved to a class that does not exist.SVG_Sprite::remove_symbol() now compares handles strictly, matching every other in_array() call in the codebase.alleyinteractive/composer-wordpress-autoloader, previously inherited from mantle-framework/testkit, which dropped it in v1.21.0 and left a fresh composer install unable to autoload the plugin's own classes.am to wp-asset-manager to match the plugin slug.async-defer load method (#63).Scripts::$async_scripts, Scripts::add_to_async(), Scripts::add_attributes(), Scripts::disable_concat(), and Scripts::manage_async(), the pre-WordPress-6.3 async and defer fallback that core's strategy argument replaced.Asset_Manager::$assets_by_dependency and Asset_Manager::$assets_manual.preload load method from am_enqueue_style(), deprecated since 0.1.1.defer load method for stylesheets now behaves as async and raises a _doing_it_wrong() notice. defer hid the stylesheet from the browser until DOMContentLoaded; async keeps the non-blocking intent but starts the fetch immediately. The bundled loadCSS library — archived upstream, with the async markup as its official replacement — is no longer shipped or auto-enqueued, and Styles::$loadcss_added was removed. Note the timing change: previously deferred stylesheets now begin downloading during HTML parsing instead of after it.am_* template tags will be formally deprecated in the next major version. They continue to work in 2.x.defer load method for stylesheets is deprecated. It behaves as async in 2.x and will be removed in the next major version.One column per quarter.
Excluded the WordPress.NamingConventions.PrefixAllGlobals sniff. WPCS 3.x enforces a four-character minimum prefix, which rejects the plugin's publish
WordPress.NamingConventions.PrefixAllGlobals sniff. WPCS 3.x enforces a four-character minimum prefix, which rejects the plugin's published am_ prefix.wp_kses_hair() on the HTML API, which lowercases SVG attribute names such as viewBox and encodes single quotes as '. Both are cosmetic and the plugin's markup is unchanged (#76).release/v1.x maintenance branch, and no longer starts the MySQL, Redis, and Memcached containers; the test bootstrap uses SQLite.release/v1.x. They are created as drafts, so that publishing a patch does not move the repository's "Latest" marker backwards onto an older series.alleyinteractive/composer-wordpress-autoloader. It was previously inherited from mantle-framework/testkit, which dropped it in v1.21.0, leaving a fresh composer install unable to autoload the plugin's own classes.condition key of am_enqueue_script() is recognized as accepting both an array and a string (#72).issue-66: Support registering assets to the wp dependency registry by @renatonascalves in #67
Full Changelog: v1.4.2...v1.4.3
QueryMonitor is active.description to match the one in package and in the git repo..phpunit-watcher.yml.package.json and composer.json (Use spaces instead of tabs per .editorconfig rules).Fix src being an array by @srtfisher in #70
$src argument of am_enqueue_script().Allow version argument to be null by @srtfisher in #69
Full Changelog: v1.4.0...v1.4.1
Added proper types for helper functions that support array in the first argument.
Asset_Manager_Preload::set_asset_types() should return an empty array if no valid arguments are passed.Alley\WP\Asset_Manager namespace. Legacy classes suchAsset_Manager_Scripts and Asset_Manager_Styles are aliased to their newproduction-built branch of the plugin or any tagged release (which will beFull Changelog: v1.3.7...v1.4.0
Adds support for async and defer using the 'strategy' argument added for wp_enqueue_script in WordPress 6.3.
Adds support for async and defer using the 'strategy' argument added for wp_enqueue_script in WordPress 6.3.
Adds support for running the plugin on a Windows hosting environment
Removes default kses allowed SVG attributes
Removes default kses allowed SVG attributes
PHP 8.2 deprecations by @anubisthejackle in #53
Full Changelog: v1.3.3...v1.3.4
Removes visibility:hidden SVG sprite style declaration, which breaks some SVG element references
visibility:hidden SVG sprite style declaration, which breaks some SVG element referencesmantle-framework/testkit v0.11visibility:hidden SVG sprite style declaration, which breaks some SVG element references (#50)mantle-framework/testkit v0.11 (#50)The SVG Sprite is no longer hidden with display:none and instead visually hidden and moved offscreen
Changed
display:none and instead visually hidden and moved offscreen (#49)Check for array key before using when preloading assets (#47).
mantle-framework/testkit v0.10.1 (#47).Use am_view_asset_error meta capability to determine whether to display error messages related to asset enqueuing. am_view_asset_error is mapped to ma
Changed
am_view_asset_error meta capability to determine whether to display error messages related to asset enqueuing. am_view_asset_error is mapped to manage_options by default.am_symbol_is_registered for determining if a symbol is registered
Added
am_symbol_is_registered for determining if a symbol is registered (#41)Changed
Fixed
print_asset() no longer fails for local files on WP VIP environments (#40)Updates the requirements on mantle-framework/testkit to permit the latest version
mantle-framework/testkit to permit the latest version (#36)Asset_Manager::add_core_asset() (#37)get_svg() returns false for local files on WP VIP environments (#39)Adds support for registering SVG assets to be added to a template's sprite sheet, with methods for displaying those assets
Adds support for registering SVG assets to be added to a template's sprite sheet, with methods for displaying those assets
Nothing published for this version
No large changes since v0.1.3 other than switching the unit tests over to Mantle Teskit
Stable release 🎊
No large changes since v0.1.3 other than switching the unit tests over to Mantle Teskit
am_inline_stylesheet filter for inline stylesheets
Added
am_inline_stylesheet filter for inline stylesheetsCaching for am_asset_conditions
Added
am_asset_conditionsSupports include_any in the condition parameter for matching _any_ condition (#10, #19)
Added
include_any in the condition parameter for matching any condition (#10, #19)am_preload for preloading assets of any supported type (#16)Changed
Fixed
media attribute only if media exists (#7)in_footer is set (#8)loadCSS was being output for load_methods other than defer (3510e8c)Removed
am_enqueue_style with load_method => preload is no longer supported. For backward compatibility this configuration will patch in a call to am_preload and also sync enqueue the asset (127acbc)loadCSS preload polyfill is removed since it is no longer supported (5d820d9)Your coding agent can read these notes before it upgrades. Set up the MCP server →