codinglabsau/laravel-feature-flags
A Laravel package for database-backed feature flags. Define flags, enable or disable them globally or for individual users, and check their status in controllers, Blade templates, and middleware through a simple, expressive API.
Architecture fit. codinglabsau/laravel-feature-flags is a first-party-style Laravel package that slots into the framework's existing service-provider and facade conventions rather than introducing a parallel abstraction. It is a conventional composer-installed library: a service provider, a facade, a config file, and (typically) a migration for a features table. For a Laravel monolith or a small number of Laravel services, this is a low-ceremony fit. It is a poor fit for polyglot estates where flag evaluation must be consistent across non-PHP runtimes — this package is PHP/Laravel-only and would need a separate SDK or a remote-evaluation service to reach other stacks.
Integration feasibility. High for a standard Laravel app. The expected path is composer require, publish config and migrations, run migrations, and optionally register the facade alias. The v1.6.1 release is directly relevant here: it corrects the FeatureFlag facade alias, which was pointing at a nonexistent plural class. That means any team that followed the documented alias registration on v1.6.0 would have hit a class-not-found error on first use of the alias — a first-run integration failure, not a runtime edge case.
Technical risk. Mostly low, with two caveats. First, the package is small and single-maintainer (@stevethomas / codinglabsau), so bus factor and long-term maintenance are the dominant risks, not code complexity. Second, the nature of the v1.6.1 bug is a signal about release hygiene: a facade alias pointing at a nonexistent class is the kind of defect that a smoke test exercising the facade would have caught. The fact that it shipped in v1.6.0 and required a patch suggests thin integration-level test coverage. That is not disqualifying for a flag library, but it argues for pinning versions and validating in a staging environment before production rollout.
Key questions.
Stack fit. Requires Laravel (and therefore PHP) with composer. It assumes Eloquent for persistence and the Laravel cache for evaluation performance. It will not fit a non-Laravel PHP service without pulling in the framework's container and database layer, and it will not fit a non-PHP service at all. Confirm the supported Laravel/PHP version matrix against our current runtime before committing.
Migration path. There is no migration from an incumbent system implied by this release — v1.6.1 is a one-line alias fix, not a feature or API change. Adoption is additive: install, publish, migrate, and begin reading flags behind a thin internal wrapper (e.g. an application-level Flags service) rather than calling the facade directly throughout the codebase. That wrapper is the important decision — it insulates application code from the package's API and from a future swap to a hosted provider if requirements outgrow this library.
Compatibility. The patch is backward compatible; it repairs a broken alias rather than renaming a working one. Teams already on v1.6.0 that worked around the bug by referencing the class directly, or that never registered the alias, will see no behavioral change. Teams that registered the broken alias will start working after upgrade, which is the intended outcome. No config or schema changes are indicated.
Sequencing.
^1.6.1 explicitly — do not allow v1.6.0 to be resolved by a loose constraint, since that version's alias is broken.Maintenance. Low ongoing effort but non-zero ownership. The package is small, so the real maintenance task is tracking Laravel major-version support and PHP version bumps. Because the maintainer pool appears to be one person, assign a named internal owner and budget for the possibility of forking or vendoring. Treat the dependency as "acceptable but not strategic."
Support. Upstream support is community/volunteer. Escalation paths are GitHub issues only. The v1.6.1 fix landing as a prompt patch after v1.6.0 is a mildly positive signal about responsiveness, but the defect itself indicates limited pre-release testing of the integration surface. Do not plan on vendor SLAs.
Scaling. Two dimensions matter. Evaluation throughput depends on whether reads are cached; if every flag check hits the database, high-traffic request paths will feel it, and the wrapper should memoize per-request. Flag-store size and rule complexity depend on whether targeting rules exist; simple boolean flags scale trivially, complex percentage rollouts over large user bases need the evaluation path benchmarked. Also consider multi-service consistency: if several Laravel services read the same table, schema and semantics must be coordinated.
Failure modes.
Ramp-up. A Laravel developer can be productive in well under a day: the concepts (facade, config, migration) are entirely conventional and the API surface is small. The learning cost is not in the package but in the operational discipline around it — default-value semantics, cache propagation, flag lifecycle and cleanup of dead flags. Budget the real effort there, and keep the internal wrapper thin enough that a future provider swap is a contained change rather than a codebase-wide refactor.
How can I help you explore Laravel packages today?