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

Flagception Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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.

  • Provenance: 2 stars, 0 dependents, and a publisher namespace (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.
  • Drift: no evidence of tracking upstream releases; Symfony minor versions routinely change bundle-facing contracts (attribute autoconfiguration, Extension signatures, cache warmer APIs), so this fork will rot quietly.
  • Semantics: feature-flag correctness is subtle — fail-open vs fail-closed behavior, context resolution order, and activator precedence all determine whether a bad config ships a broken feature or silently hides one. An unaudited fork makes those semantics unverified.
  • Licensing is clean (MIT), which is the one low-risk dimension.

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?

Integration Approach

Stack fit. Match the tool to the framework, not the other way around:

  • Laravel target: Laravel Pennant is the correct primitive. It is first-party, uses the existing cache/database stores, exposes Feature::active() and Blade/AI helpers, and needs no container surgery. Nothing in this bundle is unavailable in Pennant for typical rollout use cases.
  • Framework-agnostic PHP service: depend on flagception/flagception directly and construct the manager in a thin bootstrap. This is the only scenario where the library's design genuinely fits.
  • Symfony service (legacy or shared codebase): use upstream flagception/flagception-bundle, not this fork.
  • Laravel + existing Symfony flags: treat it as a translation problem, not an integration problem.

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.

  1. Confirm the requirement and the framework target; if Laravel, stop and evaluate Pennant.
  2. Diff this fork against upstream flagception/flagception-bundle; if the diff is cosmetic, pin upstream instead.
  3. If a decision to proceed survives, spike a single flag end-to-end behind a feature branch, with a written fail-open/fail-closed decision.
  4. Only then build the provider shim — and treat it as internal code your team owns, with tests, not as third-party integration.

Operational Impact

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:

  • Silent misconfiguration — an unresolvable context or malformed constraint returns a default, and the feature is simply off (or on) with no error. Choose and document the default deliberately.
  • Container-time failure — a missing class or bad compiler-pass ordering breaks boot, not a single flag. On Laravel this surfaces as an opaque service-provider exception.
  • Stale flags — no lifecycle tooling means dead flags accumulate and become permanent, unowned branches in the code.
  • Supply-chain — an unmaintained fork is a soft target; pin to an exact commit and vendor if it stays.

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.

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.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle