omakei/laravel-nextsms
omakei/laravel-nextsms is a Laravel package for sending SMS through NextSMS. Configure your credentials, send single or bulk messages via a clean API, and add SMS delivery to Laravel notifications, alerts, OTP flows, and other workflows without extra boilerplate.
The 2.0.0 release is primarily a compatibility bump: it declares support for Laravel 9. There are no new public APIs called out in the release notes, so treat this as a maintenance upgrade rather than a feature release. Start by confirming your application's constraints line up:
Check your PHP and Laravel versions. Laravel 9 requires PHP 8.0+, and this package's composer.json will now reflect that. If you are still on Laravel 8/PHP 7.4, stay on the previous major line.
Read the package's composer.json and UPGRADE.md/CHANGELOG.md first. With a major version bump, the most likely breaking changes are raised minimum versions (PHP, illuminate/*, and test/dev dependencies), not behavioural changes. Confirm whether the package renamed any service provider, facade, or config keys between majors.
Install and publish config:
composer require vendor/package:^2.0
php artisan vendor:publish --provider="Vendor\\Package\\PackageServiceProvider"
First use case: wire the package into a single feature path (one controller, job, or console command), run it against a Laravel 9 app, and confirm the service provider auto-discovery registers correctly (php artisan about or php artisan package:discover).
The fastest sanity check is the package's own test suite against your Laravel version — if the maintainers ship a matrix in CI, mirror that locally before touching application code.
Because the release is a compatibility update, day-to-day patterns should mirror whatever the package already documented for the 1.x line. Practical guidance for adopting it in a Laravel 9 codebase:
"vendor/package": "^2.0" rather than 2.0.0, so future Laravel 9 patch-compatibility fixes arrive automatically. If the package has a extra.laravel.dont-discover entry, decide explicitly whether to rely on auto-discovery or register the provider manually in config/app.php (or bootstrap/providers.php on newer skeletons).config/. Publish once, then treat the published file as application-owned. Any values you need per-environment should come from .env via env() in the config file, not from direct env() calls in application code.new-ing it, so config and any bound interfaces are respected. In tests, swap it for a fake or use the package's provided test helpers if it ships any.composer update vendor/package --with-dependencies, re-publish config only if the changelog says the config schema changed, and clear caches (php artisan config:clear, php artisan cache:clear) before validating behaviour.composer why-not vendor/package 2.0.0 and composer outdated --direct before assuming a clean upgrade.$namespace property from RouteServiceProvider and changed several framework internals. If the package touches routing, facades, or service provider bootstrapping, verify those paths explicitly — this is where compatibility bumps commonly hide regressions.env() at runtime outside the config file will silently break under config:cache. Keep env() calls confined to config/*.php.php artisan package:discover -v, check bootstrap/cache/packages.php, and look for a stale cached provider after upgrading.$this->app->bind(...)) over forking the package. This keeps your customisation intact across future patch releases.composer.lock after the upgrade so every environment and CI runner resolves the identical set of versions.How can I help you explore Laravel packages today?