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

novaway/feature-flag-bundle

Novaway FeatureFlagBundle is a Symfony bundle for defining and toggling feature flags via configuration, annotations, and Twig. It supports strategy-based activation, gradual rollouts, and safer releases without redeploying.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. novaway/feature-flag-bundle is a Symfony bundle, not a Laravel package — the first thing to resolve before this goes on any backlog. It ships a FeatureFlagManager service and a Twig helper around a YAML/PHP configuration file, following the "KISS" premise in its description. That design assumes a Symfony DI container and bundle registration lifecycle. Our stack is Laravel, so the bundle's wiring (extension classes, service definitions, compiler passes) is inert outside Symfony; only the underlying PHP classes could be reused, and even then only by manually binding them into Laravel's container. Architecture fit for a Laravel application is therefore low-to-moderate: the concept fits, the package does not.

Integration feasibility. If the target is a Symfony service, integration is trivial — install, register the bundle, define flags in config, inject the manager. If the target is Laravel, expect to write an adapter: a service provider that constructs the manager from config/feature_flags.php, plus a Blade directive mirroring the Twig function. That is a day of work, not weeks, but it is work we own forever and that upstream will never test. A framework-native option (Laravel Pennant for simple cases, Unleash or LaunchDarkly for targeting and audit) removes that tax.

Technical risk. The dominant risk is the configuration-driven model itself. Flags defined in a versioned config file require a deploy to flip, which negates the primary operational value of feature flagging: decoupling release from deploy, and instant kill switches during an incident. Secondary risks: 25 stars and zero dependents is a very weak adoption signal, meaning no community safety net and effectively no signal that the edge cases we hit have been hit before; a single-maintainer project carries bus-factor risk. Mitigating factors: MIT license, an actively recent release (Nov 2025), and a small, auditable codebase — forking or vendoring is genuinely cheap here.

Key questions.

  • Is the consuming application Symfony or Laravel? This alone decides build-vs-adopt.
  • Do we need runtime toggling without a deploy, percentage rollouts, or per-user targeting? If yes, this package is the wrong shape.
  • Who is the maintainer, and what is the release cadence over the last 12 months versus this single recent tag?
  • Does the flag state need to be auditable (who flipped what, when) for compliance or incident review?
  • Are we willing to own a fork, and is the license/CI setup permissive enough to do so cleanly?
  • What is the cost of the alternative? Pennant is free and in-framework; commercial tools cost money but eliminate maintenance.

Integration Approach

Stack fit. Treat this as "adopt only in a Symfony context, otherwise borrow the pattern, not the package." The abstraction is thin enough that reimplementing it in Laravel — a config file, a manager class with isEnabled(), a Blade directive, and a cache layer — is perhaps 150 lines and fully under our control. That is a better outcome than an adapter shim around a bundle whose lifecycle we do not participate in.

Migration path. If we adopt for Symfony: composer require, register the bundle in bundles.php, publish/author the flag config, replace any hardcoded booleans or ad-hoc env() checks with manager calls, and add a Twig extension usage where templates branch on features. If we are on Laravel: skip adoption; stand up Laravel Pennant for simple boolean flags, and only escalate to a hosted provider when targeting rules or audit become requirements. If we already have scattered if (config('features.x')) checks, the migration is mechanical regardless of which backend wins — the interface is the same shape.

Compatibility. Verify the PHP constraint against our runtime (8.1/8.2/8.3) and, for the Symfony path, confirm the supported Symfony major versions — bundle compatibility tends to lag framework majors by one release. Flag config format should be pinned in a schema or validated at boot so typos fail loudly rather than silently defaulting to "disabled" in production.

Sequencing.

  1. Confirm framework target and whether runtime toggling is a hard requirement (one spike, half a day).
  2. Decide adopt/fork/reimplement; document the decision so it is not relitigated.
  3. Define a thin internal FeatureFlags interface in our own namespace — this is the real deliverable, because it lets us swap the backend later without touching call sites.
  4. Implement the backend behind that interface.
  5. Instrument: log flag evaluations at debug level, and expose current flag state in an admin or health endpoint.
  6. Roll out to one low-risk feature, then standardize.

Operational Impact

Maintenance. Low absolute code surface, but concentrated in one maintainer with no downstream dependents. Budget for periodic fork health checks; if upstream goes quiet, a vendored copy is a few hundred lines and we can carry it. The framework-mismatch adapter (Laravel scenario) is the real ongoing cost — it is untested glue that breaks silently on our own refactors.

Support. No vendor, no SLA, community-issue-only support. Internal documentation and a named owner are mandatory. Onboarding note: "KISS" means fewer concepts to learn but also fewer guardrails — there is no validation, no dashboard, no audit trail unless we build it.

Scaling. File-based flag evaluation is effectively free at runtime and scales fine for boolean and static-variant flags; add a cache layer if the config parse sits on a hot path. It does not scale organizationally: no per-environment UI, no targeting, no gradual rollout, no experiment metrics. Once more than a couple of teams or more than roughly a dozen flags are involved, the config file becomes a merge-conflict hotspot and flag drift between environments becomes a real source of "works in staging" incidents.

Failure modes.

  • Silent default: a misspelled flag key returns false and the feature vanishes in production with no error. Mitigate with strict key validation at boot.
  • Deploy-coupled toggling: flipping a flag requires a release, so the kill switch is as slow as your CI pipeline — unacceptable for anything customer-facing under load.
  • Environment drift: config divergence between staging and prod means flags behave differently than tested.
  • Abandonware: an unmaintained bundle breaks on the next Symfony/PHP major with no upstream fix.
  • Adapter rot: our Laravel shim silently diverges from upstream behavior.

Ramp-up. Very low for a Symfony developer — an hour to read the source and understand the model. Near-zero for a Laravel developer using Pennant instead. The learning cost is not the code; it is the discipline of flag hygiene (naming, ownership, expiry, cleanup), which no package in this tier enforces.

Recommendation. Do not adopt for a Laravel application. If the target is Symfony and requirements are genuinely limited to static, deploy-time booleans, this is a defensible low-cost choice — vendor it rather than depend on it. If runtime control, targeting, or audit are on the roadmap within two quarters, skip this tier entirely and go to Pennant (Laravel) or a hosted provider; retrofitting runtime control onto a config-file flag system costs more than starting there.

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.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console