WP Composer: A Faster Composer Repository for WordPress
For over a decade, WPackagist has been the default way to install WordPress plugins and themes with Composer. It worked, but it was slow — and earlier this month it was acquired by WP Engine, a private equity-backed company.
We’ve been building open source WordPress tools at Roots since 2011. Our roots/wordpress Composer package has nearly 20 million downloads, and a large portion of the modern WordPress Composer workflow already runs through Roots tooling. Building a Composer repository felt like a natural next step.
So we built WP Composer — an independent, open source Composer repository for WordPress plugins and themes.
Why it’s faster
WPackagist uses Composer’s older provider-includes protocol, which forces Composer to download large index files containing metadata for thousands of packages before it can resolve your dependencies.
WP Composer uses Composer v2’s metadata-url protocol, which lets Composer fetch metadata for only the packages it needs.
| Plugins | WP Composer | WPackagist | Speedup |
|---|---|---|---|
| 10 plugins | 0.7s | 12.3s | 17x faster |
| 20 plugins | 1.1s | 19.0s | 17x faster |
Cold resolve, no cache.
What else is different
- Update frequency — packages update every 5 minutes (WPackagist is ~1.5 hours)
- Package metadata — includes author, description, homepage, and support links (WPackagist has been missing these since a 2020 feature request)
- Cleaner naming —
wp-plugin/*andwp-theme/*instead ofwpackagist-plugin/* - CDN-cached — metadata is served from Cloudflare R2/CDN
- Fully open source — the entire project including deployment config is on GitHub
Switching
Replace the WPackagist repository in your composer.json:
{
"repositories": [
{
"type": "composer",
"url": "https://repo.wp-composer.com"
}
]
}
Then update your package names from wpackagist-plugin/* to wp-plugin/* and wpackagist-theme/* to wp-theme/*. There’s also a migration script in our GitHub repo that handles this automatically.
How it’s built
WP Composer is a single Go binary backed by SQLite. A pipeline runs every 5 minutes that discovers packages from the WordPress.org SVN repository, fetches metadata from the WordPress.org API, and builds Composer metadata files that get deployed to Cloudflare R2.
The project is community-funded through GitHub Sponsors.
Full comparison: WP Composer vs WPackagist