normanhuth/nova-menu-order
A Laravel Nova package for managing menu order in your admin panel, letting you rearrange navigation and menu items with drag-and-drop sorting. Lightweight and easy to configure for Nova resources.
Release 1.0.7 is a framework-compatibility release: its only stated change is Laravel 8 support. Treat it as a patch-level bump that widens the install constraint, not as a feature release. Nothing in the notes signals a new API surface, so the day-one job is confirming your app actually resolves the constraint.
First steps, in order:
composer.json before installing. Check the require block for the illuminate/* or laravel/framework constraint. If 1.0.7 is the first version to allow ^8.0, the constraint will be visible there — that single line tells you whether earlier 1.x releases will hard-conflict under Laravel 8.composer require vendor/package:"^1.0.7" --with-all-dependencies
The --with-all-dependencies flag matters on Laravel 8 upgrades because transitive illuminate/support constraints are the usual source of "not installable" errors.extra.laravel.providers and extra.laravel.aliases blocks. If the package predates auto-discovery, register manually in config/app.php; if it has the block, no registration is needed.php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider" — then php artisan config:clear. Stale cached config is the single most common reason a newly installed package appears inert.tinker by resolving the package's main class from the container rather than new-ing it. If it resolves, bindings and config are wired; if it throws, you have a registration problem, not a logic problem.Best first use case: take the package's README example and run it inside a test, not a route closure. You get a reproducible failure, RefreshDatabase isolation, and something to paste into an issue if 1.0.7 misbehaves.
Pin the constraint, not the package. If Laravel 8 support landed in 1.0.7, earlier 1.x releases are unusable in your app. Use "^1.0.7" rather than "^1.0" — semver ^1.0 would allow resolving back to 1.0.0, which cannot satisfy your framework.
Keep the framework coupling in one place. Wrap package usage behind your own class or interface and bind it in a service provider. This is especially valuable here: the package's Laravel 8 bump means it now has to straddle multiple framework majors, which historically correlates with adapter churn in later patches. A one-class seam turns a future 1.1 upgrade into a single-file change.
Resolve from the container, never instantiate directly.
// Preferred — respects bindings, config, and test doubles
$service = app(SomePackageContract::class);
Constructor-inject into controllers, jobs, and commands instead of calling app() inline; Laravel 8 resolves those graphs automatically and it keeps the package out of your test setup.
Configuration over code. Publish the config file, drive it from env() in the config only (never call env() outside config/), and commit the config with sane defaults. On Laravel 8, config:cache is standard in deploy pipelines and env() calls outside config files silently return null once cached.
Test against the package's boundaries. Use RefreshDatabase for anything touching Eloquent, and stub or swap() the package's main binding for your integration tests. If the package ships its own test helpers, prefer those over hand-rolled fixtures — they track the package's internal expectations across patch releases.
CI matrix. A package claiming Laravel 8 support deserves a matrix row for laravel/framework:^8.0 on the PHP versions Laravel 8 supports (7.3–8.0, though 8.1 is generally fine by 8.x patches). Add it alongside your existing rows; it is cheap and catches constraint regressions before composer update does.
Deploy hygiene. After bumping, run php artisan config:cache and php artisan route:cache locally before shipping. Some packages register closures or use non-cacheable route definitions, and Laravel 8 will fail route:cache loudly in your terminal rather than quietly in production.
composer.json and a patch that rewrites an adapter can carry the same release note.HasFactory, Database\Factories\*), the default app/Models namespace, the RouteServiceProvider::$namespace default becoming null, and the shift to Illuminate\Support\Str are the usual suspects. A package that merely allows Laravel 8 does not necessarily adopt class-based factories — if it ships factories or seeders written in the old style, expect friction.composer require fails, run composer why-not vendor/package 1.0.7 — it names the exact package holding the constraint back. Do this before downgrading anything.php artisan config:clear && php artisan cache:clear && php artisan view:clear, then composer dump-autoload. Auto-discovery is cached in bootstrap/cache/packages.php; a stale file there makes a correctly installed provider invisible.illuminate/* vs laravel/framework. Packages requiring individual illuminate/support components can still conflict with a full laravel/framework install if the version constraints diverge. If 1.0.7 uses the split packages, verify both resolve to the same major.1.0.7 is a signal the maintainers treat framework support as non-breaking. That is convenient for you now, but it means you should read the changelog on every 1.x patch rather than trusting the version number alone.How can I help you explore Laravel packages today?