timeinc/swagger-bundle
A Symfony bundle that generates Swagger/OpenAPI documentation for your REST API from PHP annotations, keeping interactive specifications in sync with your code and making it easy to expose and maintain API docs alongside your application.
Architecture fit — mismatch, and it's fundamental. The request frames this as a Laravel/PHP package, but timeinc/swagger-bundle is a Symfony bundle, not a Laravel package. Its entire value-add is Symfony glue: a Bundle subclass, a DependencyInjection/Extension for the config tree, compiler passes, and service wiring. Laravel has no bundle registration mechanism, no Kernel::registerBundles(), and no config-tree extension contract. The underlying engine — zircote/swagger-php — is framework-agnostic, which means the only part of this package that would be useful in Laravel is the part that isn't portable. We would be installing a package we cannot boot in order to reimplement it.
Integration feasibility — low. There is no Composer path here that produces working software in a Laravel app. Realistic options are (a) install and manually replicate the bundle's service definitions in a Laravel service provider — brittle and pointless, since the bundle logic is thin config passthrough to swagger-php; or (b) skip the bundle and use swagger-php directly. Option (b) is strictly better and is where I'd land.
Technical risk — high on every axis.
Key questions to resolve before any decision:
Stack fit — none as-is. Recommended replacements, in preference order:
zircote/swagger-php (^4 or ^5) invoked directly from an Artisan command. Same engine the bundle wraps, zero framework lock-in, actively maintained. This is the closest like-for-like.darkaonline/l5-swagger if the team wants a Laravel-native wrapper plus a bundled Swagger UI route and published config. Fastest path to parity with what the bundle would have provided in Symfony.dedoc/scramble if attribute authoring is unattractive and code-first inference is acceptable — significantly lower annotation-drift risk.knuckleswtf/scribe if the primary audience is humans reading docs rather than machines consuming a spec.Migration path. With zero dependents, there is almost certainly no existing consumer to migrate — treat this as greenfield, not migration. If a team has copied patterns from the bundle, the work is: lift the scan paths and output config out of the bundle's YAML/PHP config into a plain config file or command signature; re-pin swagger-php to a current major; convert @OA\ annotations to #[OA\ PHP attributes (the breaking change introduced in swagger-php 4, and the single largest line-item of effort); drop all Symfony service definitions.
Compatibility targets. PHP ≥ 8.1, swagger-php ^4/^5, Laravel 10/11. The bundle cannot reach these constraints; the underlying library can.
Sequencing.
timeinc/swagger-bundle so it isn't reintroduced later.Maintenance. Zero upstream cadence. No CVE response path. Adopting this package converts a dependency into an owned fork — the cost isn't installation, it's indefinite custodianship of dead code. The maintained alternatives carry none of that.
Support. No community, no dependents, no Stack Overflow surface, no realistic path to external help. Bus factor is effectively zero. Any engineer hitting an edge case is on their own against an unmaintained codebase.
Scaling. Spec generation itself scales acceptably as a build-time artifact and should be treated that way — generate in CI, publish the artifact, avoid generating per-request. The real scaling risk is organizational: on a large API surface, attribute-based specs drift from implementation unless contract tests enforce agreement. Plan for the spec to become a reviewed artifact with an owner, not a build byproduct nobody reads.
Failure modes, ranked by likelihood.
Ramp-up. Negligible for the bundle itself, since we're not adopting it. Engineers still need OpenAPI literacy and swagger-php attribute syntax, which is the real onboarding cost regardless of tooling choice. Budget a half-day spike to confirm the mismatch and roughly one to two engineer-days to stand up swagger-php directly with a CI drift gate — an order of magnitude less than the ongoing cost of owning an abandoned bundle.
Recommendation: reject the dependency. The framework mismatch is disqualifying on its own, and the abandonment signals make the residual value negative. Pursue swagger-php directly or a maintained Laravel-native alternative; the decision is which authoring model the team will sustain, not whether to use this package.
How can I help you explore Laravel packages today?