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 Notification Laravel Package

iracode-com/filament-notification

iracode-com/filament-notification is a lightweight Filament plugin for adding notification support to Laravel admin panels, helping developers integrate in-app notifications into Filament resources and workflows with minimal setup.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Assessment basis. Vendor-supplied package metadata, the description, and a v1.4.2 release note. Adoption signal is weak: 2 GitHub stars and an aggregate score of 0.31 place this firmly in the "unproven" band. Last release was 2024-07-07, so the codebase has been quiet for roughly a year. MIT license means forkability, which materially lowers the downside. Everything below should be read as a low-cost trial recommendation, not a strategic commitment.

Architecture fit. The package is narrow and well-bounded: a Bell icon in the Filament topbar, a slide-over notification center, and a thin fluent API for dispatching to one user or many. Critically, it is built on top of Laravel's native database notification channel rather than inventing its own persistence or delivery mechanism. That is the single most important architectural fact in this evaluation — it means the durable asset (our Notification classes, the notifications table, the Notifiable trait, queue integration) is standard Laravel, and the plugin is essentially a presentation and query layer. If we adopt and later abandon it, we keep our notification domain model and lose only UI. Blast radius is therefore small and bounded, which is the main reason a 2-star package is even worth discussing.

It is also correctly scoped as an in-app channel only — it does not attempt mail, SMS, or push. That keeps it out of the delivery-critical path.

Integration feasibility. Mechanically routine for any Laravel + Filament shop: Composer install, register the plugin in the relevant PanelProvider, ensure Laravel's notifications migration exists (most applications already have it), optionally publish config for icons, colors, polling interval, and actions. Expect hours, not days, for a working proof of concept. The real feasibility question is version alignment, not effort.

Technical risk. Rated moderate overall, driven almost entirely by three factors rather than by code complexity.

The first is Filament major-version drift. Filament moves on a fast major cadence; a plugin last released in mid-2024 is plausibly pinned to Filament 3 and may not yet support the current major. This is a hard blocker if true, and it is the first thing to verify — before any spike work.

The second is polling and unread-count behavior. A live unread badge almost certainly polls an endpoint on an interval. That is fine for a dozen admins and decidedly not fine for hundreds, and it is invisible until load. It is also a per-panel configuration we control, so it is a tuning problem rather than an architectural one — but it must be measured, not assumed.

The third is fan-out semantics. "Broadcast to multiple recipients" almost certainly means writing one database row per recipient, which is Laravel's normal behavior but is a scaling cliff for large audiences. Framing it as "broadcast" invites misuse by well-meaning engineers.

Key questions for the maintainer, and for our own spike.

  1. Which Filament major versions are supported, and is a release compatible with our pinned Filament/Livewire/PHP matrix? Is Filament 4 on the roadmap or explicitly out of scope?
  2. Does the notification center scope strictly to the authenticated user, and how is authorization enforced on the poll endpoint and on mark-as-read/dismiss actions? This is the security question that matters most — cross-tenant notification leakage in an admin panel is a serious incident.
  3. What is the polling default, is it configurable per panel, and does it short-circuit when the tab is backgrounded or when there are zero unread items?
  4. Does the "broadcast" path queue the fan-out, and what happens at 10k recipients — one job, N jobs, or a synchronous loop in the request?
  5. Is notification content escaped on render, and are custom action callbacks sandboxed or arbitrary closures?
  6. Is the package covered by tests and CI, and does the tag build reproducibly? Who is the maintainer and what is the bus factor?
  7. Is the notifications table read through Laravel's standard model, or a package-owned model/query builder that would complicate a future in-house replacement?

Integration Approach

Stack fit. Excellent, conditional on us running Filament. If Filament panels are already our admin surface, this drops in with no new infrastructure, no new service dependency, no deployment topology change, and no additional runtime. If we are not on Filament, the evaluation ends here — there is no partial-fit story. Confirm also that our application already uses (or is willing to use) Laravel's database notification channel; adopting this plugin effectively commits us to that storage choice for in-app alerts.

Migration path. This is additive, not a migration. There is no existing in-app notification center to displace, so the sequence is install → configure → observe. Two deliberate choices: pin the exact version in the lockfile rather than floating on ^1.x (a low-adoption package does not merit automatic patch adoption), and vendor-fork the repository into our own namespace if the spike succeeds, so an upstream abandonment is a non-event rather than an incident. The fork cost is trivial for a package this small and buys permanent optionality.

