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

Rms Push Notifications Bundle Laravel Package

msouverain/rms-push-notifications-bundle

A Symfony bundle that brings push notification delivery into your application's service container, offering a reusable way to dispatch messages to mobile clients from your backend instead of wiring notification logic into every project.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Despite the request framing this as a Laravel/PHP package, msouverain/rms-push-notifications-bundle is a Symfony 2-era bundle, not a Laravel package. The *Bundle suffix, the expected DependencyInjection/*Extension + Resources/config/services.yml bootstrapping, and the absence of a ServiceProvider, facade, or publishable config are all Symfony idioms. Laravel's container can autoload the code, but it cannot bootstrap it the way the bundle expects. Compounding this, the transport layer targets protocols that are both retired: the APNs binary gateway (gateway.push.apple.com:2195, deprecated by Apple in 2021, replaced by HTTP/2 + JWT) and GCM HTTP (android.googleapis.com/gcm/send, shut down by Google in 2019, replaced by FCM v1). Even in its native Symfony environment, this package cannot deliver a notification to a modern device today.

Integration feasibility. Low without a fork. Three viable paths:

  1. Fork and port — replace both transport adapters with APNs HTTP/2 (token-based auth) and FCM v1 (OAuth2 service account), then wrap in a Laravel ServiceProvider. The bundle's value is limited to thin message/device abstractions, so you are mostly buying naming conventions.
  2. Reimplement on Laravel primitives — use laravel-notification-channels/apn and laravel-notification-channels/fcm (both actively maintained, Laravel-native, same underlying transports). This is the lowest-effort, lowest-risk route and makes the bundle a reference implementation rather than a dependency.
  3. Skip push directly — outsource to FCM/OneSignal/Firebase, eliminating per-platform credential management entirely.

Technical risk: critical. Zero stars, zero dependents, single maintainer, no upstream activity, no CI badge, no tagged release compatible with modern PHP. Symfony 2 code of this vintage typically relies on Container::get() semantics removed in Symfony 3, pre-PSR-4 autoloading, and occasionally mcrypt. Because Laravel 10/11 ships symfony/* v6/v7 components, Composer will almost certainly hit an unsolvable dependency conflict at composer require time — the package may not even install. MIT licensing is the one unambiguously positive signal: it permits a fork.

Key questions for the maintainer / spike:

  • What are the composer.json PHP and symfony/* constraints, and is the package PSR-4?
  • Does it depend on a separate rms/push-notifications library, and is that maintained?
  • Certificate-based APNs auth only, or token-based? (Certificate auth forces annual manual rotation.)
  • Is there any device-token lifecycle support — feedback service, canonical ID handling, pruning of stale tokens?
  • Delivery receipts: does it expose per-message results, or fire-and-forget?
  • Who internally owns a fork if we go that route, and for how many years?

Integration Approach

Stack fit. Poor. This is a Symfony DI-graph artifact dropped into a Laravel service-container world. The abstraction it offers (message payload → device token → transport) is sound and portable, but the implementation plumbing is not.

Migration path. Recommend path 2: do not adopt the bundle as a dependency. Treat it as a design reference, and implement push via Laravel's built-in notification system with maintained channels. If a stakeholder insists on reuse, vendor the repository into packages/rms-push-notifications via a Composer path repository, add a first-party PushServiceProvider, and delete and replace both transport adapters — keeping only the message-composition classes you can unit-test.

Compatibility. The gating check is a throwaway Composer resolve against our target PHP and Laravel version. If it fails — likely — the decision is made for us and the spike ends in an hour rather than a sprint. Secondary checks: PSR-4 vs PSR-0, presence of mcrypt/openssl calls, and whether credentials are read from a filesystem path (a secrets-management problem for containerized deploys).

Sequencing.

  1. Confirm the business requirement and channel mix (iOS only? Android? WebPush?) — the bundle covers none of WebPush.
  2. Run the Composer resolve spike (timebox: 1 day, go/no-go).
  3. Prototype on maintained Laravel channels against real devices in a device lab, including an expired-credential failure case.
  4. If forking: define our own PushTransport interface first, adapt APNs HTTP/2 and FCM v1 behind it, then port device registration and token lifecycle.
  5. Load test through the queue, then cut over per platform with a dual-send window if a legacy path is still live.

Operational Impact

Maintenance: high, and permanent. Adopting this package means acquiring an unmaintained codebase. There is no upstream to absorb Apple's and Google's future protocol changes; every credential rotation, API deprecation, and PHP upgrade is ours. Budget a standing engineering allocation, not a one-time port. If we fork, expect the fork to diverge immediately and completely.

Support: none. Zero stars and zero dependents mean zero community triage — no Stack Overflow answers, no issue archaeology, no third party to escalate to when devices silently stop receiving pushes. Internal ownership is total and must be named in the runbook. Contrast with the maintained alternatives, which have active issue trackers and recent commits.

Scaling. The legacy transports are architecturally limiting even if revived: the APNs binary protocol is single-connection with no multiplexing, and GCM HTTP caps at 1,000 registration IDs per request with no built-in retry/backoff semantics. Realistic throughput requires queue workers plus connection reuse, and the bundle provides no batching or backpressure primitives. The maintained HTTP/2 and FCM v1 clients multiplex natively, which is a material difference at volume.

Failure modes to design against:

  • Silent credential expiry — certificate-based APNs auth causes a total, undetectable outage for iOS. Requires expiry monitoring and alerting on send error rates.
  • Stale token accumulation — no feedback service in the legacy path; invalid tokens inflate send volume and mask true delivery rates. Needs a token-pruning job and canonical-ID reconciliation.
  • Duplicate sends — no idempotency key in the payload abstractions; retries from the queue will double-notify users.
  • No delivery confirmation — legacy GCM returns only downstream message IDs, not delivery receipts, so "sent" ≠ "delivered" in metrics.
  • Composer lock fragility — if it does install, a transitive Symfony component bump can break it without warning.

Ramp-up. Low discoverability: README-only documentation, no tests to read as specification, and non-obvious Symfony conventions for a Laravel-native team. Estimate 1–2 sprints for a strong PHP engineer to port, validate on real hardware, and cover the failure modes above — plus device-lab access and, ideally, an Apple Developer and Firebase project provisioned up front, since credential setup is often the longest lead-time item.

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