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

Filament Feature Flags Laravel Package

stephenjude/filament-feature-flags

Filament Feature Flags is a Filament plugin for managing Laravel Pennant feature flags from your admin panel. Create and toggle flags, define scopes and conditions, and roll out features per user, team, or custom segment without code changes. Integrates with Filament resources and dashboards.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a Filament panel plugin that provides a UI layer over Laravel Pennant. That places it squarely in the TALL-stack admin tier: Pennant owns flag state and evaluation, Filament owns presentation and access control, and this package glues the two. It is a convenience surface, not infrastructure — the actual decisioning remains in first-party Laravel code. That is the right architecture, and it means the package is cheap to replace if it is abandoned. It also means it adds no value outside a Filament panel; teams using Nova, plain Blade admin screens, or a separate back-office app get nothing from it and should use Pennant directly.

Integration feasibility. Low-to-moderate. Expected steps: require Laravel Pennant, publish and run Pennant's features table migration, select the database store, require this package, publish its migrations (segment storage, if any) and config, register the plugin on the relevant Filament panel(s), and define the flag/segment model. A competent Laravel engineer with Filament familiarity should complete a first working slice in one to two days. The genuine unknowns are version constraints against Filament major versions and whether the package's segment model is additive to Pennant or a parallel reimplementation.

Technical risk. Three concerns, in order:

  1. Bus factor and signal. 123 stars, MIT, effectively a single maintainer. The opportunity score (0.43) and overall score (15.66) suggest low ecosystem adoption. This is a "nice UI for a first-party primitive," so the blast radius of abandonment is a UI you reimplement in a day — but only if you have not built segment logic into its schema.
  2. Version coupling. The package sits between two independently versioned dependencies, Filament and Pennant, both of which ship majors on a fast cadence. Filament major upgrades are the most likely breakage vector, and a solo maintainer will lag.
  3. Segment semantics. Core Pennant stores per-scope flag state; segmentation models (rules, cohorts, targeting) are not standardized across the ecosystem. If this package persists segments in its own tables with its own evaluation path, you inherit a schema and a semantics you did not choose. That is the one place where lock-in is real.

The release date shown (2026-06-24) is anomalous; verify actual publication history on Packagist and the commit log before trusting the maintenance signal.

Key questions to resolve before adoption.

  • Which Filament and Pennant majors are supported, and is there a stated support policy for new Filament releases?
  • Does it support Pennant's rich (non-boolean) values, or only active/inactive?
  • Does it support multi-tenancy / custom scope resolvers (Pennant's resolveScopeUsing), or is it single-scope (user-only)?
  • Are segments stored as data evaluated at runtime, or as code-defined closures? Can segments be evaluated outside the Filament request path?
  • Does the UI flush Pennant's cache on toggle, or is staleness left to the operator?
  • What authorization gates exist for who may toggle flags in production? Is there an audit trail of who changed what, when?
  • Does it fail open or fail closed if the segment table is missing or evaluation throws?

Integration Approach

Stack fit. Adopt only if the application already runs, or plans to run, Filament as its admin panel and Laravel 10+ on the Pennant-supported path. If Filament is present, marginal cost is near zero. If Filament is not present, do not introduce Filament to get feature flags — use Pennant directly and a small custom screen.

Migration path. Two entry states. (a) No Pennant in use: install Pennant, adopt the database store, define flags in code, then add this package as the operator UI. (b) Pennant already in use with the database store: install additively, and confirm the package does not alter the features table contract. In both cases, backfill: export current config-file or hardcoded flag values into Pennant state before flipping any code paths to read from flags, and run a period where flag state is asserted against the old behavior.

Compatibility. Pin both Filament and Pennant to explicit major constraints in composer.json, and treat a Filament major bump as a scheduled migration item, not a surprise. Confirm PHP version and the package's own constraint floor. Add a CI job that installs the lowest and highest supported dependency sets.

Sequencing. (1) Spike in a branch: install, register plugin, define two flags, toggle from the UI, verify a flag check in application code and in a queued job. (2) Confirm authorization: restrict the plugin to a gate/permission and, if possible, to non-production or to a named release-manager role. (3) Decide the segment strategy and confirm the package matches it. (4) Wire flags into code behind a thin internal wrapper (e.g. App\Flags) so no application code calls the package or Pennant directly — this is the single highest-leverage decision, because it makes the UI replaceable and standardizes naming and default behavior. (5) Roll out one low-risk flag to production as a pilot. (6) Document a flag lifecycle: owner, intended removal date, cleanup.

Operational Impact

Maintenance. Expect to own it. Budget a small recurring cost: reviewing the package on each Filament major release, and keeping a fork-ready posture (it is small and MIT, so forking is viable). Assign a named engineer as maintainer-of-record in the repo's dependency register, and pin the version rather than floating it.

Support. GitHub issues only — no SLA, no vendor. Escalation path is "read the source, patch, fork." That is acceptable for an admin convenience; it would not be for anything in the request critical path, which is why the wrapper in step 4 matters.

Scaling. The package's load is negligible — it runs on admin page loads, not on application traffic. The scaling risk lives in Pennant: with the database store, flag checks can issue queries unless results are cached per scope. Confirm the app's Pennant caching configuration, use eager loading for known check sets, and ensure the UI's toggle action invalidates the relevant cache. For high-fanout checks (per-request, per-job), measure before and after.

Failure modes.

  • Cache staleness after a toggle — operator believes a flag is off; behavior disagrees. Mitigate by flushing on write and surfacing a "last updated / updated by" line in the UI.
  • Schema drift on Filament or package upgrade — migrations diverge from expectations. Mitigate with a staging upgrade rehearsal and migration snapshot tests.
  • Evaluation exceptions in the request path — a broken segment rule takes down a page. Wrap all checks in the internal App\Flags helper with an explicit, documented default (fail-closed for risky paths, fail-open for cosmetic ones).
  • Unauthorized toggling — the highest-severity operational risk, because it is a production change made outside the deploy pipeline. Enforce a gate, require a second approver for production panels if feasible, and log every change.
  • Abandonment — low severity given the wrapper and small surface area; keep the fork option open.

Ramp-up. Low. A Laravel developer with Filament experience is productive in under a day; a Laravel developer without Filament, roughly one to two days including panel conventions. The larger onboarding cost is not the tool but the discipline: teams need a written convention for flag naming, default values, ownership, and removal, or the flag inventory accumulates into permanent, undocumented branching. Product management should treat the flag registry as a governed artifact with a periodic review, not as a set of switches.

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.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
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
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core