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

Nova Menu Order Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Getting Started

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:

  1. Read 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.
  2. Install explicitly at the patch level so you get the widened constraint rather than whatever your lockfile already resolved:
    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.
  3. Check for a service provider. Under Laravel 8, package auto-discovery reads the 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.
  4. Publish config if one exists — 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.
  5. Smoke test in 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.

Implementation Patterns

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.

Gotchas and Tips

  • The notes are one line. "Laravel 8" is not a changelog. Diff the actual package between 1.0.6 and 1.0.7 (or read the commit log) before assuming it is a pure constraint change. A patch that only touches composer.json and a patch that rewrites an adapter can carry the same release note.
  • Laravel 8's own breaking changes will bite before the package does. Class-based model factories (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.
  • PHP floor moved. Laravel 8 requires PHP >= 7.3. If your app is still on 7.2, the install failure is your PHP version, not the constraint.
  • Conflicts masquerade as bugs. When 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.
  • Clear caches on every bump: 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.
  • Watch for 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.
  • Extension points to prefer: container bindings and published config are stable contracts; extending concrete package classes or overriding protected methods is not. If you must hook in, prefer decorating the bound contract in your own service provider over subclassing, so patch releases cannot silently change your behaviour.
  • Semver discipline. A compatibility bump shipped as 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.
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.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin