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

Feature Checker Bundle Laravel Package

lwiesel/feature-checker-bundle

A Symfony bundle for feature checking and toggles. Define features, evaluate them in services, controllers, and Twig templates, and enable or disable functionality per environment, user, or rollout without redeploying code. Supports configurable checks and gradual releases.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Despite the "Laravel/PHP" framing in the brief, this is a Symfony2 bundle, not a Laravel package. Its architecture is Symfony-specific: a bundle class, a DI extension with a configuration tree, a container-managed FeatureChecker service, and likely Twig/annotation integration. Laravel has no bundle/container-compiler equivalent, so there is no supported path to install or boot this in a Laravel application. Even inside Symfony, the bundle targets the 2.x kernel and service-definition format that were removed years ago. The concept — a config-driven boolean lookup with template helpers — is portable; the artifact is not.

Integration feasibility. Low. Composer constraints from a 2015 Symfony2-era package (PHP 5.x, symfony/symfony ~2.x) will fail resolution against Laravel 10/11/12 or Symfony 5–7. Forcing install with --ignore-platform-reqs yields runtime fatals on removed container and kernel APIs. There is no adapter layer worth writing for a package this small; a clean reimplementation of the interface is cheaper than a compatibility shim.

Technical risk. High, concentrated in provenance rather than complexity. Last release 2015-03-03, 13 stars, 0 dependents, no visible downstream validation, no maintainer activity, no security triage. The code is PHP 5-era and will not survive PHP 8 without patching. Because this package gates feature exposure, defects are high-blast-radius: an incorrect default can silently ship unfinished functionality or disable a working path. There is no evidence of tests, semantic versioning discipline, or a documented default behavior on missing flags.

Key questions.

  1. Is the actual stack Symfony or Laravel? If Laravel, this package is out of scope by definition.
  2. What are the required semantics — static on/off, per-user, per-tenant, percentage rollout, kill switch? A 2015 config-only checker almost certainly supports only the first.
  3. What is the required failure posture (fail-open vs fail-closed) for each flag class?
  4. Do we need an audit trail / change control for who flips flags in production?
  5. Is the requirement really feature flags, or is it entitlements/plan gating, which has different data-model needs?
  6. Who owns the fork if we extract code, and under what license hygiene (MIT permits it, but attribution and provenance must be recorded)?

Integration Approach

Stack fit. Treat this repository as a reference implementation, not a dependency. For a Laravel codebase, the first-party answer is Laravel Pennant (Laravel 10.31+), which gives a Feature facade, per-scope resolution, middleware, Blade directives, and an events hook — everything this bundle gestures at, with active maintenance. If the requirement extends to percentage rollouts and remote kill switches, evaluate Unleash, GrowthBook, or LaunchDarkly SDKs instead. For a Symfony codebase, use a maintained SDK or a thin in-house service; do not attempt to resurrect the bundle.

Migration path. There is no code migration, only concept migration. Read the bundle's README and source to extract the intended API surface — most likely isEnabled(string $feature): bool, a config block of features: { name: true|false }, and a template helper. Re-express that as: a FeatureChecker interface, a config-driven provider, a database/cache provider for dynamic flags, a Blade directive, and an optional HTTP middleware for route-level gating. Budget roughly 1–3 developer-days for the static version, 1–2 weeks if per-user/percentage targeting and an admin surface are in scope.

Compatibility. Assume PHP 8 incompatibility, absent type declarations, and Symfony 2 container semantics throughout. Any attempt to vendor the source requires a full modernization pass (types, deprecations, each()/create_function style constructs) plus dependency upgrades — at which point you have written a new package with inherited baggage.

Sequencing.

  1. Confirm stack (Laravel/Symfony) and flag semantics with the requesting team — one working session.
  2. Decide build-vs-adopt; default to Pennant or an SDK.
  3. One-day spike: define the FeatureChecker interface and default behavior for unknown flags; wire one real flag end-to-end behind a test.
  4. Implement provider abstraction (config → then DB/Redis) so the storage decision is deferred, not baked in.
  5. Add operational surface: admin toggle, audit log, and a flag registry with owners and expiry dates.
  6. Roll out one low-risk flag, measure, then expand.

Operational Impact

Maintenance. Upstream maintenance is zero — the project is effectively abandoned. Adopting or vendoring transfers full ownership to us, including PHP/Symfony upgrades and security patching. MIT licensing is permissive and low-risk legally, but the code becomes our liability the moment it ships. Recommend recording the provenance decision in the architecture log even if no code is copied.

Support. No community to escalate to: 13 stars and 0 dependents means no Stack Overflow corpus, no issue triage, and documentation limited to a README written for Symfony 2. Internal runbooks, a flag naming convention, and an ownership model are mandatory before production use. Developer ramp-up on the API itself is near-zero — the cost is governance, not learning curve.

Scaling. A static config lookup resolved once per request is effectively free and scales trivially. The risk appears when requirements grow into per-user or percentage targeting: that needs a persistent store, request-scoped caching, and cache-invalidation strategy on flag change. Naively hitting a database on every isEnabled() call in a hot path or loop is the classic performance failure here. Plan for resolving flags once per request into an in-memory map.

Failure modes.

  • Fail-open: a missing or malformed flag entry returns true, exposing unfinished features to users.
  • Fail-closed: the same condition returns false and disables a working feature, potentially causing an outage — the more dangerous default for revenue paths.
  • Compile-time breakage: in the Symfony original, malformed config fails container compilation; a port must decide whether config errors are boot-time or runtime.
  • Flag debt: flags with no expiry become permanent branches and untested code paths; without a cleanup cadence the toggle layer ossifies.
  • Silent divergence: no audit trail means a production toggle flip is untraceable during incident review.

Ramp-up. Two distinct curves. For developers: under an hour — the abstraction is a boolean lookup. For the organization: weeks — establishing naming, default behavior per flag class, review requirements for toggling user-facing features, and a monthly stale-flag cleanup. Fund the second curve explicitly, or the flag system becomes a source of incidents rather than a control.

Recommendation. Do not adopt this package. Its score, star count, dependent count, and 2015 release date all point to an abandoned artifact with no Laravel applicability. Harvest the design intent, implement the interface natively (Pennant for Laravel, an SDK or thin service for Symfony), and spend the saved integration effort on flag governance.

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