zenstruck/version-bundle
Zenstruck Version Bundle exposes your Symfony application's version to services, Twig, and the console by reading it from composer.json, a VERSION file, or your Git tags, so you can display build and release info consistently.
/version endpoint so support and on-call can map a bug report to an exact build. This is the core decision it enables: "is this customer on the build that has the fix?"Adoption signal: 3 stars, 0 dependents, archived. Treat as a reference implementation, not a dependency.
Consider only if all of the following hold:
Look elsewhere if:
git describe output than by a runtime bundle.Cheapest viable alternative in most cases: inject a version constant at build time (from a git tag or CI variable) and expose it via a config value and a /version or /health endpoint. This is typically an afternoon of work, has no dependency risk, and works identically in Laravel and Symfony.
For executives (one paragraph): We evaluated zenstruck/version-bundle, a small library that displays an application's version inside a Symfony app. It solves a real but narrow problem — knowing which build is live — which helps support resolve tickets faster and helps incident response decide between rollback and hotfix. However, it is archived, has three stars and zero downstream users, and targets Symfony 2, a framework generation we do not run. Recommendation: do not adopt as a dependency. The capability is worth having; the package is not worth carrying. We can reproduce it in-house in roughly a day, with no maintenance or supply-chain exposure, and it will work for both our Laravel and any future Symfony services.
For engineering (the ask): This is a reference design, not a dependency. Port the concept, not the code: emit a version string at build time from the CI pipeline (git SHA + tag), store it in config, and expose it via an admin surface and a /version endpoint. Add the same value as a release tag in error tracking so alerts are version-scoped. Estimated effort: 0.5–1 day including tests. Skip entirely if our error tracker already reports release versions — in that case the marginal value is a UI convenience only.
Decision record: Adopt the pattern (build-time version stamping + /version endpoint), reject the package (archived, unmaintained, wrong framework generation, zero adoption). Revisit only if we inherit a Symfony 2 application where vendoring this file is faster than writing it.
How can I help you explore Laravel packages today?