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

Subscription Bundle Laravel Package

terox/subscription-bundle

Terox Subscription Bundle provides subscription and plan management for PHP applications, including configurable plans, lifecycle handling, and integration points for recurring billing and payment workflows. Add paid memberships or SaaS-style access control with minimal setup.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What changed in 0.2.0 — and why it matters more than it looks. The release adds an owner parameter to ManagerSubscription::create(), adds a UserInterface parameter to findByProduct(), and introduces findById(). Read as product signals rather than changelog lines, these say three things:

  1. The package is not abandoned — it is churning. A release after a multi-year silence is better than silence, but the substance is a breaking change to the two most-used entry points. This is a data-model correction (subscriptions previously had no explicit owner; now they do), shipped without a deprecation cycle, without a migration guide, and without a major version bump — permissible under 0.x semver, but 0.x is also an explicit statement that interfaces are not stable. Adopting now means adopting a moving target.
  2. The User coupling risk is now confirmed, not hypothetical. UserInterface is threaded through the manager and repository signatures. The bundle has an opinion about our identity model, and it is now a compile-time dependency of the core API rather than an implementation detail we might work around.
  3. The schema is still in flux. Adding an owner to a subscription record is exactly the class of change that is trivial pre-launch and a multi-week backfill post-launch. The fact that it landed after 2018 tells us the model was under-specified for years and is being corrected reactively. The schema we would inherit is not settled.

Architecture fit. Unchanged in substance: this is a Symfony bundle, not a Laravel package, and the domain fit (plans, subscriptions, user linkage, entitlement gating) remains real. The 0.2.0 additions slightly improve the model — per-user ownership and ID lookup are genuinely necessary — but they also demonstrate that the bundle is still discovering its own domain shape. For a TPM, that is the decisive framing: we are not inheriting a design, we are inheriting a design in progress for a money-adjacent concern.

Integration feasibility. Still low, and now with an added dimension. The pre-existing blockers stand — last functional release in 2018, Symfony 3.3/4+ target, near-certain PHP 8 incompatibility, 11 stars, 0 dependents. What 0.2.0 adds is integration churn risk: any seam we build against ManagerSubscription::create() or findByProduct() is a seam that has already moved once, with no advance notice, and could move again. The release notes are silent on PHP version support, Symfony version support, and test/CI status. A release that changes public signatures but says nothing about platform compatibility is a release that cannot be evaluated for compatibility — which is itself an answer.

Technical risk. High, with the ranking shifted:

  1. Abandonment → replaced by interface instability. The package is alive, but unstable. For a schema-bearing dependency, "actively changing under 0.x" is arguably worse than "frozen," because frozen code can be forked and forgotten whereas churning code must be re-rebased.
  2. Schema lock-in, now evidenced. The subscription record gained an owner field mid-life. Whatever we build on top inherits a model that is still being amended.
  3. Identity-model coupling (confirmed). UserInterface in the public API means our User entity must satisfy their contract or be adapted at every call site.
  4. Correctness risk in a money-adjacent domain. Unchanged. No visible test suite, no published failure modes, and no evidence that the new owner/ID paths are covered.
  5. Supply-chain hygiene. Still unmaintained-by-anyone-we-can-escalate-to, still flagged by security scanning.

Key questions (revised — the old list still applies, these are the new ones):

  1. Is 0.2.0 a one-off burst or the start of a cadence? One release after five years is not a maintenance commitment; it is a data point.
  2. Does 0.2.0 change the supported PHP/Symfony matrix? The notes do not say. Assume not until proven.
  3. Does the owner model match ours — single owner per subscription, or do we need seat/organization semantics? create($product, $user) implies exactly one owner, and no more.
  4. What did 0.1.x consumers do to migrate? If the answer is "there were none," that is confirmation that nobody has exercised this upgrade path but us.
  5. Are we prepared to absorb a third breaking change during our build, without warning and without a migration note? That is now the base case, not the tail case.

Integration Approach

Stack fit. Unchanged: wrong framework for Laravel, conditional and fork-only for Symfony. 0.2.0 does not alter this and should not be read as a reason to revisit it.

If we proceed (Symfony only), the approach shifts. 0.2.0 argues more strongly for the "reference implementation, not dependency" posture:

  1. Spike, still 2–3 days. Install 0.2.0 on a throwaway branch at our target PHP/Symfony version. The spike now has a second question attached: does the owner/UserInterface model match our identity layer? Record both answers.
  2. Extract the model, not the code. Plan, Subscription (with explicit owner), SubscriptionFeature, transitions. The 0.2.0 owner field is a useful prompt — it tells us the shape we would likely converge on anyway, in about a day.
  3. Adapter boundary, unchanged and non-negotiable. SubscriptionService / EntitlementResolver in-house; the bundle is never called from a controller. 0.2.0 is the argument for this seam, not against it.
  4. Pin everything and vendor the fork privately. Adding UserInterface to two public signatures with no deprecation path means we should assume the next release breaks us too.

Compatibility and sequencing. Unchanged and reinforced: pin PHP, Doctrine, and Symfony; vendor in-house; decide in the first sprint. Do not let product discovery build on an unverified dependency — and specifically, do not build on 0.2.0 signatures, because the release history says they are provisional.

Migration path. Still "backfill nothing" if adopted at greenfield — that remains the one genuine advantage. Note that 0.2.0 would have imposed a backfill on anyone who adopted 0.1.x; the fact that we would not need one is luck of timing, not a property of the package.

Operational Impact

Maintenance. The headline shift. The bundle is no longer "abandoned," so the pure-CVE-response argument softens slightly — someone pushed a commit. But the maintenance burden for us is unchanged or worse: we still own the fork (upstream will not take our patches), and we now also own rebase risk. Each upstream release is a potential breaking change we must either absorb into the fork or diverge from. Keep the 5–15 engineering days/year estimate; add an unbudgeted allowance for rebase events, which arrive without notice.

Support. Still effectively nil — 11 stars, 0 dependents, no community corpus, no Stack Overflow history. 0.2.0 does not change this and does provide a small negative signal: the release notes are typo-laden, describe the change as "centrated in clean and stabilice," and offer a three-bullet breaking-change list with no migration guidance. That is the documentation quality we should expect to rely on during an incident.

Scaling. Unchanged and still unproven. The new findById() and the user-scoped findByProduct() are the reads that will sit on hot paths (per-request entitlement checks); neither has known index or caching behavior. Load-test the entitlement path early.

Failure modes, ranked (revised).

  1. Silent correctness drift — timezone, proration, boundary dates. Unchanged, still the worst mode.
  2. Interface churn breaking our seam — 0.2.0 is proof this happens. A mid-build breaking change costs a sprint; a post-launch one costs an incident.
  3. Identity-model mismatch — UserInterface is now baked into the public surface; if our User diverges, every call site pays an adaptation tax.
  4. Upgrade dead-end — unchanged; the org's PHP/Symfony upgrade is still blocked by this package.
  5. Entitlement bypass — unchanged; inconsistent enforcement remains a monetization leak.
  6. Fork rot — now more likely, because the fork must track a moving upstream rather than a static one.

Ramp-up. Shallow, still undocumented. Comprehension is a day or two for a competent Symfony engineer; the risk remains false confidence. 0.2.0 adds a specific trap: any tutorial, blog post, or LLM-generated example for this package almost certainly targets the 0.1.x signatures and will not compile. Budget for that confusion explicitly.

TPM recommendation — revised language, same direction. On the stated Laravel framing: reject outright, unchanged. On a Symfony framing: reject as a dependency; consider as a design reference. The 0.2.0 release moves this from "an abandoned package" to "an unstable package," which is a different risk profile but not a better one — for a schema-bearing, revenue-adjacent component, an owner who ships breaking changes without notice is not obviously preferable to no owner at all. The native alternative (~2–4 engineer-weeks for Plan, Subscription with owner, Entitlement, and a transition service) delivers an asset we own, can upgrade on our schedule, and can support. Recommend closing the spike at two days and defaulting to the native build. The failure mode to avoid is unchanged and now better evidenced: this package may work well enough in a demo to get adopted, and then become an unowned, churning, unupgradeable component underneath the company's revenue logic.

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.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console