Compatibility. Validate against our exact Filament major, Livewire version, and lowest supported PHP in CI. Two specific checks beyond the version matrix: (a) does the package's published Tailwind/CSS build work with our Filament theme configuration, or does it require a custom asset build step; and (b) if notifications are queued, do package-shipped notification classes serialize cleanly across a rolling deploy where workers and web nodes run different package versions.

Sequencing.

  1. Gate 0 — version check. Confirm Filament compatibility against our pin. If incompatible, stop. Nothing else is worth doing.
  2. Gate 1 — two-week spike, one engineer. Install behind a feature flag in a single non-critical internal panel. Publish config, wire one real notification type end-to-end, and instrument the poll endpoint. Deliverable is a short written verdict plus load numbers, not a demo.
  3. Gate 2 — contract definition. Regardless of plugin choice, define our own thin internal notification API (a Notifier service or trait) so application code never calls the plugin directly. This is the key insulation: it makes the plugin swappable for an in-house build in days, and it is worth doing even if we keep the package.
  4. Controlled rollout. Enable in internal admin panels for two to four weeks. Measure poll request volume per admin per hour, notification table growth rate, and support tickets.
  5. Decide. Adopt, fork-and-own, or replace with an in-house panel (roughly one to two sprints given how narrow the feature is). Record the decision and the exit trigger.
  6. If adopted, add a scheduled pruning job for old read notifications, cap polling at a sane interval, and require queued fan-out for any audience above a defined threshold.

Operational Impact

Maintenance. Steady-state runtime maintenance is near zero — it's a read-mostly UI layer over a table Laravel already maintains. The real cost is vendor risk, and it is not negligible: 2 stars, one apparent maintainer, a year without a release, and an upstream that may simply stop responding to Filament major-version breakage. The mitigation is cheap and should be planned for from day one: fork into our namespace, treat upstream as a source of patches rather than a dependency we must track, and budget a small annual allowance for rebasing onto Filament majors. The alternative — staying on an unmaintained plugin and eventually being unable to upgrade Filament — is the expensive outcome, so the fork decision should be made at adoption time, not deferred.

Support. Moderate ongoing support surface, all user-facing. Expect an initial wave of tickets about notification volume ("too many"), timing ("I didn't see it"), and dismissal behavior. Two policy decisions belong to the product owner, not the plugin: a retention window for read notifications, and guidance on what deserves an alert versus an email. Keep the notification taxonomy documented so support can triage "is this a bug or a bad notification." Escalation path should route through the internal Notifier wrapper, not the package.

Scaling. Three distinct dimensions, only one of which is genuinely concerning.

Poll load is the one to watch: each open admin panel generates a request on every polling interval, multiplied by concurrent admins. Fifty admins at a 10-second interval is ~18k requests per hour against an endpoint that hits the notifications table. That is survivable but should be tuned (30–60s default, pause on hidden tab) and indexed. Table growth is the second: database notifications accumulate silently and unread counts get slow without pruning — mandate a scheduled cleanup from day one. Fan-out is the third: broadcasting to a large audience writes N rows and, if done synchronously, will timeout the request that triggered it. Require the queued path and a documented audience size ceiling.

Failure modes to watch.

  • Authorization regression on the poll endpoint — the highest-severity failure. A scoping bug exposes one admin's notifications to another. Must be covered by an explicit test, not assumed from the UI.
  • Polling storms after a deploy or cache flush, when every open session re-polls simultaneously.
  • Unread count drift between the badge and the panel, usually after a mark-as-read race; erodes trust quickly and generates tickets.
  • Silent fan-out timeouts — a "broadcast" that partially writes, leaving some recipients notified and others not, with no error surfaced.
  • Filament upgrade collision — an admin panel upgrade that breaks the plugin's render hooks, discovered in production because the plugin wasn't in the upgrade test matrix.
  • Upstream abandonment discovered only when a security patch is needed.

Observability hooks. Poll endpoint request rate and p95 latency; notifications table row count and growth per day; unread-count query duration; fan-out job failure and partial-completion rates; notification-center render errors; and a support ticket tag for the first month post-rollout to catch volume/timing complaints that never reach an error log.

Ramp-up. Low for engineering — a mid-level engineer with Filament experience can complete the spike in a week and the insulated integration in another. The TPM-side effort is larger relative to the feature's size: this requires a build-versus-buy judgment, a fork-and-own decision, and a scaling policy for notifications, none of which the package decides for us. Net recommendation: proceed to a gated two-week spike at low priority, contingent on Filament version compatibility and on a satisfactory answer to the authorization question. Do not adopt without the internal Notifier wrapper and the fork in place — those two decisions convert a 2-star dependency into a low-risk, fully reversible component choice.

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.
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
uni-method/symfony-lib