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

Laravel Webpush Notifications Laravel Package

xcoorp/laravel-webpush-notifications

A Laravel package for sending Web Push notifications to browsers. It integrates with Laravel’s notification system, manages push subscriptions and VAPID keys, and lets you deliver messages even when users aren’t actively on your site.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. xcoorp/laravel-webpush-notifications is a Laravel-native package providing Web Push delivery (VAPID-based) through Laravel's notification/channel abstractions. It fits any Laravel monolith or modular service already using Notifiable models and queued notifications; the integration surface is a trait on the notifiable model, a published subscriptions table, and a config file for VAPID keys. No separate broker or vendor SaaS account is implied by the package's shape, which is attractive versus hosted push providers on cost and data residency.

Integration feasibility. Composer-only installation; no infrastructure change. The two real integration tasks are (a) frontend service worker registration and permission-prompt UX, and (b) key management for the VAPID keypair across environments. Both are standard and well-understood; neither requires a platform change.

Technical risk. Low-to-moderate. v1.0.3 is a pure chore release — dependency bumps, lock file maintenance, and explicit Laravel 13 support — with no breaking changes, no API surface movement, and no deprecations. The signal value here is maintenance posture, not capability: the maintainer is keeping CI actions and the Composer constraint graph current, which is the leading indicator of whether the package will survive the next framework major. Residual risks are (1) single-maintainer/small-team bus factor, (2) reliance on the underlying web-push protocol library and, transitively, on minishlink/web-push-class crypto dependencies, and (3) browser-specific delivery behavior (Safari/iOS, FCM endpoint churn) that no PHP package can fully abstract.

Key questions.

  • Does the Laravel 13 support claim reflect an actual widened constraint (illuminate/support: ^10|^11|^12|^13), and are we free to move to 13 without a coordinated package bump?
  • What is the package's test matrix across PHP and Laravel versions in CI, and does it exercise delivery or only unit-level mocking?
  • How are expired/invalid subscriptions detected and pruned — is there an event or scheduled cleanup we must wire up?
  • Is there a documented path for payload encryption fallback and for browsers that reject VAPID-less pushes?
  • What is the release cadence and issue-response history over the last 12 months?

Integration Approach

Stack fit. Drop-in for a Laravel app on PHP 8.2+ with queue workers already running. Delivery is asynchronous by nature, so it should be dispatched through the existing queue rather than synchronously in a request cycle. If the product already uses Laravel notifications for email/SMS, web push becomes a third channel on the same notification classes — the lowest-friction possible shape.

Migration path. No migration from an incumbent provider is forced. If a hosted push vendor is currently in place, run the package in parallel behind a feature flag on a single notification class, compare delivery rates and subscription survival over two to three weeks, then cut over. If this is greenfield, adopt directly; there is no legacy to reconcile.

Compatibility. v1.0.3 explicitly adds Laravel 13 support, so the package spans the framework versions we are likely to be on during this planning horizon. Confirm the constraint is a widened range rather than a hard bump to 13 only — if the latter, the package becomes a forcing function on our upgrade calendar and should be sequenced accordingly. Frontend compatibility is bounded by the Push API: evergreen Chromium and Firefox are safe; iOS requires the PWA "Add to Home Screen" install path and iOS 16.4+, which is a product constraint we must state in the spec, not a package defect.

Sequencing.

  1. Spike (1 week): install in a scratch branch, generate VAPID keys per environment, prove end-to-end delivery on Chrome and iOS Safari-from-home-screen.
  2. Persistence: publish and review the subscriptions migration; decide retention and pruning policy before writing rows.
  3. Channel wiring: integrate with one low-risk notification (e.g. an internal ops alert), queued, with a kill switch in config.
  4. Frontend: service worker, permission prompt placement, and copy review — this is the step most likely to consume calendar time.
  5. Rollout: flag-gated to internal users, then a percentage of the base, then default-on.
  6. Framework upgrade: schedule the Laravel 13 move independently; treat the package bump as a prerequisite check, not a driver.

Operational Impact

Maintenance. Low steady-state cost. The package owns its own config and migrations; our recurring obligations are VAPID key custody (rotate-on-compromise, never commit private keys, store per-environment in the secret manager) and periodic subscription-table pruning. Dependency-update noise is real but cheap: this release alone carries nine lock-file maintenance commits, so expect frequent patch releases with no behavioral content. Pin with a caret constraint and let Renovate/Dependabot handle the cadence, with human review reserved for minor and major bumps.

Support. Internal: whoever owns the notification layer. External: upstream is a small team, so we should assume best-effort response and budget for the possibility that we carry a fork or a pinned patch for a critical dependency CVE. Establish a named owner and a documented fallback (fork-and-patch, or swap to direct web-push calls) before go-live rather than during an incident.

Scaling. Push delivery is fan-out, not request-path — cost scales with notification volume and queue throughput, not user concurrency. A 100k-subscriber broadcast is 100k queued jobs; chunk the fan-out and rate-limit against FCM/Mozilla endpoints to avoid provider throttling. Watch queue depth as the primary capacity signal, and cap per-user notification frequency at the product layer to avoid permission revocation, which is the irreversible failure mode.

Failure modes.

  • Silent subscription rot — endpoints expire, rows stay; requires detection and pruning or delivery rates decay invisibly. Mitigate with delivery-failure telemetry and a scheduled prune.
  • VAPID key mismatch or loss — all existing subscriptions invalidate; treat keys as tier-one secrets with backup and change-control.
  • Permission fatigue — aggressive prompts get permanently blocked at the browser level with no recovery path. Mitigate by gating the prompt behind an explicit user action.
  • Queue backlog — stale notifications arrive late and erode trust; attach TTLs and drop rather than deliver out-of-window.
  • Dependency CVE in the crypto/web-push stack — the highest-severity scenario; mitigated by keeping the update cadence live, which this release indicates upstream is doing.

Ramp-up. Roughly one engineer-day to a working prototype, three to five days to production-grade including the service worker and permission UX, plus a half-day of runbook and on-call documentation. No new hires, no new platform skills — the work sits inside existing Laravel and queue competence. The main non-obvious time sink is iOS behavior verification on real devices, which cannot be validated in a desktop browser or an emulator.

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.
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
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource