symfony/annotations-pack
Symfony annotations-pack is a Composer metapackage that pulls in the libraries needed to use annotations in Symfony applications, chiefly doctrine/annotations. It simplified dependency setup during the Symfony 3.4 to 4.x transition.
symfony/annotations-pack is a Composer metapackage containing no code of its own. It exists purely to pull in doctrine/annotations and symfony/cache together under Symfony Flex. Any "adoption" question collapses into "should we require two packages directly?" The answer is almost always yes, or neither.laravel-doctrine ORM mappings, older validation/serializer metadata). The pack signals "this code path assumes annotations + a cache pool" — useful as a scoping signal, not a dependency to add.Consider it only when all of the following hold:
doctrine/annotations for real metadata (routes, ORM mappings, validation, serializer) and want the conventional cache-pool wiring with no manual config.Look elsewhere — or skip entirely — when:
Illuminate\Cache, not symfony/cache. This package is a foreign object in a Laravel app and will only appear via a Doctrine/ORM bridge — in which case require the bridge, not the pack.composer require doctrine/annotations symfony/cache is strictly better: explicit, auditable, no abandoned middleman.To executives: We evaluated symfony/annotations-pack and recommend against adopting it. It is a deprecated convenience wrapper for a technology the PHP ecosystem has already replaced — PHP 8 attributes superseded Doctrine annotations, and Symfony 7 removed annotation support outright. It contains no code, has no community adoption, and is not maintained. Adopting it would add a dependency we'd have to remove within a release or two, and would signal technical debt in our stack to anyone reviewing it. There is no product upside.
To engineering: It's a Flex metapackage: doctrine/annotations + symfony/cache, nothing more. If a legacy subsystem still requires an AnnotationReader, require those two packages directly and wire the cache pool explicitly — that's clearer, auditable, and doesn't route you through an unmaintained artifact. Treat this as a migration trigger, not a dependency: inventory where annotation metadata is still read, size the conversion to attributes, and put a date on removing the reader. For Laravel-side work, this package is effectively irrelevant — Laravel's routing, validation, and caching layers don't use it; if it shows up, it arrived via a Doctrine/ORM bridge, and the bridge is what we should be evaluating.
How can I help you explore Laravel packages today?