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

Navigation Bundle Laravel Package

everlutionsk/navigation-bundle

A Symfony bundle for rendering multiple navigation instances that are registered dynamically via tagged services. It supports containers, nested items, routing, breadcrumbs, filtering, sorting, translation, and highlighting the current item.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — primary finding: this is not a Laravel package. everlutionsk/navigation-bundle is a Symfony bundle, not a Laravel package. It integrates through mechanisms Laravel does not provide: a Bundle class, a DependencyInjection extension, a compiler pass that collects services tagged as navigation items, and (in all likelihood) a Twig extension for rendering. Laravel's equivalents are service providers, tagged container bindings, and Blade. The bundle will not "boot" in a Laravel application in any supported sense. Any evaluation framed as "Laravel/PHP package" needs that corrected before a decision is made.

What is actually reusable. The README explicitly separates concerns: the bundle is thin orchestration/rendering glue, and the underlying navigation object model lives in the sibling package everlutionsk/navigation. That library is the realistic integration surface for a Laravel team — it is a plain PHP library with items, containers, route resolution, current-item highlighting, and filtering. The bundle adds Symfony DI wiring and a renderer on top.

Integration feasibility.

  • Symfony application: straightforward. composer require, enable bundle, tag services, render. Low effort, well-trodden pattern, and the tagged-service registration model is exactly what Symfony is designed for.
  • Laravel application: feasible only as an adapter project. Consume the core library, re-register containers via a service provider, and port the Twig renderer to Blade. Estimated effort is small but non-zero and non-trivial to keep idiomatic; this is custom code your team owns.
  • Installing the bundle directly in Laravel: not recommended. It will likely pull symfony/framework-bundle and conflict with Laravel's pinned Symfony components (http-foundation, http-kernel, routing, console), producing composer resolution failures or runtime boot errors.

Technical risk.

  • Adoption signal is weak. 2 stars, 0 dependents, single maintainer, last release November 2024. There is no evidence of production usage outside the author's own projects. The composite score of 8.36 is difficult to reconcile with these signals and should not be taken at face value; the low opportunity score (19.29) is the more honest indicator.
  • Support and security exposure. No dependents means no downstream patching pressure and no community CVE surfacing. MIT license is permissive, which is the mitigation: the code is small enough to vendor or fork.
  • Version drift. Symfony bundle constraints move with Symfony majors; a gap in maintenance can make the bundle un-installable on the next Symfony LTS. Since your adapter would sit on the core library rather than the bundle, this risk is partially deflected.
  • Bus factor of one. No contributor depth, no governance, no release cadence to depend on.

Key questions to resolve before committing.

  1. Is everlutionsk/navigation (core) genuinely framework-agnostic, and what are its PHP and dependency constraints?
  2. What exactly does the bundle add beyond the library — rendering only, or also route generation, current-item detection, and filtering behavior we would have to reimplement?
  3. Which Symfony versions are supported, and does the bundle's composer.json constrain symfony/framework-bundle in a way that conflicts with a Laravel install?
  4. Is there test coverage for the library, and does the Scrutinizer badge reflect current code or a stale snapshot?
  5. Is "navigation" here a static menu tree, or permission-aware/contextual navigation? The answer determines whether we are adopting a library or building a feature.
  6. Who is the named internal owner if upstream goes quiet within 6–12 months?

Assessment. Adopt only as a source of design ideas plus a small dependency, not as a framework integration. If the team is Laravel, treat this as "vendor the navigation library and write a ~1-day adapter." If the team is Symfony, it is a reasonable but under-supported convenience and should be evaluated against hand-rolling a compiler pass, which is not much code.

Integration Approach

Stack fit.

  • Symfony stack: direct fit. Bundle registration, tagged item services, Twig rendering — no adapter needed.
  • Laravel stack: do not install the bundle. Install everlutionsk/navigation and reproduce the bundle's value in Laravel idioms:
    • NavigationServiceProvider registering each navigation container as a singleton.
    • Laravel's $this->app->tag([...], 'navigation.item') and $this->app->tagged('navigation.item') — this maps almost one-to-one onto Symfony's tagged-service compiler pass and is the cleanest translation of the bundle's core idea.
    • A Blade component or @navigation('main') directive replacing the Twig function.
    • A small CurrentRouteResolver implementing the library's "highlight current item" contract against Laravel's Route::current().
  • Mixed or legacy stack: only sensible if the navigation needs are trivial; otherwise the adapter cost exceeds the benefit.

