survos/search-bundle
A Symfony bundle from Survos for adding search functionality to your application. It provides configuration and integration helpers to connect search services, index content, and query results, giving developers a starting point for building search experiences in Symfony.
Because 2.0.0 shipped as a major version bump with an empty changelog body, treat the upgrade as a re-onboarding rather than a patch. The first hour should be spent reading source, not writing features.
^2.0 explicitly (composer require vendor/package:^2.0) and open the tagged diff (git log --oneline v1..v2 or the GitHub compare view) before running composer update. In a major release with no notes, the diff is the changelog.php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider" --force for config, then publish migrations separately so you can read them before they run. Diff the published config against your committed copy — renamed or removed keys are the most common silent break in a major.php artisan package:discover and confirm the provider and any facades/aliases registered. If you manually list providers in config/app.php, check the class name and namespace still exist.src/ root (contracts and the service provider tell you the public API surface faster than docs), config/*.php (every key is a supported extension point), and the package's own tests/ (they encode the intended usage better than README snippets, which often lag a major release).Resolve through the container, never new. Bind the package's contract in a service provider and inject it. This is the single pattern that makes 2.0.0 upgrades survivable: if the concrete class moves or is split, only the binding changes.
// App\Providers\AppServiceProvider::register()
$this->app->bind(
\Vendor\Package\Contracts\Client::class,
fn ($app) => $app->make(\Vendor\Package\Client::class)
);
Wrap the package behind your own thin adapter. A App\Services\PackageGateway with three or four methods means the rest of the codebase never imports the vendor namespace. When 3.0 lands, you edit one file.
Drive behaviour from config, not from calls. Anything the package exposes as a config key — drivers, endpoints, retry counts, queue names — belongs in config/ (with env fallbacks) rather than as a hardcoded argument. This is what makes staging/production divergence testable.
Isolate side effects in jobs. If the package dispatches HTTP calls, writes files, or talks to a third party, call it from a queued job with $tries, $backoff, and failed() defined. Retries at the package layer and retries at the queue layer compound — pick one.
Feature-test at the boundary. Use RefreshDatabase, the package's fake/Http::fake() equivalent if provided, and assert on your adapter's output rather than internal package state. Test the failure path (Http::fake with a 500, or the package's exception class) as deliberately as the happy path — major versions frequently re-typed exceptions.
Staged rollout for the major. Ship 2.0.0 to a branch, run the full suite plus one manual smoke test of each integration point, then merge. A major with no notes has no migration guide; your test suite becomes that guide.
php artisan config:clear before debugging anything. A stale bootstrap/cache/config.php will make a renamed 2.0 key appear to still work in one environment and fail in another.--tag=package-config and --tag=package-migrations explicitly; if the tag is wrong, vendor:publish exits 0 and silently copies nothing. Confirm files actually landed.php artisan migrate --pretend first and read the SQL.^1.0, Composer may resolve to a partial upgrade or conflict. Run composer why-not vendor/package 2.0.0 before assuming the bump is safe.php and illuminate/* minimums. Check composer.json in the package directly — this is the break that bites CI but not local dev.Log::debug() inside the package's entry point via a local path repository override rather than editing vendor/ (which composer install will erase). Or use php artisan tinker to app()->make() the class and inspect state directly.How can I help you explore Laravel packages today?