symfgenus/flagception-bundle
Symfony bundle integrating the Flagception feature-flag library. Toggle features via annotations, Twig, or service calls, with activators like cookie, session, environment, database, and expression-based rules for gradual rollouts and A/B testing.
Architecture fit — this is not a Laravel package. symfgenus/flagception-bundle is a Symfony bundle wrapping the flagception/flagception feature-flag library. It ships a Bundle subclass, a DI Extension, compiler passes, and cache warmers — all contracts that Laravel's service container does not implement. The underlying core library (context resolution, feature manager, activators, providers) is reasonably framework-agnostic, but the bundle layer is the Symfony glue, and that is precisely the part that carries no value in a Laravel application. Adopting this means either (a) shimming Symfony's Bundle/Extension/ContainerBuilder interfaces into a Laravel service provider, or (b) bypassing the bundle entirely and wiring the core library by hand — at which point you are not using this package at all.
Integration feasibility. Technically possible, practically unrewarding. Laravel apps routinely co-install symfony/* components (several Illuminate packages already depend on them), so Composer resolution is unlikely to hard-fail. But bundle auto-discovery, compiler-pass ordering, and container-time flag resolution have no Laravel analogue; every one of those becomes bespoke code. The core library's YAML/array config providers and ExpressionLanguage-based activators would need to be re-expressed as Laravel config files and evaluated outside the compiled-container lifecycle. That is a small but real engineering project whose output is a homegrown package, not a dependency.
Technical risk.
symfgenus) that suggests a rebrand of the upstream flagception/flagception-bundle. Unverified forks carry supply-chain and abandonment risk and typically receive no CVE monitoring.Extension signatures, cache warmer APIs), so this fork will rot quietly.Key questions for the team. What is the actual requirement — runtime toggles, gradual rollout, kill switches, or A/B targeting? Does this fork differ materially from upstream, and if so, why not depend on upstream? Who owns the fork, and what is the commitment to track Symfony/PHP releases? If the target is Laravel, why not Laravel Pennant (first-party, scopes + lottery, when/unless helpers) or an Unleash/LaunchDarkly SDK? Is the underlying backend config-file only, or does it need a database/remote provider, and does that provider exist here or need building?
Stack fit. Match the tool to the framework, not the other way around:
Feature::active() and Blade/AI helpers, and needs no container surgery. Nothing in this bundle is unavailable in Pennant for typical rollout use cases.flagception/flagception directly and construct the manager in a thin bootstrap. This is the only scenario where the library's design genuinely fits.flagception/flagception-bundle, not this fork.Migration path. If flags already live in a Symfony service and the work is moving to Laravel, do not port the bundle. Enumerate flags, classify each as kill-switch / release / experiment / permission, and re-express only the categories Pennant handles well. Flagception's context-and-activator model maps unevenly onto Pennant's scope model — context becomes scope, activators become resolver closures, and expression-language constraints become ordinary PHP predicates. Budget for rewriting constraint logic rather than translating it.
Compatibility. PHP constraint is undocumented in the package metadata; assume it lags current PHP 8.x minors until proven otherwise. Symfony component versions pulled transitively may conflict with Illuminate's pinned ranges. Verify with a throwaway composer require against a copy of the real composer.lock before any design work — a resolution failure here ends the conversation cheaply.
Sequencing.
flagception/flagception-bundle; if the diff is cosmetic, pin upstream instead.Maintenance. The realistic steady state is that your team maintains a private wrapper. With 2 stars and 0 dependents there is no contributor base to absorb Symfony upgrades, so every PHP or Symfony bump is your ticket. Contrast with Pennant, which moves with Laravel's release cadence and is covered by the framework's own upgrade guides.
Support. No meaningful documentation, issue history, or response expectation. Escalation path is reading source. For a component that gates production behavior, that is a poor support posture regardless of how small the code is.
Scaling. Flag evaluation itself is cheap — the cost is in the resolution model. Symfony bundles resolve and compile at container build time; Laravel resolves per request. Flag values that are "baked in" at compile time cannot be flipped without a deploy, which is usually the opposite of why teams adopt feature flags. If flags must change at runtime you will need a cache-backed or remote provider, and that provider is likely not implemented in this fork. Plan for cache invalidation, propagation delay across instances, and per-request evaluation cost on hot paths.
Failure modes. The ones that bite in production:
Ramp-up. A Laravel team will pay a real learning tax here: bundle conventions, compiler passes, DI extension loading, and the ExpressionLanguage activator model are all outside their normal vocabulary. Estimate days, not hours, before a mid-level engineer can debug a flag that "isn't working" without help. Weigh that against an afternoon with Pennant's documentation.
Recommendation. Do not adopt this package for a Laravel codebase. If the framework target is Laravel, use Pennant; if it is framework-agnostic PHP, depend on flagception/flagception core directly; if it is Symfony, use the upstream bundle. This fork's only defensible role is as a pinned, vendored reference if a specific upstream patch is required — and even then, document why and who owns it.
How can I help you explore Laravel packages today?