roots/bedrock-autoloader
Bedrock Autoloader bridges Composer and Bedrock-based WordPress installs, letting plugins installed via Composer be autoloaded instead of manually managed, keeping dependencies declarative and deployments simpler.
Roots\Bedrock\Autoloader\Autoloader) is exactly the kind of primitive a platform team wants to depend on when offering a curated plugin catalog to customers.Adopt when:
Look elsewhere when:
Bedrock\Autoloader or legacy namespace) and the migration cost outweighs the new API's testability gains.Executive summary: This is the Roots team's official v2.0.0-beta.1 of bedrock-autoloader, the component that lets Composer-managed WordPress sites (Bedrock) treat standard plugins as guaranteed-load mu-plugins. The release modernizes the codebase — PHP 8.2+ requirement, a clean Roots\Bedrock\Autoloader namespace, side-effect-free construction with an injected mu-plugin path, a fix for global variable scoping in autoloaded mu-plugins, and new end-to-end tests — which materially improves testability and reliability. It is a breaking release: the namespace and constructor signature change, so any in-house code touching the autoloader must be updated, and PHP 8.2 becomes a hard floor.
Engineering summary: v2.0.0-beta.1 makes the Autoloader instantiable without side effects (new Autoloader($muPluginDir)), moves boot into an explicit boot() / markLoaded() flow, and ships the canonical mu-plugins/bedrock-autoloader.php shim that guards on is_blog_installed() and class_exists. The scope fix (#44) and e2e tests (#45) close a real correctness gap for autoloaded plugins that rely on globals. Adopt only on Bedrock deployments on PHP 8.2+; plan the namespace migration as part of the upgrade, and treat the beta as a pre-GA signal rather than a drop-in for conservative production fleets.
Decision framing for PMs: Treat this as a go/no-go input on Bedrock as a supported platform tier and on your PHP 8.2 minimum. It is a build-vs-buy "buy" on a well-scoped primitive that would otherwise be bespoke agency glue code. The beta status means the decision today is "start migration planning and pilot on non-critical sites," not "flip the switch on the flagship product."
How can I help you explore Laravel packages today?