Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Api Version Control Laravel Package

reindert-vetter/api-version-control

Laravel package for clean API versioning with version-specific controllers and routes. It detects the requested version from headers or URIs and dispatches requests accordingly, helping maintain backward-compatible endpoints without cluttering your application.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • API lifecycle strategy: The package makes versioning a first-class, configurable concern (URI/header/query-string version detection, per-version route files, versioned controllers) rather than an ad-hoc convention. That directly informs the decision of when and how to ship a v2 without breaking existing integrations.
  • Deprecation and sunset policy (customer-facing commitment): Its support for deprecation/sunset signalling lets you attach a real timeline to a public API contract — a product decision about customer communication, not just an engineering detail. Patch 2.3.3 itself is a maintenance release and changes none of this, but the underlying capability is what supports SLA/contract language.
  • Build vs. buy: The alternative is hand-rolling middleware + route groups + header parsing (roughly a sprint of work plus permanent maintenance) or leaning on Laravel's plain route prefixes. This package is small and single-purpose, so "buy" is cheap — the real cost is the constraint it places on your routing conventions.
  • Roadmap sequencing: If a breaking API change is on the roadmap, adopting versioning infrastructure before the breaking change is a prerequisite, not a parallel workstream. This is the trigger to evaluate now rather than later.
  • Use cases where it earns its place: Public/partner APIs with external consumers you cannot coordinate deploys with; mobile clients with long tail-of-update lag; multi-tenant platforms where different customers contract to different API generations.

When to Consider This Package

Adopt when:

  • You have external consumers (partners, mobile apps, customer integrations) that cannot be migrated in lockstep with your releases.
  • You need parallel version coexistence — v1 and v2 serving traffic simultaneously from one codebase.
  • You want negotiated deprecation (headers telling clients a version is going away) rather than an email and a hope.
  • Your team is Laravel-native and would rather configure than build routing/versioning infrastructure.

Look elsewhere when:

  • Your API is internal-only and all consumers deploy with you — versioning ceremony is pure overhead; plain route prefixes or additive-only changes are enough.
  • You need semantic diffing or contract testing (OpenAPI/schema-based compatibility checks) — this is a routing/versioning layer, not a contract-governance tool.
  • You expect GraphQL or event-driven interfaces — versioning semantics differ; this package's model won't map cleanly.
  • Maintenance risk matters more than convenience: confirm release cadence, Laravel version support, and issue responsiveness before committing. Note: release 2.3.3 ships with no changelog beyond a diff link — treat patch releases here as low-signal and verify upgrade safety via the diff or test suite rather than release notes.

How to Pitch It (Stakeholders)

To executives: This is a small, low-cost dependency that lets us change our API without breaking customers. It converts "we'd like to modernise the API but can't risk it" into a schedulable roadmap item, and gives us a defensible way to communicate end-of-life dates to partners. Cost is a package dependency and a routing convention; the payoff is the ability to ship breaking changes on our timetable instead of our slowest customer's.

To engineering: It replaces hand-rolled version-detection middleware and duplicated route registration with a maintained, config-driven package. You declare versioned route files and controllers; the package handles resolution via URI, header, or query parameter and exposes deprecation metadata. Low integration surface, easy to remove later.

Caveat to state plainly to both: version 2.3.3 is a maintenance release with no substantive changelog. It doesn't change the recommendation — but it's a reminder to pin the version, review diffs on upgrade, and confirm the package's Laravel support matrix against our target version before we standardise on it.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
adachsoft/php-code-style