it-blaster/checkbox-list-bundle
A lightweight PHP bundle for building checkbox lists: define options, render flat or grouped checkbox sets, and manage selected values in forms and list UIs. Useful for reusable selection controls in Laravel/PHP applications.
v1.0.0 is the initial release — there is no migration path, no deprecation list, and no prior assessment to diff against. Treat adoption as greenfield: you are the first generation of users, so validate before you commit.
Minimal steps:
composer.json first. Confirm the require block's PHP and illuminate/* constraints against your app's version. A v1.0.0 package frequently ships with a narrower matrix than you expect (e.g. Laravel 10/11 only, PHP 8.2+).composer require <vendor>/<package> in a throwaway Laravel skeleton, then run php artisan about and php artisan package:discover to confirm the service provider registers cleanly.php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider" (or --tag=...) and diff what lands in config/, database/migrations/, and resources/. Read the published config end-to-end — it is usually the most accurate documentation in a 1.0.0.Where to look first, in order: composer.json → src/*ServiceProvider.php → published config → README → CHANGELOG. The service provider tells you more about real behaviour (bindings, singletons, event listeners, macros) than the README does.
First use case: pick the single narrowest end-to-end path the package advertises — one facade call, one artisan command, one middleware — and get it working in the scratch app before designing anything around it.
Wrap it behind your own boundary. In a 1.0.0 package the public API is a guess. Define a small interface in your domain (App\Contracts\ThingGateway) and let the package sit behind an adapter. When 1.1.0 renames a method, you change one class instead of grepping 40 call sites.
Config over code. Publish the config file, commit it, and drive behaviour from config/*.php and .env rather than hardcoding constructor arguments. This is also your escape hatch if a default turns out to be wrong in production — you can flip it without a deploy of application logic.
Register via the container, not static calls. If the package exposes a facade, prefer injecting the underlying contract. Facades are convenient in a controller but painful in queued jobs and unit tests where the root facade isn't booted.
Roll out behind a flag, per-service. Enable the package for one job/queue/route first. Because there is no release history, you have no signal on how it behaves under concurrency, retries, or large payloads. A canary endpoint or a single queued job gives you that signal cheaply.
Test at the seam. If the package ships fakes or a ::fake() helper, use them. If not, write contract tests against your adapter and a single integration test that hits the real binding — that integration test is what catches a breaking change on the next composer update.
CI matrix from day one. Add the lowest and highest supported Laravel/PHP versions to your pipeline now. First releases are where version-constraint bugs live, and you want to discover them in CI rather than when you bump laravel/framework.
"^1.0" but review every changelog before running composer update. A 1.0.0 package has no established policy on whether 1.1.0 is additive or breaking; assume the worst until a changelog proves otherwise.php artisan config:cache and route:cache, confirm provider registration order; a package that depends on another provider being booted first will fail silently in cached mode but work locally.vendor:publish --force is destructive. On the first release, publish tags are unversioned. Publishing again after an upgrade can overwrite config you've customised. Record which tags you published and diff manually instead of re-forcing.php artisan queue:restart). A package that hooks into the container will appear "not working" purely because the long-lived worker still holds the old container.php artisan config:clear — stale config is the single most common false alarm; (2) confirm the provider is in bootstrap/providers.php or config/app.php; (3) dd(app()->bound(Contract::class)) to prove the binding exists; (4) check whether the package registers middleware you haven't attached to a route.app()->bind() your own implementation in a service provider — do not edit vendor/. Forking a 1.0.0 is a maintenance trap you cannot escape later.How can I help you explore Laravel packages today?