Migration path.

  1. Spike (1–2 days). Branch: composer require everlutionsk/navigation, instantiate a container, render it in a Blade view, confirm no dependency conflicts with the Laravel version in use. This is the go/no-go gate.
  2. Adapter (2–4 days). Service provider, tagged registration, Blade renderer, route-parameter resolution using Laravel's route() helper, current-item resolver.
  3. Pilot (1 sprint). Migrate a single low-risk navigation region — footer or utility nav — behind a feature flag.
  4. Expand. Move primary navigation once the pilot proves stable; delete the old menu-building code path rather than running both.

Compatibility considerations.

  • Pin the dependency to an exact version; do not use a floating constraint on a package with a single maintainer.
  • Verify PHP version support against your runtime, and check whether the library depends on any Symfony components directly (a symfony/routing dependency is plausible and would need reconciliation with Laravel's pinned version).
  • If the bundle is ever desired, it requires Symfony 5/6/7 (verify) and is incompatible with Laravel's component pins.
  • Blade renderer must handle escaping and attribute merging carefully; the Twig renderer's exact output contract should be re-derived from the README's rendering section, not assumed.

Sequencing. Gate everything on the spike. Do not schedule pilot work until dependency resolution and basic rendering are proven on the target Laravel version. If the spike fails on conflicts, fall back to hand-rolled navigation (a container class plus a Blade component is genuinely a few hundred lines) and revisit only if navigation complexity grows.

Operational Impact

Maintenance. The realistic operating model is internal ownership with upstream as a reference. Budget a small but permanent maintenance line: dependency bumps on Laravel/PHP upgrades, and occasional review of upstream commits. The adapter code is yours; the library is effectively frozen. MIT licensing makes forking viable, which is the correct contingency to document now rather than after an abandonment.

Support. There is no vendor, no SLA, no community to lean on — 0 dependents means no one else is filing issues you can learn from. Support is entirely internal. This is acceptable for a small, single-purpose library and unacceptable for anything load-bearing without an owner named in the runbook.

Scaling. Rendering navigation is computationally cheap; the risk is not request throughput but construction cost. If navigation items are permission-aware or context-dependent, ensure containers are built once per request (singleton-scoped), not per render call. Watch for N+1 patterns if items resolve route parameters from the database. For large menus, cache the serialized item tree and invalidate on content change rather than rebuilding per request. Current-item highlighting is inherently per-request and cheap.

Failure modes to instrument.

  • Empty or missing container: renders nothing, silently. Add an assertion or log when a requested navigation name has no registered container — silent disappearance of primary navigation is a user-visible outage that is easy to miss.
  • Route resolution failure: an item referencing a removed route throws or renders a dead link. Validate item route names at boot in non-production, or wrap resolution in a try/catch with a logged warning.
  • Composer resolution break: the highest-probability operational incident. Pin versions and run dependency updates in CI, not ad hoc.
  • Accidental bundle installation: a developer follows the README literally and pulls symfony/framework-bundle into a Laravel app. Document the constraint explicitly in the repo README and in onboarding notes.
  • Upstream disappearance: no release for 12+ months. Trigger the fork-and-vendor contingency on a defined date, not on discovery of a breakage.

Ramp-up. The API surface is small — items, containers, tags, rendering, current-item highlighting — and a mid-level developer can be productive in under a day. The real ramp cost is the framework bridge, which is bespoke knowledge held by whoever writes it. Mitigate with tests that assert rendered output for representative navigation trees, and a short internal note mapping each Symfony bundle concept to its Laravel equivalent. Keep the Blade renderer thin so that a future migration to a maintained package or hand-rolled solution is a contained change.

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.
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
elmogy/larafast