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

Nexmo Bundle Laravel Package

javihgil/nexmo-bundle

A Symfony bundle that integrates Nexmo (now Vonage) SMS services into your application, handling client configuration and service wiring so you can send text messages through a simple, dependency-injection-friendly interface.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This is not a Laravel package. javihgil/nexmo-bundle is a Symfony2 bundle (Jgm\NexmoBundle) that wires the legacy nexmo/client PHP SDK into Symfony's DI container via an Extension/Configuration pair and XML service definitions, registered through AppKernel. There is no ServiceProvider, no facade, no publishable config — none of the idioms a Laravel integration would need. For a Laravel codebase the only reusable artifact is the shape of the integration (a config schema for api_key/api_secret and a thin service wrapper around the client), which is on the order of 100–200 lines. That is a specification, not a dependency.

Integration feasibility. Low. Composer resolution is expected to fail against a modern Laravel stack: the bundle's constraints sit in the Symfony 2.x / PHP 5.x era and pull the nexmo/client v1 line, which in turn pins Guzzle 5/6 — conflicting with Laravel 8+ (Guzzle 7, Symfony 5/6 components). Forcing install with --ignore-platform-reqs yields runtime class mismatches rather than a working integration. Even inside a Symfony application the bundle would only be viable on an EOL Symfony branch.

Technical risk. High, and concentrated in three places:

Risk Detail
Abandonment Archived, last release 2016-03-01. No security disclosure path, no CVE patching, no issue triage.
Vendor drift Nexmo rebranded to Vonage in 2020; the v1 PHP SDK is EOL. Credential and auth models (API key/secret vs. application ID + JWT) have moved on, particularly for Messages/Voice/Verify.
Validation 7 stars, 0 dependents. Essentially no production signal — no evidence anyone is running this at scale.

The MIT license is permissive, so forking is legally clean; it is the maintenance liability, not the license, that is the blocker.

Key questions.

  1. Is the requirement SMS only, or omnichannel (SMS, WhatsApp, Voice, Verify)? The answer determines whether the legacy SMS API is even the right surface.
  2. Which geographies and sender/registration obligations apply (10DLC in the US, Sender ID registration in the EU)? These are procurement/compliance items that dwarf the library choice.
  3. Who owns credential issuance and rotation, and is there an existing Vonage contract?
  4. Do we need a provider-abstraction fallback (Twilio et al.), i.e. is this a strategic single-vendor commitment?
  5. Are inbound webhooks (delivery receipts, inbound SMS) in scope? That implies signature verification we would have to own.

Integration Approach

Stack fit. Use vonage/client (current major) directly, or skip the SDK for simple SMS and call the REST API through Laravel's Illuminate\Support\Facades\Http, which gives testing fakes, retries, and middleware for free. Bind either behind a first-party SmsSender contract in a VonageServiceProvider; configuration belongs in config/services.php reading from .env, which is the Laravel-native equivalent of what the bundle did for Symfony.

Migration path. Treat the bundle as a reference implementation, not a dependency:

  • Lift the config schema (api_key, api_secret, plus any sender/from default) into a documented config block.
  • Reimplement the client wrapper as a single injected service with an explicit interface.
  • Add a FakeSmsSender for tests so no CI job touches the network.

For a Symfony shop, the equivalent move is plain service wiring in services.yaml against vonage/client, or a maintained bundle — not this one.

Compatibility. Expect a hard wall, not a soft one:

Dimension This package Target stack
Framework Symfony 2.x bundle Laravel 10/11
PHP 5.x era 8.1+
HTTP client Guzzle 5/6 Guzzle 7
Vendor SDK nexmo/client v1 (EOL) vonage/client v4

Sequencing.

  1. Adopt/reject decision (1 day). Confirm the "Laravel package" framing is incorrect and close out adoption; record the reference-only disposition so it isn't re-evaluated.
  2. Spike (1–2 engineer-days). Wire vonage/client in a service provider, send a real SMS to a staging number, verify credential handling end to end.
  3. Abstraction. Define SmsSender + DTOs before the second use case lands, while swapping is still cheap.
  4. Delivery and inbound. Webhook route, signature verification, and receipt persistence — this is the bulk of the real work and is entirely absent from the bundle.
  5. Parallel commercial track. Vonage account, sender registration, and rate-limit/quota terms; these have longer lead times than the code.

Operational Impact

Maintenance. Zero upstream. Adopting this means permanently owning a fork of an abandoned bundle and an EOL SDK — every Laravel, PHP, and Guzzle upgrade becomes our remediation work, with no one upstream to diff against. The first-party alternative is a few hundred lines we already understand.

Support. No maintainer, no vendor relationship, no escalation path. Vonage support will not troubleshoot an SDK that has been EOL for years, which means the first production incident is fully internal regardless of which path we take — the difference is whether we're debugging our own 200 lines or someone else's 2016 code.

Scaling. The bundle contributes nothing to throughput; it is a thin DI wrapper over synchronous HTTP. Scale is governed by provider rate limits and our own queueing. Recommend dispatching sends through a queued job with a rate limiter and idempotency key, and keeping the HTTP call out of the request cycle. Connection pooling is a non-issue at our volume.

Failure modes.

  • Silent misconfiguration at boot — container resolves with blank credentials; failure surfaces only on first send.
  • Hard deploy break — Guzzle/Symfony constraint conflict appears at install or autoload time, not in tests.
  • Unannounced vendor API change — no upstream patching means breakage is discovered in production.
  • Unverified webhooks — spoofed delivery receipts or inbound messages if signature checking isn't built in; the bundle does not provide it.
  • No retry/idempotency — duplicate sends on transient timeouts.

Ramp-up. Negligible for the bundle itself — it is small and readable. The real cost is that it encodes an obsolete pattern: engineers onboarding to it would learn Nexmo-era conventions that no longer match Vonage's current auth and messaging surfaces. Budget half a day of Vonage API orientation (SMS vs. Messages API, signatures, webhooks) per engineer instead.

Recommendation. Do not adopt. The package is archived, framework-mismatched, SDK-EOL, and unvalidated by any dependents. The integration it represents is small enough that a first-party Laravel implementation on vonage/client costs roughly 1–3 engineer-days and eliminates every risk above except the commercial ones, which are unaffected by the library choice.

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.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
adachsoft/php-code-style