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

Sms Bundle Laravel Package

xi/sms-bundle

xi/sms-bundle adds SMS messaging to your PHP application, providing a configurable service for composing and sending text messages through your chosen gateway. A lightweight option for teams wanting to wire SMS notifications into an existing stack without heavy dependencies.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

First-order finding: the package is misclassified. xi/sms-bundle is a Symfony bundle (Xi\Bundle\SmsBundle) from the Xi CMS project, not a Laravel package. It targets the Symfony 2.x era — bundle class + DI extension + config tree — which is a fundamentally different integration model from Laravel's service providers, facades, and manager patterns. With 2 stars, 0 dependents, and a 0.04 score, this is an abandoned artifact rather than a dependency under active stewardship.

  • Architecture fit: Poor. The reusable portion is limited to the SMS domain surface — a sender interface, message value objects, and per-gateway adapters. Everything framework-facing (bundle bootstrap, container wiring, config semantics) is inapplicable to Laravel and would have to be discarded or rewritten.
  • Integration feasibility: Low. Composer resolution is the first hard blocker: vintage constraints (PHP 5.3-era floor, Symfony 2.x component pins, likely PSR-0 autoloading) will conflict directly with Laravel 10/11's Symfony 6/7 components. Even if resolved with --ignore-platform-reqs, PHP 8 runtime incompatibilities (dynamic properties, removed string-offset syntax, each()) are likely to surface at bootstrap.
  • Technical risk: High. No maintainer, no security response path, no trustworthy CI signal, and unknown transitive dependencies — often third-party SMS gateway SDKs that carry their own staleness and credential-handling problems. The vendor-abandonment risk is not hypothetical; it has already materialized.
  • Key questions for the spike:
    • Does it wrap a gateway SDK or issue raw HTTP calls, and which gateways are covered?
    • What is the actual line count of gateway-specific logic versus framework plumbing?
    • Are there tests, and do they encode behavior worth preserving?
    • Is sending synchronous only, or is there any queue/retry abstraction?
    • What is the license, and are there maintained forks or vendored copies in the wild?
    • What PII does it log by default (phone numbers, message bodies)?

Assessment: not viable as a dependency. Potentially viable as a reference implementation for an SMS gateway abstraction, subject to the spike results.

Integration Approach

Stack fit: none as-is. The correct framing is pattern transfer, not code transfer.

Option Verdict Rationale
Adopt as-is via Composer Reject Framework mismatch + unresolvable constraints + no maintenance
Wrap behind an adapter Conditional Only if the wrapped core is small and fully isolated; transitive risk remains
Fork and modernize Plausible Justified only if gateway logic proves non-trivial to rewrite
Reimplement the domain surface Preferred Small surface area; Laravel-native, queue-aware, testable
Use a maintained alternative Preferred default Laravel notification channels or a current gateway SDK

Migration path (if the fork route is chosen):

  1. Extract the sender contract and message DTO into our own namespace; discard all bundle/DI plumbing.
  2. Re-host as an internal Composer package: PSR-4, PHP 8.2+, Symfony 6/7 constraints, PHPUnit coverage around the adapter.
  3. Implement a Laravel service provider exposing the sender via the container, with config published to config/sms.php and credentials sourced from the secret manager.
  4. Wrap dispatch in a queued job with per-provider rate limiting, retry/backoff, and delivery-receipt handling.
  5. Contract-test against a provider sandbox before any production traffic.

Compatibility: do not pin the upstream package in the main application under any circumstance. If code is retained, it lives in a separate package with modern constraints and an explicit internal owner.

Sequencing: timeboxed source review (1–2 days) → go/no-go on fork vs. reimplement → build adapter + queue → sandbox contract tests → feature-parity check against current sending behavior → decommission any upstream reference.

Operational Impact

  • Maintenance: upstream maintenance is effectively zero; ownership transfers to us on day one. Any adoption must be budgeted as build cost, not integration cost — and the ongoing maintenance line item needs a named owner.
  • Support: no issue triage, no CVE process, no upgrade path. Treat the code as untrusted third-party source requiring internal security review before it touches production credentials.
  • Scaling: SMS dispatch is I/O-bound and bursty. The bundle-era design is almost certainly synchronous, with no queue integration, provider rate limiting, or backoff — all of which we would have to build regardless of which option we choose. That undercuts the main argument for reuse.
  • Failure modes to plan for:
    • Composer resolution failure on upgrade, blocking unrelated dependency work.
    • PHP 8 fatal at autoload or bundle bootstrap.
    • Silent message loss on gateway timeout with no retry or dead-letter path.
    • Config-tree assumptions breaking on framework upgrades.
    • Credentials embedded in bundle config rather than environment/secret management.
    • PII leakage — phone numbers and message bodies written to application logs (GDPR exposure).
  • Ramp-up: the codebase is small (likely low hundreds of LOC), but archaeology cost is high: Symfony 2 idioms are unfamiliar to a Laravel-oriented team. Budget 2–4 engineer-days to fully characterize, plus ongoing ownership if forked.

Recommendation: do not add xi/sms-bundle as a dependency. Use it as a design reference only if the gateway abstraction proves genuinely worth copying; otherwise select a maintained, Laravel-native SMS channel and invest the saved effort in queueing, retry, rate limiting, and PII-safe logging — the operational concerns this package does not address.

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.
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
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource