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

Push Notification Laravel Package

edujugon/push-notification

A Laravel package for sending push notifications through Firebase Cloud Messaging (FCM). Deliver messages to Android and iOS devices—individually, by topic, or in groups—via a simple, expressive API with support for custom data payloads.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit edujugon/push-notification is a conventional Laravel package: it ships a ServiceProvider, a Facade, and a publishable config file, then wraps provider SDKs/protocols (GCM, FCM, APN) behind a single sending API. Architecturally it is a thin adapter layer, not a platform. That is appropriate for a Laravel app that needs to fan out notifications to iOS and Android without owning provider-specific HTTP details, but it means the abstraction depth is limited: anything beyond basic send (topics/conditions, APNs token auth nuances, per-message collision handling, rich payload validation) depends on what the maintainer has exposed. Teams already standardized on laravel-notification-channels/* or a dedicated provider SDK would be adding a second, overlapping abstraction.

Integration feasibility Composer install, config publish, credential population per environment, and facade calls — achievable in hours for a single platform, and days for a dual-platform integration with test devices. It follows Laravel idioms (config, facade, queue-friendly), so a Laravel developer can adopt it without new mental models. The real friction is credential provisioning and the fact that FCM and APNs have materially different payload semantics, which the package does not eliminate.

Technical risk

  • Protocol currency is the dominant risk. GCM is retired (shut down in 2019) and legacy APNs binary is deprecated in favor of HTTP/2 token-based auth. The 2025-05-18 release and now v5.5.0 are positive signals of maintenance, but before adoption one must confirm the package targets FCM HTTP v1 and APNs token (.p8) auth, not certificate/legacy paths. If it still supports only legacy endpoints, it is a trap for new work. Note that v5.5.0 addresses framework compatibility only — it says nothing about provider protocol currency.
  • Bus factor. A single-maintainer community package in the critical notification path is a continuity risk. MIT license and small code surface mitigate this (forkable), but no SLA exists. v5.5.0 shipping Laravel 12 support reasonably promptly is a positive activity signal and modestly lowers this risk — it does not eliminate it.
  • Ecosystem signal is weak. 487 stars but 0 dependents means almost no downstream package adoption; usage is likely application-level and fragmented, so bug discovery is slower and upgrade breakage is less frequently trodden.
  • Credential handling. Service account JSON and .p8 keys land in config/env; leakage risk sits with the integrator, not the package.
  • Observability gap. Expect to build logging, retries, and token-feedback handling yourself unless the package exposes it.

Key questions

  1. Which FCM API version and which APNs auth mode does the current release use, and is there a documented deprecation policy? (Still unanswered by v5.5.0 — highest priority to resolve.)
  2. What PHP version range is supported alongside Laravel 12, and is the target app's exact Laravel/PHP combination in the tested CI matrix? (v5.5.0 confirms Laravel 12 support; PHP bounds and CI coverage of older Laravel majors remain unconfirmed, so pin and verify against the app rather than assuming backward compatibility.)
  3. Does it support queued/batched sending, retries with backoff, and per-token result inspection (partial failure handling)?
  4. What is the test coverage, and are there integration tests against live sandbox endpoints?
  5. How are invalid/expired tokens surfaced to the application for pruning?
  6. What is the maintainer's responsiveness on issues/PRs over the last 12 months? (Partially answered: a prompt Laravel 12 release indicates the maintainer is engaged; check the issue tracker for response time on protocol-level questions.)

Integration Approach

Stack fit Good fit for a standard Laravel application (service provider + facade is the native pattern) that sends point-to-point notifications and does not need a full engagement platform (topics, segmentation, A/B, delivery analytics). Poor fit where the organization already has a notification abstraction or a vendor push platform; adding this creates a competing pathway. With v5.5.0, this now extends cleanly to applications on Laravel 12 — a meaningful widening of the addressable stack.

Migration path

  • Greenfield: adopt directly; wrap the facade in an internal PushGateway interface from day one so the package is swappable.
  • From laravel-notification-channels/fcm or apns: treat as a lateral move, not an upgrade — the payload model and error surfaces differ. Migrate behind the internal interface, keep both paths live behind a feature flag, and cut over per platform (Android first, then iOS).
  • Away from this package later: the wrapper interface is the insurance policy; avoid leaking Edujugon\PushNotification\Facades\PushNotification calls into domain code.

Compatibility v5.5.0 adds Laravel 12 support, which removes the most common blocker for apps on current Laravel releases. Still confirm the package's composer.json constraints against the app's exact Laravel/PHP versions — "Laravel 12 support" typically also implies a minimum PHP 8.2+, which can affect apps pinned to older PHP. Watch for conflicts if google/auth or guzzlehttp/guzzle versions are pinned elsewhere, and verify behavior under the app's queue driver (Redis/SQS/database) since retries and timeouts are driver-sensitive. If the app is on Laravel 10 or 11, check whether the v5.x line still carries those constraints or whether upgrades are forced.

Sequencing

  1. Spike in a non-production branch on the target Laravel version: send to one Android and one iOS test device using current credentials; confirm the API version in use.
  2. Publish and template config per environment (local/staging/prod); move credentials into a secrets manager, not .env in VCS.
  3. Define the internal PushGateway interface and adapt the package behind it.
  4. Add queueing, structured logging, and a dead-letter path for failures.
  5. Feature-flag rollout by user cohort; monitor delivery and error rates.
  6. Document the fork/escape plan if maintenance lapses.

Operational Impact

Maintenance Low day-to-day code maintenance, moderate ongoing vigilance: track FCM/APNs API changes, Laravel major releases, and the maintainer's activity. Budget a quarterly review. v5.5.0 shipping Laravel 12 support is a good cadence signal — it means framework upgrades are less likely to strand the app — but do not read it as evidence of provider-protocol currency. Because the package is thin and MIT-licensed, a fork-and-patch path is realistic if it stalls — assign an owner who can execute that.

Support Community-only: GitHub issues, no vendor SLA. Internal runbooks should cover credential rotation, provider outage response, and "package unmaintained" contingency. Do not route incidents to the upstream maintainer.

Scaling Sending is I/O-bound HTTP; the package itself is not the bottleneck, but the pattern is. All sends must go through queues with concurrency limits per provider, and APNs in particular will return 429s under burst. Avoid synchronous sends in request paths. For high volume, confirm whether the package batches per connection or issues per-message requests — if the latter, expect to manage worker pools and provider-side throttling explicitly. Token storage and pruning queries should be indexed from the start.

Failure modes

  • Provider API version retirement (highest severity, silent until sends fail). v5.5.0 does not reduce this exposure.
  • Expired/revoked credentials or rotated service-account keys not propagated.
  • Network timeouts and 5xx from FCM/APNs — need retry with jitter and a DLQ, plus idempotency keys to avoid duplicate pushes.
  • Partial failures in multi-device sends: one bad token must not abort the batch.
  • Invalid/expired device tokens accumulating; without feedback handling, error rates creep and deliverability silently degrades.
  • Queue backlog during spikes; notifications are time-sensitive, so stale messages should expire rather than deliver late.

Ramp-up Low for any Laravel developer — the facade and config are self-explanatory, and the README covers the basics. The real learning curve is provider semantics (FCM vs APNs payload differences, token lifecycle, sandbox vs production APNs endpoints) and the operational scaffolding around retries, logging, and token hygiene. Estimate 1–2 days to first successful dual-platform send, 1–2 weeks to production-grade integration with queueing, observability, and failure handling — on Laravel 12 the framework-side friction is now lower, but the provider-side work is unchanged.

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.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings