henryonsoftware/filament-panel-switcher
A Filament plugin that adds a panel switcher to your admin interface, letting users jump between multiple Filament panels quickly. Simple to install and configure, it keeps navigation tidy when your app ships several panels.
Architecture fit. filament-panel-switcher is a Filament plugin whose scope is narrow and well-bounded: it adds UI and routing affordances that let an authenticated user move between multiple registered Filament panels within one Laravel application. For a TPM, the value proposition is that it converts a common multi-audience pattern (e.g. an admin panel, a customer panel, a partner panel in a single codebase) from custom navigation code into a maintained dependency. It is a presentation/routing-layer concern only — it does not own authorization, tenancy, or session semantics — so architectural coupling is low and adoption is reversible.
Integration feasibility. Integration is registration-based: install via Composer, register the plugin on the panels that should expose the switcher, and the package renders the switcher UI. Effort is measured in hours, not sprints, provided panels already exist and share an authentication guard strategy. The main feasibility question is not "can we install it" but "does our panel topology match what the package assumes" — switcher visibility, cross-panel guard boundaries, and whether panels live on the same or different domains.
Technical risk.
0.x. Semver permits breaking changes in minor bumps. Treat the public API as unstable and pin versions exactly.Key questions. Which Filament major does v0.6.6 target, and is the Laravel 13 support a constraint widening or a tested matrix? Does our panel set share a guard, or do we require cross-guard switching? Is there an escape hatch (feature flag / panel-scoped disable) so we can ship it to one panel first? What is our policy for depending on a 0.x package in production?
Stack fit. Requires Laravel with Filament already present; the plugin is additive and assumes Filament is the UI substrate. If our panel count is one, or if panel switching is already handled by our own navigation, the package adds a dependency without removing work — skip it. Fit is strongest in applications with three or more Filament panels serving distinct audiences.
Migration path. No migration of data or schema is involved. "Migration" here means code migration: replace any bespoke switcher links/partials with the plugin's component, and delete the custom code only after the plugin path is verified in the target environment. Because the package is presentation-layer, the rollback path is equally cheap: unregister the plugin and restore the previous partial. Both directions should be done behind a feature flag.
Compatibility. v0.6.6 explicitly adds Laravel 13 support, which is the reason this release changes our assessment at all — it moves the package from "blocked on our framework upgrade" to "eligible for evaluation on our target version." Compatibility must be confirmed at three levels: our Laravel version, our Filament major/minor, and our PHP runtime. The plugin's composer.json constraints are the source of truth; verify them before committing to a spike. Do not assume Laravel 13 support implies Filament's Laravel 13 support is production-ready — confirm Filament's own release status independently.
Sequencing.
v0.6.6 exactly in a spike branch; read composer.json constraints and the diff from v0.6.5.0.x bump; re-read changelogs rather than relying on caret ranges.Maintenance. Low ongoing code maintenance, but non-trivial dependency maintenance: a 0.x package requires deliberate version pinning and a review step on every minor release. Budget for one deliberate review per quarter rather than continuous work. The absence of prior releases in our assessment record means we are starting cold — establish a baseline of the pinned version, the Filament version, and the Laravel version so future reviews have a diff to reason about.
Support. No commercial support, single maintainer, community-only issue triage. Do not place this package on a path where a maintainer going quiet blocks a release. Mitigation: keep the integration thin enough that we could fork the switcher view in under a day. That means minimizing custom configuration and avoiding deep reliance on undocumented internals.
Scaling. The package is stateless and per-request — it renders navigation based on panel registration. It scales with the application, not against it; there is no new datastore, queue, or cache surface. Cost scales with panel count, not user count. Watch only for UX degradation if panel count grows large enough that the switcher becomes a navigation menu rather than a toggle.
Failure modes.
Ramp-up. Minimal for a developer already fluent in Filament — installation and panel registration are a documented, single-sitting task. The real ramp-up is organizational: getting agreement that panel switching is a shared dependency rather than per-team custom code, and establishing the pin-and-review discipline for a pre-1.0 package. Both are cheap to state and easy to let lapse; assign explicit ownership of dependency review before adoption, not after.
How can I help you explore Laravel packages today?