mrshanebarron/notifications
mrshanebarron/notifications is a Laravel/PHP package for handling application notifications. It provides a lightweight foundation for sending and managing notification messages, helping developers integrate notification workflows into their apps.
Mail::send() calls inside controllers, this package offers a conventional Laravel notification abstraction at near-zero license cost. The decision is "adopt a thin abstraction now" versus "write ~150 lines of in-house notification classes" — the in-house option remains credible given the package's maturity signals.features.notifications_enabled toggle lets the PM stage a beta cohort, disable a noisy channel after a launch, or kill-switch delivery without a code rollback. Useful for launch plans where notification volume is a reputational risk.Consider it when:
vendor:publish.Look elsewhere when:
Illuminate\Notifications — same conceptual model, far stronger support.sb- config rename in v1.0.1 is a breaking change published as a patch. Treat it as breaking, pin the version, and be prepared for stale-config ambiguity across environments.For executives (one paragraph): We are evaluating a small open-source Laravel package that standardizes how our application sends notifications — email today, potentially in-app and other channels later. It is free, lightweight, and config-driven, which means we can turn it on for a limited group first and switch it off instantly if something goes wrong. The honest caveat is maturity: it has no community traction yet and is maintained by a single author, so it is appropriate for internal, non-critical messaging and not for anything a customer contract depends on. Recommendation: approve a time-boxed evaluation (roughly one engineer-day including verification), run it behind a feature flag for low-stakes notifications, and keep Laravel's built-in notification system as the fallback for anything critical.
For engineering: The integration is composer require plus vendor:publish; no database changes, no middleware, no service overrides. Two things need care. First, v1.0.1 renames the published config to an sb- prefix — that is a breaking change shipped as a patch, so pin ^1.0.1, re-publish config with --force after diffing, delete the stale file, and run config:clear/config:cache as part of the deploy. Second, wrap the package behind a small App\Services class and bind the contract rather than calling package types from controllers — that keeps our exit cost to one file if the dependency stalls. Test with config overrides and Bus::fake()/Http::fake(), not mocks of the package itself. If either of those two constraints is unacceptable, use Laravel's first-party notifications and revisit.
Ask: One engineer-day to spike, a decision checkpoint at the end of the sprint, and a standing rule that critical-path messaging does not route through this package until it has a track record.
How can I help you explore Laravel packages today?