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 Flag Bundle Laravel Package

gracious/feature-flag-bundle

A Symfony bundle for managing feature flags in your application. Enable or disable features at runtime, roll out changes gradually, and control access without redeploying code. Integrates cleanly with existing Symfony services and configuration.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The published artifact is a Symfony bundle (Symfony 7/8, PHP 8.3+), not a Laravel package. It ships Symfony idioms: a bundle class, a DI extension, Twig integration, route-default checks, and a #[RequireFeature] attribute resolved by Symfony's argument resolver.
  • None of those integration points exist in Laravel: no service provider, no auto-discovery, no publishable config, no Blade directive, no facade. Laravel's container will not boot a Symfony bundle, so "install and use" is not a valid expectation.
  • The conceptual surface is framework-agnostic and small: config-driven flags with descriptions, a default manager plus named managers, per-process enable/disable/reset overrides, and optional read-only REST exposure. That logic could be ported or reimplemented, but the shipping package does not deliver it to a Laravel app.
  • Laravel's native answer for this capability is Pennant. Any Laravel-side adoption decision should be framed as "Pennant vs. a port of this bundle," not "adopt this bundle."

Integration feasibility

  • Direct composer require would install the code but deliver none of the advertised check paths in Laravel. This creates a false-positive integration: the dependency appears present, flags silently never evaluate.
  • Viable paths, in order of cost: (a) standardize on Laravel Pennant; (b) if the flag semantics here (named managers, per-process overrides) are specifically needed, scope a thin Laravel package that reuses the config shape and manager concept; (c) use the bundle as-is only if the estate actually contains Symfony 7/8 services.
  • The #[RequireFeature] attribute and Twig checks are the highest-friction items to reproduce — they depend on framework-level wiring, not on the flag manager itself.

Technical risk

  • Framework mismatch: high. This is the dominant risk and should be resolved before any engineering time is spent.
  • Pre-1.0 API instability: medium-high. A 0.1 initial release carries no semver stability guarantee; manager interfaces and config schema are likely to churn.
  • PHP 8.3 floor: low-medium. Acceptable for current Laravel 11/12 estates, blocking for older applications; needs a version-matrix check rather than an assumption.
  • Per-process overrides: medium. Overrides that live in process memory do not propagate across queue workers, Octane workers, or multiple app servers — behavior will diverge by process.
  • REST endpoint: medium. Read-only plus a kill switch is the right shape, but it is still new network surface requiring authn/authz decisions that the package does not make for you.

Key questions

  1. Is the target system actually Laravel, or is "Laravel/PHP" a mislabel on the intake? The release notes describe a Symfony bundle unambiguously.
  2. Do we have any Symfony 7/8 services that could consume this natively, or is the estate Laravel-only?
  3. Are we already using Pennant, and does this bundle offer anything Pennant does not (specifically named managers and per-process overrides)?
  4. Who owns the decision to enable the REST endpoint, and what is the default state (ideally disabled)?
  5. What is the maintainer's 1.0 timeline and backward-compatibility intent?

Integration Approach

Stack fit

  • Fits Symfony 7/8 on PHP 8.3+ only. Does not fit Laravel at any version without adaptation.
  • Twig-based checks have no Laravel equivalent (Blade); route-default checks assume Symfony routing; attribute checks assume Symfony's controller argument resolution.

Migration path

  • No prior assessment and no usage data — this is a greenfield decision, not a migration. There is no installed base to unwind, which keeps the cost of saying "no" low.
  • If the capability is needed in Laravel, the migration path is a port, not an adoption: preserve the config schema (flag name, description, default) and the manager abstraction, and replace the framework-coupled surfaces with a service provider, a Blade directive, and middleware.

Compatibility

  • Verify PHP 8.3+ against the target Laravel versions in use before anything else.
  • Confirm the bundle's Symfony constraint (7/8) does not conflict with the Symfony components Laravel already pins — a Composer resolution failure is the likely first symptom if attempted in a Laravel app.
  • No Laravel service provider means no package discovery, no config publishing, and no queue/Octane awareness.

Sequencing

  1. Resolve the framework question with the requesting team (one conversation, blocks everything else).
  2. If Symfony: pilot in a single non-critical service with the REST endpoint left disabled and overrides unused.
  3. If Laravel: run a one-page Pennant-vs-port comparison against the four advertised differentiators before writing code.
  4. Only after a pilot: define flag naming conventions, default-value policy, and cleanup/expiry rules — these matter more than the library choice.

Operational Impact

Maintenance

  • Pre-1.0 dependency; budget for breaking changes on minor version bumps and pin exact versions. Keep the flag surface small so a future swap to Pennant or a port is cheap.
  • Dependency footprint appears light, which limits supply-chain exposure — a genuine positive.

Support

  • Open-source, no implied vendor support or SLA. Maintainer count and activity are unknown from the release notes and should be checked before committing to it as a platform primitive.
  • Flag systems become load-bearing: once product code branches on a flag, removing the library is a codebase-wide change. Treat it as infrastructure, not a utility.

Scaling

  • Config-driven evaluation is cheap; the default manager plus named managers scales fine for typical flag counts.
  • Per-process overrides do not scale to multi-worker or Octane deployments — they are a local debugging affordance, not a control plane. If the intent is runtime flag changes in production, this bundle plus a read-only REST endpoint is not that system.
  • Named managers are useful for isolating flag groups by domain (e.g., release flags vs. entitlement flags) and are worth preserving in any port.

Failure modes

  • Silent no-op: in Laravel, flags never evaluate and features stay at default with no error — the worst failure mode for a flag system, because it looks like it works.
  • Undefined default: a check for a missing flag needs a documented default; inconsistent defaults across services cause split-brain rollouts.
  • Override drift: per-process overrides create environments where two workers disagree, producing non-reproducible bugs.
  • Endpoint exposure: the kill switch must be verified as operationally reachable and tested, not merely documented.
  • Stale flags: no expiry mechanism means flags accumulate into permanent dead branches; this is a process failure the package does not solve.

Ramp-up

  • Near zero for a Laravel-only team: Symfony bundle conventions, Twig, and DI tags are not transferable knowledge, so any real work becomes a port project with its own learning curve.
  • For a Symfony team, ramp-up is a few hours — the API is deliberately small, and PHP-service and route-default checks are the fastest entry points.
  • Recommend a single owner for flag hygiene (naming, defaults, removal) regardless of which library is chosen; that role matters more than the package decision.
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.
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
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