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

opwoco/rms-push-notifications-bundle

A Symfony bundle for integrating RMS push notifications into your application. It provides configuration and delivery support for connecting app events to RMS push services, simplifying notification setup.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Bottom line: Do not integrate this package. It is a Symfony 2-era bundle whose two core transports — the Apple Push Notification Service legacy binary provider and Google Cloud Messaging — have both been shut down by their vendors. The repository has zero stars and zero dependents, so there is no upstream activity, no issue history, and no community to lean on. What remains is a domain model and some payload-shaping code wrapped in an obsolete framework integration.

Architecture fit — mismatch on two axes. First, the framing: despite being scoped here as a "Laravel/PHP package," this is a Symfony bundle. The Bundle suffix, the DependencyInjection extension, and the service-container XML/YAML wiring are all Symfony idioms. Laravel has no mechanism to consume a Symfony bundle; you would be discarding the bundle layer entirely and harvesting raw classes. Second, those raw classes are themselves coupled to Symfony 2 components — most notably the event dispatcher, whose base Event class moved to Symfony\Contracts\EventDispatcher\Event in Symfony 4.3. Any salvage work is a port, not an install.

Integration feasibility — low, and falling. The realistic options are (a) composer require and use it as intended, which is impossible on a modern Laravel stack; (b) fork and reimplement the transports against current APIs, which is a rewrite with the original as reference material; or (c) ignore the package and build or buy a maintained alternative. Only (b) and (c) are viable, and (b) costs more than (c) for a smaller result. There is no version of this that is a one-sprint integration.

Technical risk — the transports are dead, which caps the risk story at "unusable" rather than "risky." Both protocols this bundle exists to speak have been retired:

  • Apple deprecated the binary provider protocol and shut it down in March 2021. Current APNs requires HTTP/2 with either token-based (JWT, .p8 key) or certificate-based auth.
  • GCM was deprecated in 2018 and shut down in April 2019, superseded by FCM. The FCM legacy HTTP API — the natural migration target — itself reached end of life in 2024, leaving the HTTP v1 API with OAuth2 service-account auth as the only supported path.

So the bundle's central value proposition does not function against production Apple or Google endpoints. Secondary risks stack on top: PHP version drift (a Symfony 2-era codebase will not run cleanly on PHP 8.x), no security patch stream, an MIT license that permits a fork but offers no support obligation, and a 0.03 score against a 4.16 "opportunity" figure that the metadata itself contradicts. Treat the score as noise, not signal.

Key questions to resolve before any engineering time is spent:

  1. What specifically prompted this evaluation — a working legacy integration being inherited, or a greenfield push-notification requirement? The answers diverge completely.
  2. If legacy: is the system currently sending push successfully? If so, through what endpoint? That tells us whether a hidden, patched transport exists.
  3. Is there proprietary logic in the bundle worth preserving — device-token lifecycle handling, payload templating, retry semantics — or is it thin glue over vendor APIs?
  4. What is the actual notification volume and latency requirement? Below ~10k/day, a managed service (Firebase, OneSignal, Pusher Beams) is almost certainly cheaper than any build.
  5. Who owns device-token hygiene today, and is there an existing token table we must remain compatible with?

Integration Approach

Stack fit: none as-is. A Laravel application should express push notifications through the Notification facade with custom channels, dispatching to queued jobs. That is the idiomatic surface, and it composes with existing queue, retry, and observability infrastructure. A Symfony bundle cannot occupy that slot; anything ported from it must be re-hosted as a Laravel service provider plus a channel class.

Recommended path — replace, don't migrate. Adopt a maintained transport library rather than resurrecting this one. For APNs, a current HTTP/2 client with token-based auth; for Android, the FCM HTTP v1 API via a maintained Firebase SDK. If the team wants a single abstraction, wrap both behind one PushChannel interface and register it with Laravel's notification system. This is a few days of work and yields supported, patched, documented code.

If the bundle holds irreplaceable logic — extract, don't depend. Treat the repository as a specification document:

  1. Inventory. Read the code and write down the domain concepts: device registration, token storage schema, platform dispatch, payload envelope shape, error/feedback handling. This is a half-day exercise and is the only deliverable worth taking from the repo.
  2. Anti-corruption layer. Define Laravel-native interfaces (PushTransport, DeviceRepository, PushResult) that mirror those concepts without importing a single class from the package.
  3. Reimplement transports. HTTP/2 APNs with JWT auth; FCM v1 with service-account credentials. Budget for certificate/key rotation and per-environment credential separation — these are the operational sharp edges the old bundle handled poorly.
  4. Port the schema, not the code. If a legacy device_tokens table exists, migrate it forward rather than recreating it; token churn means you cannot re-register the install base.

Compatibility. Assume nothing runs on PHP 8. Verify PHP constraint and Symfony component versions before writing any code; if the plan depends on loading these classes at runtime, that plan is already wrong. Also confirm whether any transitive dependency is abandoned — with zero dependents there is no downstream evidence that the dependency graph resolves on a current platform.

Sequencing. (1) Confirm the business requirement and volume; (2) decide build-vs-buy — buy unless volume or compliance forces otherwise; (3) if building, extract the domain spec from this repo and close it; (4) build the transport layer against live sandbox credentials for both platforms; (5) run shadow traffic against a small device cohort; (6) cut over per platform, Android first (lower blast radius, simpler auth). Do not attempt a parallel-run of the old bundle — there is nothing running to run in parallel with.

Operational Impact

Maintenance — total ownership, no upstream. Forking means the team absorbs every future change: PHP upgrades, vendor API revisions, credential format changes. Budget roughly one engineer-week per year of steady-state upkeep, plus unbounded cost at each platform API break. The alternative — an actively maintained dependency — transfers that cost to a vendor for free.

Support. None. No maintainer response, no CVE feed, no documented upgrade path. For a component that handles device identifiers and sits on the critical path of user-facing engagement, that is a governance problem, not just a convenience one. Security review will likely flag an unmaintained dependency with no patch stream.

Scaling. Expect the inherited design to be synchronous and blocking, with per-message HTTP calls and no batching or backoff. Modern APNs tolerates connection reuse well over HTTP/2, but FCM v1 has no batch endpoint — throughput comes from controlled concurrency, which the old design almost certainly lacks. Anything above modest volume requires re-architecting onto a queue with rate limiting, exponential backoff, and dead-letter handling. This is a design change, not a tuning exercise.

Failure modes to design against explicitly:

  • Silent token death. Apple's feedback service and GCM's canonical-ID responses were the mechanisms for pruning stale tokens; both are gone. Modern equivalents (APNs 410 Unregistered, FCM UNREGISTERED) must be parsed per-message and fed back into token cleanup, or the token table rots and delivery rates quietly decay.
  • Credential expiry. APNs .p8 keys and FCM service-account JSON both expire or get rotated; a push outage from an expired key is a classic 2 a.m. page. Alert on auth failures as a distinct error class.
  • Partial fan-out failure. One payload to N devices will partially succeed. Without per-device result tracking, "notifications are broken" reports are undiagnosable.
  • Queue backpressure. Retries against a rate-limited vendor endpoint can amplify an incident. Cap retry depth and separate push queues from transactional job queues.

Ramp-up. A new engineer needs both Laravel queue/notification fluency and hands-on familiarity with APNs and FCM authentication — two distinct credential models, two error taxonomies. The bundle offers no help here and actively misleads: its patterns describe an architecture that no longer exists, so onboarding time is spent unlearning. Estimate two to three weeks to first confident production change on a clean reimplementation, versus open-ended archaeology if the team tries to work within the fork.

Recommendation. Close the evaluation with a "do not adopt" decision, retain the extracted domain notes as reference, and fund a small replacement built on maintained transports behind a Laravel notification channel. The only scenario that reverses this is a hard constraint requiring the original binary protocols — and no such constraint can exist, because Apple and Google no longer serve them.

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.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums