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

Filament Menu Builder Laravel Package

biostate/filament-menu-builder

A drag-and-drop menu builder for Filament panels. Create and manage nested navigation menus visually, add custom links or model-based items, reorder entries easily, and integrate flexible, configurable menus into your Laravel app.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. biostate/filament-menu-builder is a Filament panel plugin that provides an admin-side menu composer backed by kalnoy/nestedset. It occupies the "content navigation" slot in a Laravel + Filament stack: hierarchical menu records persisted with nested-set columns (_lft/_rgt/parent_id/depth), edited through a Filament UI, and rendered into Blade/front-end output. It is an application-layer package, not infrastructure — no queue workers, no external services, no runtime daemon. It fits cleanly wherever a Filament admin panel already exists and menus are currently hard-coded or modelled with a naive parent_id tree.

Integration feasibility. Low-friction. v5.1.0 is a minor release whose only runtime change is a widened Composer constraint; everything else is CI, test-toolchain and static-analysis housekeeping. It resolves the install conflict reported as issue #31 (Laravel 13 + nestedset v7), which was previously a hard blocker for anyone on the Laravel 13 line. Integration surfaces are conventional: composer require, plugin registration on the Filament panel, published migrations/config, and a nested-set-enabled model. No bespoke service container wiring or event contracts are implied by the release.

Technical risk.

  • nestedset v6 → v7 is a major-version jump gated on Laravel 13. The package does not control that library's API surface. Behavioural or signature changes in tree manipulation (moveTo, sibling ordering, scope semantics) would surface inside this plugin first. Treat the Laravel 13 path as "supported by constraint, unproven in our codebase" until exercised.
  • PHP floor divergence. Laravel 11/12 run on PHP 8.2; Laravel 13 requires PHP ≥ 8.3. A mixed fleet must track two PHP floors, and 8.2 is excluded from the L13 matrix — so 8.2 + Laravel 13 is an unsupported combination we should enforce in CI, not discover in staging.
  • Filament v5 coupling. Dropping the manual BladeCaptureDirectiveServiceProvider registration confirms a hard dependency on Filament v5 behaviour. Filament v4 (or earlier) consumers are outside the tested support envelope; the release does not claim otherwise, but it also does not state a floor.
  • Regenerated PHPStan baseline. A regenerated baseline can legitimately track a toolchain bump (larastan 3 / PHPStan 2) or can quietly absorb new findings. Low severity, but worth confirming it is the former.
  • Evidence base is thin. This assessment derives from release notes only — no source, no dependency manifest, no issue history. Every claim above needs a 30-minute verification pass against the repo before it is used to justify a decision.

Key questions.

  1. What is the supported Filament range — is v5 a hard floor, or does v4 still work?
  2. Are there documented breaking changes in nestedset v7 that affect this plugin's tree operations, and is there a migration note for existing v6-backed data?
  3. Is Laravel 13 tested against a GA release or a pre-release branch? If pre-release, what is the re-validation commitment at GA?
  4. Does the baseline regeneration hide new findings, or purely reflect the larastan 3 / PHPStan 2 rule set?
  5. Is code coverage still collected after the pcov driver change, or was it dropped in favour of failOnWarning stability?
  6. Who maintains the package, and what is the bus factor and release cadence over the last 12 months?

Integration Approach

Stack fit. Targeted at Laravel 11+ with Filament v5 on PHP 8.2+ (8.3+ for Laravel 13). If our admin panel is already Filament-based, the plugin is additive and does not perturb existing panel configuration. If we are not on Filament, the cost is not this package — it is adopting Filament, and this package should not be the thing that forces that decision.

Migration path. v5.0.4 → v5.1.0 is a minor bump with no data migration, no config key renames, and no published-asset changes. Composer will resolve nestedset v6 on Laravel 11/12 exactly as before, so existing installs are byte-for-byte unaffected at runtime. The only reason to take it deliberately is to unblock Laravel 13. For a Laravel 13 migration specifically, sequence the framework upgrade first, then this package, then verify tree integrity against the new nestedset major.

Compatibility. Two independent axes to pin: Laravel (11/12/13) and PHP (8.2/8.3+). Laravel 13 × PHP 8.2 is explicitly untested and should be excluded by a Composer platform constraint. Downstream, confirm our own Filament version resolves against the plugin's declared range before scheduling work — this is the most likely place a "supported" claim fails in practice.

Sequencing.

  1. Verify the repo: Filament floor, nestedset v7 changelog, PHPStan baseline diff, maintainer activity.
  2. Add the package to a non-production panel and smoke-test CRUD, reorder, and render paths on our current Laravel/PHP combination.
  3. Only then run the Laravel 13 upgrade branch with this package included, with an explicit tree-integrity check after migration.
  4. Defer the Laravel 13 lane entirely if we have no L13 timeline — there is no other reason to move off v5.0.4.

Operational Impact

Maintenance. The release signals healthy engineering hygiene more than new capability: a three-version Laravel CI matrix, PHPStan and Pint enforced on pull requests and on dependency-manifest changes, dev constraints widened so the toolchain resolves across every matrix cell, and fail-fast disabled to surface the full failure set. That is a maintainer investing in the boring parts. The counterweight is that all of it is test-infrastructure work — the shipped runtime delta is one Composer constraint. Judge the package on its issue response time and release cadence, not on this changelog.

Support. Single-vendor, and likely small-team. Budget for the possibility that a nestedset v7 regression is fixed upstream on their schedule rather than ours. Mitigation: keep the tree-manipulation surface behind a thin application-level service so a swap or a local patch is contained, and vendor-fork readiness is a decision we make before we need it.

Scaling. Nested-set reads are cheap — a whole menu tree is one indexed range query, which is exactly right for a render path hit on every page. Writes are the concern: insert, move, and delete rewrite _lft/_rgt ranges across affected rows, so reordering a large menu is an O(n) update inside a transaction. For realistic menu sizes (tens to low hundreds of nodes) this is a non-issue. For very large or frequently reordered trees, expect lock contention and possible deadlocks under concurrent admin edits. Reads dominate, so cache the rendered menu aggressively and invalidate on write.

Failure modes.

  • Corrupted nested-set ranges from a write that partially fails — orphaned nodes, overlapping _lft/_rgt, or items vanishing from the tree view. All mutations must be transactional; schedule a periodic integrity check (the nestedset package ships check/repair commands) and alert on mismatch.
  • Stale menu cache after a reorder — the most common user-visible symptom, and the one most likely to be reported as "the plugin is broken."
  • Silent breakage on a Laravel 13 upgrade if nestedset v7 alters tree semantics; caught only by an explicit post-migration tree assertion.
  • Blade rendering path — the dropped BladeCaptureDirectiveServiceProvider registration is test-only and does not change runtime behaviour, but it confirms the render path is coupled to Filament v5 internals. Pin the Filament version rather than floating it.
  • PHP floor drift — an L13 image accidentally built on 8.2 will fail in ways the upstream matrix deliberately does not cover.

Ramp-up. Low for anyone who has used Filament — the admin UI is conventional, and there is no new runtime concept to learn beyond registering the plugin and publishing assets. The one genuine learning curve is nested-set semantics for developers who will write against the model directly: _lft/_rgt are not intuitive, and hand-editing rows outside the provided tree API is how corruption happens. Document that the tree API is the only sanctioned write path, and that direct SQL against these columns is prohibited. Estimate half a day for a Filament-fluent developer to ship a working menu, plus an hour of team briefing on the nested-set invariants.

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.
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus