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

Fcm Laravel Laravel Package

amdadulhaq/fcm-laravel

Send push notifications from Laravel via Firebase Cloud Messaging (FCM). A lightweight wrapper that lets you deliver notification and data messages to Android, iOS, and web clients through a simple, expressive API, with support for device tokens and topic-based delivery.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Package: amdad121/fcm-laravel — a Laravel wrapper for Firebase Cloud Messaging (push notifications), consumed via Composer and typically surfaced through a facade, a publishable config file, and a notification channel.

Architecture fit. The package follows Laravel's standard package conventions (service provider, facade, config publish, optional notification channel), so it slots into an existing Laravel app without architectural rework. The meaningful architectural decision is whether to depend on this thin wrapper versus the first-party kreait/laravel-firebase or calling the FCM HTTP v1 API directly. This package trades breadth for a smaller surface area, which is fine for teams that only need push and want to avoid the heavier Firebase SDK.

Integration feasibility. Low-to-moderate effort: composer require, vendor:publish the config, supply service-account credentials, wire the notification channel. The gating factor is not installation but the v1.3.0 → v2.0.0 major version boundary. Semver major signals breaking changes, and the supplied release notes are only a changelog URL with no enumerated changes. Feasibility is therefore unverified until the diff is read.

Technical risk.

  • Unverified breaking-change scope (high). The most likely candidates for a 2.0 are: dropping legacy server-key auth in favor of OAuth2 service accounts (FCM's legacy API is deprecated), renamed namespaces/classes, changed facade method signatures, and a reshaped config file. Any of these will break existing call sites silently at runtime rather than at compile time.
  • Credential handling (medium). Service-account JSON is a long-lived secret; it needs to live in a secret manager, not the repo, and needs a rotation story.
  • Bus factor (medium). Single-maintainer OSS package with an infrequent release cadence; upstream FCM API changes may outpace maintenance.
  • Documentation gap (medium). No UPGRADE.md referenced. Without one, the source diff becomes the upgrade guide.

Key questions to resolve before adoption or upgrade.

  1. What exactly changed between 1.3.0 and 2.0.0 — is the legacy server-key path removed entirely?
  2. Minimum PHP and Laravel version constraints in composer.json for v2?
  3. Does the notification channel contract (class name, toFcm() signature) survive the bump?
  4. Is there CI, a test suite, and tagged release artifacts, or only tags?
  5. Does v2 support topic sends, condition sends, and data-only payloads, or only single-device notification payloads?

Integration Approach

Stack fit. Standard Laravel + Composer. Runtime prerequisites: an HTTP client (Guzzle), google/auth (or equivalent) for OAuth2 token minting if v2 moves to HTTP v1 exclusively, a queue driver for async dispatch, and a working queue worker in every environment that sends push. Config caching means credentials must be injected via env vars, not edited into config/fcm.php post-deploy.

Compatibility. Confirm the constraint matrix before committing: PHP version, Laravel version, and FCM API generation (legacy vs HTTP v1). If v2 is HTTP v1-only, the credential format changes from a server key string to a service-account JSON file — that is a configuration and secrets-management change, not just a code change.

Migration path.

  1. Read the actual v1.3.0...v2.0.0 compare diff and any migration notes in the README — treat this as the upgrade guide.
  2. Inventory all call sites: facade usages, injected classes, notification classes implementing the channel, and every config key read outside the package.
  3. Publish the v2 config into a scratch directory and diff it against the in-repo v1 config to enumerate renamed/removed keys.
  4. Upgrade in a branch, run the app test suite, and add contract tests that assert payload shape for a mocked FCM endpoint.
  5. Validate against a real FCM project with a test device on both iOS and Android before promoting.
  6. Roll out to a single low-traffic send path (e.g. one notification type) before broadening.

Sequencing. Do not combine this upgrade with unrelated Laravel or PHP version bumps. If the app is currently on v1.3.0 and sending production traffic, pin to 1.3.* explicitly so an accidental composer update cannot pull v2, then schedule the upgrade deliberately.

Operational Impact

Maintenance. Ongoing cost is dominated by the major-version jump: expect a one-time upgrade project plus periodic re-validation whenever FCM changes its API surface. Budget an internal owner — this is not a "set and forget" dependency.

Support. Community OSS with no vendor SLA. Issue response time is best-effort. For anything customer-facing, the internal team must be able to read the package source and patch it; a fork is a reasonable contingency.

Scaling. All sends must be queued — synchronous sends will couple push latency to API request latency and will fall over under a fan-out. Watch for: FCM per-project throughput quotas, per-device rate limits, and unbounded queue growth during retries. Batch where the API allows it, and use exponential backoff with jitter on 429/5xx.

Failure modes.

  • Stale/expired device tokens return UNREGISTERED/INVALID_ARGUMENT; without a pruning job these accumulate and inflate error rates. Needs a token lifecycle table and cleanup.
  • Credential expiry or rotation silently breaks all sends; alert on auth errors as a distinct class.
  • Queue worker down means pushes are accepted by the app and never delivered — monitor queue depth and age, not just job failures.
  • Stale config cache after an env change produces auth failures that look like credential problems.
  • Silent payload-shape regressions after the major upgrade (e.g. notification vs data payload handling) surface as "push not showing on Android" rather than exceptions.

Ramp-up. Low for a Laravel developer on the package itself; moderate for FCM domain concepts (topics vs tokens vs conditions, notification vs data-only payloads, per-platform behavior). Allocate roughly half a day for a developer new to FCM, plus the upgrade spike.

Caveat on this assessment. It is provisional. The only release artifact supplied for v2.0.0 was a changelog URL containing no enumerated changes, so the breaking-change scope, version constraints, and feature set are inferred from the major version bump rather than confirmed. Re-score Technical Risk once the compare diff and README are reviewed.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource