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 Sms Gateway Laravel Package

misaf/laravel-sms-gateway

Driver-based SMS gateway manager for Laravel with separate first-party packages for providers like Twilio, Vonage, Kavenegar, and more. Switch drivers per request, use Laravel’s HTTP client, listen for sent events, and register custom drivers.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit The package follows Laravel's own Manager pattern (analogous to MailManager/QueueManager): a thin core resolves a driver from config, drivers live in separate Composer packages, and sends emit events carrying request/response payloads. For a Laravel codebase this is idiomatic and low-friction — it will feel familiar to any engineer who has configured a Laravel mailer. The core/driver split is the strongest design decision: it keeps vendor SDK weight out of the base install and lets teams swap providers via config or per-request driver selection. Http-client-based drivers are testable with Http::fake(), and custom driver registration gives an escape hatch when a provider isn't covered.

Integration feasibility Mechanically trivial: composer require the core, install one driver, publish config, set credentials. Realistically constrained: the stated floor is PHP 8.3+ and Laravel 13+, which excludes most production applications currently on Laravel 10–12. Unless the constraint is intentionally forward-looking and back-portable, adoption requires either upgrading the host app or forking the package to relax composer.json — both are non-trivial for a TPM to justify on a 1-star dependency.

Technical risk

  • Traction risk (high): 1 star, 0 dependents, opportunity: 6.35. There is no external validation that this works in production anywhere but the author's own app.
  • Bus factor (high): single-maintainer project; no foundation, no sponsor, no commercial support.
  • Version coupling (high): pinning to Laravel 13 means every future Laravel major is a potential hard break, and the package cannot follow the host app's upgrade cadence.
  • Driver surface (medium): most first-party drivers target Iranian providers (Ghasedak, IPPanel, Kavenegar, Magfa, Melipayamak, SMS.ir); only MessageBird and Plivo are broadly international. Provider coverage should be validated against your actual routing needs, plus contractual/sanctions/geo considerations if Iranian providers are involved.
  • Metadata anomaly (medium): a release dated 2026-09-02 warrants verification — confirm tags, changelog fidelity, and whether versions are tagged or just dev-main.
  • Unverified quality signals: no evidence in the excerpt of CI, test coverage, static analysis, or a security policy.

Key questions

  1. Is Laravel 13 a hard requirement or an untested lower bound? Can 11/12 be supported?
  2. What is the tagged version history, and does the core have a semver contract with driver packages?
  3. Is there a test suite/CI, and are driver integrations tested against sandbox or mocked HTTP only?
  4. What are the failure and retry semantics — does a send throw, return a result object, or fire-and-forget? Are duplicate sends possible?
  5. Is there delivery-receipt (DLR) support, or only submission acknowledgement?
  6. Any queueing, rate-limit handling, or 429/timeout behavior built in?
  7. How are credentials and message bodies treated in logs/events (PII redaction)?
  8. Maintainer's stated support commitment and expected response time on issues?

Integration Approach

Stack fit Best fit: greenfield Laravel 13 / PHP 8.3 services with modest SMS volume (OTP, transactional alerts) and a need to abstract one or more providers. Poor fit: mature Laravel 10/12 monoliths, apps needing enterprise support, or teams requiring audited dependencies.

Migration path Do not couple application code to the package's facade or manager directly. Introduce an internal SmsSender contract (or a Laravel Notification channel) and implement it with this package behind an adapter. That preserves optionality: replacing the package later becomes an adapter swap rather than a codebase-wide refactor. Route all sends through queued jobs from day one so retry/backoff/throttling policy lives in your code, not the vendor's.

Compatibility Before committing, run composer why-not misaf/laravel-sms-gateway against the target app, and inspect the core's constraints on illuminate/* and php. Verify each driver package's version aligns with the core version (core/driver version skew is a common failure in split-driver designs). Confirm the HTTP client version and Guzzle compatibility transitively.

Sequencing

  1. Timeboxed spike in a scratch Laravel 13 app: install core + one driver, publish config, send to a test number.
  2. Validate provider coverage against the roadmap of notifications you actually send.
  3. Decide build-vs-adopt: if Laravel 13 constraint or traction is disqualifying, budget for a fork and pin to a commit SHA you control.
  4. Build the internal adapter + queue wrapper + Http::fake-based contract tests.
  5. Integrate non-production and one low-risk production notification type (e.g., internal alerts).
  6. Expand to customer-facing OTP only after observing error rates, latency, and provider-side delivery.

Operational Impact

Maintenance Treat this as a self-maintained dependency. With one maintainer and zero dependents, you are effectively the only consumer; expect to fork, patch, and carry upgrades yourself. Every additional driver package is another surface to track. Budget a recurring line item for dependency review, not just a one-time integration cost.

Support GitHub issues only; no SLA, no security advisory process evident, no commercial escalation. Internal ownership must be explicit — name an engineer accountable for the SMS integration and a runbook for provider outages.

Scaling The package is a stateless HTTP wrapper, so throughput is bounded by the provider's API limits, not by the package. Scaling concerns are yours to implement: queue workers, per-provider rate limiting, timeouts, connection reuse, and concurrency caps. Multi-provider failover is architecturally possible via per-request driver switching, but you must build the routing/failover logic and health checks yourself.

Failure modes

  • Provider outage or elevated latency → unhandled exceptions in request path unless queued.
  • 429/rate-limit responses → no built-in backoff is documented.
  • Silent delivery failure: submission acceptance ≠ handset delivery; without DLR support, "sent" events overstate success.
  • Retry-induced duplicates on OTP paths — needs idempotency at your layer.
  • Event listener exceptions could surface inside the send path; isolate observers.
  • Credential rotation and config drift across driver packages.
  • Encoding/segmentation issues (GSM-7 vs. UCS-2, Persian/Arabic text) affecting cost and truncation.
  • Geo/legal constraints if Iranian providers are used for non-Iranian traffic.

Ramp-up Low for a Laravel developer — the Manager pattern and config publishing are familiar, so a first send is an hour's work. The real ramp-up is operational: writing the adapter, queue policy, observability, and failover runbooks that the package intentionally does not provide. Documentation depth appears limited to README/changelog, so driver-specific behavior (return shapes, error codes) will need to be discovered from source and encoded in your own tests.

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.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log