zpmlabs/filament-popup
Filament Popup lets you create and manage modal popups directly from your Filament admin panel. Configure content, display conditions, and scheduling through a friendly resource, then show targeted messages to users without custom frontend code.
Architecture fit. zpmlabs/filament-popup is a Filament panel plugin, so its value is gated on one architectural precondition: the application already runs a Filament admin panel (TALL stack — Laravel, Livewire, Alpine, Tailwind). It is not a general-purpose Laravel popup library. Expect the standard Filament plugin contract — a Plugin class registered on a PanelProvider, a service provider for config/migrations/views, and likely a Filament Resource for authoring popups plus a Blade/Livewire renderer for delivery. That is a clean fit if Filament is already the control plane for content operations; it is a poor fit if popups need to render on a public marketing site that is not Livewire-rendered, or if the team manages content outside Filament.
Integration feasibility. Mechanically low-effort: composer require, register the plugin in the panel provider, publish and run migrations, publish config/assets. The real feasibility question is not installation but delivery surface — where the popup is actually shown, under what targeting/trigger rules, and whether that renderer is coupled to Filament's authenticated panel context or usable on public routes. Confirm this in a one-day spike before committing.
Technical risk. High relative to the integration effort, driven by adoption signals rather than code quality:
| Signal | Value | Implication |
|---|---|---|
| Stars | 9 | Pre-community; effectively unvalidated |
| Dependents | 0 | No known production installs to inherit fixes from |
| License | MIT | Forkable; no legal blocker |
| Last release | 2026-04-30 | Recent, but single-vendor cadence |
| Score / opportunity | 10.05 / 39.46 | Low absolute maturity, meaningful headroom |
The dominant risk is Filament major-version coupling. Filament iterates quickly and has historically shipped breaking changes across majors (v3 → v4 class/API moves). A small plugin with one maintainer and zero dependents will lag those upgrades. Secondary risks: single-maintainer bus factor, thin test coverage, and asset-pipeline assumptions (Vite vs. published assets) that may not match our build.
Key questions.
composer.json, and how wide is the constraint?Stack fit. Requires Laravel + Filament; assumes Livewire for interactivity and Tailwind for styling. If our front end is Inertia/React or a separate SPA, the admin authoring side may still be useful but the delivery side likely is not — that split is the deciding factor.
Migration path. Treat this as an additive, reversible layer:
composer.json (no caret range) and record the fork point.Compatibility. Verify the version matrix explicitly before scheduling work — Filament major, Laravel major, PHP minor, and Node/Vite for assets. Because there are zero dependents, we should assume we are the first integration at our specific version combination and budget for a patch or two. If a mismatch exists, the mitigation is a fork under our org with a maintained constraint, not a wait-and-see.
Sequencing. (a) Compatibility spike → (b) authoring-only rollout in a non-production panel to validate content-editor UX → (c) delivery on a low-traffic page behind a feature flag → (d) broaden surface area and targeting rules → (e) revisit build-vs-fork at the next Filament major. Do not sequence delivery before the renderer-scope question is answered; it changes the effort by an order of magnitude.
Maintenance. Small-vendor dependency with a single maintainer. Budget an explicit owner and a periodic upgrade review tied to Filament releases, not a calendar. The MIT license and small surface area make an internal fork viable — estimate the plugin's core (resource CRUD, a renderer, a couple of models) as days, not weeks, to reimplement if abandoned. That ceiling is the main reason this is a tolerable bet despite the adoption numbers.
Support. GitHub issues only; no SLA, no vendor escalation. Internal SLAs must be written against our fork, not upstream. Content-editor questions ("why isn't my popup showing?") will land on our team, so targeting-rule semantics need documenting from the source.
Scaling. Authoring load is negligible. Delivery load depends entirely on implementation: if popup selection runs a DB query per request without caching, it becomes a per-page-view cost on high-traffic public routes. Push for a cached, pre-resolved popup set keyed by route/audience and invalidated on publish. Frequency capping and dismissal state will add per-user writes — confirm the storage strategy before enabling on public traffic.
Failure modes.
dev.Ramp-up. Low for engineers already fluent in Filament — hours to productive, a day to confident. The steeper curve is on the content/ops side: authors need guidance on targeting semantics, scheduling, and dismissal behavior, and someone must own the "why isn't it showing" triage path. Net: cheap to try, cheap to exit, but only worth adopting if Filament is already the content control plane and the delivery surface is Livewire-compatible.
How can I help you explore Laravel packages today?