rupadana/filament-panel-switch
A Filament plugin that adds a panel switcher to your admin interface, letting users move between registered Filament panels without manually editing URLs. Useful for apps with separate admin, staff, or tenant panels. Install via Composer and register the plugin on your panel.
Architecture fit. rupadana/filament-panel-switch is a thin Filament plugin that surfaces a panel-switching affordance (typically a user-menu or render-hook entry) inside a multi-panel Filament application. It sits on top of Filament's existing panel registry and Filament::getPanels() rather than introducing its own persistence layer, routing table, or middleware stack. For a codebase already running multiple Filament panels behind a shared auth guard, the architectural surface area is minimal: one plugin registration per panel provider, optional config publish, and no schema changes. That makes it a low-coupling dependency — it decorates Filament's UI rather than owning domain logic.
Integration feasibility. Install is a standard Composer require plus ->plugin(PanelSwitchPlugin::make()) in each relevant panel provider. Realistic effort for a team already on Filament is well under a day, including QA of cross-panel navigation, authorization boundaries, and tenancy behaviour. The main unknown is not integration mechanics but what v3.0.0 actually changed.
Technical risk. v3.0.0 is a major-version bump shipped with a release body containing only an auto-generated changelog URL and no prose, no upgrade guide, and no enumerated breaking changes. For a semver-major release this is a significant information gap, and it is the dominant risk in this assessment. A major bump on a Filament plugin conventionally signals either a Filament major alignment (e.g. Filament v4 support) or a change to plugin registration/config/namespace conventions — both of which are breaking for consumers. Secondary risks: single-maintainer project (bus factor), no documented support window, and no prior assessment baseline to diff against, so v3.0.0 is being evaluated cold.
Key questions.
composer.json require, and does it drop Filament v3 support?canAccessPanel) and multi-tenancy, or can it surface a link to a panel the user cannot legitimately enter?Stack fit. Target is a Laravel application (10.x–12.x) running Filament with two or more panels — the canonical case being a separate admin and app/staff panel, often with distinct guards or tenancy. The package is only meaningful in a multi-panel configuration; single-panel installs gain nothing and should not adopt it.
Migration path. Treat v3.0.0 as unverified until the 2.x→3.x diff is reviewed. Recommended path:
^2.x on the current branch to freeze the working baseline.composer update rupadana/filament-panel-switch -W, and inspect the resulting lock diff for Filament/PHP constraint movement.vendor:publish --tag=...) and clear config:cache, view:cache, and Filament component caches — stale published views are the most common post-upgrade failure for Filament plugins.Compatibility. Verify three axes explicitly: Filament major version (v3 vs v4 — the likeliest driver of this bump), PHP minor (8.1/8.2/8.3), and Laravel major. Confirm behaviour under multi-tenancy (->tenant() panels), since panel switching across tenant boundaries is where this class of plugin most often produces incorrect or over-permissive links. Also confirm the switch item honours Filament's panel visibility/authorization callbacks rather than rendering all registered panels unconditionally.
Sequencing. Do not bundle this upgrade with a Filament major upgrade. If the team is moving to Filament v4, sequence as: (1) upgrade Filament and stabilise, (2) re-evaluate the plugin against the new major, (3) adopt v3.0.0 only once the diff is understood. If the team is staying on Filament v3, first confirm v3.0.0 of the plugin still supports it — a major bump that drops v3 would force an unrelated platform upgrade and should be deferred or the plugin replaced with a handful of lines of custom render-hook code.
Maintenance. Low ongoing maintenance cost in steady state — no migrations, no scheduled jobs, no external services. The real maintenance burden is dependency-graph churn: the plugin's version is coupled to Filament's major, so any Filament upgrade reopens this evaluation. Ownership should sit with whoever owns the Filament panel configuration, not a separate team.
Support. Community-supported, single-maintainer, no commercial SLA. The empty v3.0.0 release body is a weak signal about release hygiene and raises the cost of future upgrades (each will require source diffing rather than reading notes). Mitigate by maintaining an internal fork or a pinned-commit policy if the plugin becomes load-bearing for navigation.
Scaling. Runtime cost is negligible — one render-hook contribution per authenticated page render, plus a small panel enumeration. No measurable impact at any realistic user count. The scaling concern is organisational, not technical: as panel count grows (admin, staff, partner, customer), the plugin's panel-enumeration and authorization behaviour becomes materially more important, and cross-panel authorization bugs scale with panel count.
Failure modes.
Ramp-up. A Laravel developer familiar with Filament's plugin and render-hook APIs needs roughly 2–4 hours to install, read the source, and validate behaviour across panels and guards. A developer new to Filament needs about a day, mostly spent understanding panel registration and authorization callbacks. Budget an additional half-day for the v2→v3 diff review, which is the non-trivial part of this specific upgrade.
Recommendation. Do not adopt v3.0.0 on the basis of the published release notes alone — they contain no substantive change information. Freeze on the current 2.x line, obtain the commit diff and composer.json constraint changes, then re-assess. Given the plugin's small surface area, also weigh the build-vs-buy option: a custom render-hook that lists Filament::getPanels() filtered by canAccessPanel() is on the order of 30–50 lines and eliminates both the dependency and the bus-factor risk.
How can I help you explore Laravel packages today?