- Does hammadzafar05/mobile-bottom-nav support Filament v4 and v5?
- Yes. The package is a native Filament plugin with a Composer constraint of ^4.0 || ^5.0, so it installs on either major version. The README recommends running Filament 4.11.5+ or 5.6.5+ because earlier releases in both majors carry published security advisories, including an unauthenticated temporary file upload on auth pages. The plugin itself works with any 4.x or 5.x, so the framework patch level you run is your application's call.
- How do I install and register the mobile bottom navigation plugin in a Laravel app?
- Run composer require hammadzafar05/mobile-bottom-nav, then add MobileBottomNav::make() to the ->plugins([...]) array in your panel provider's panel() method. There is no install command, no config publish step, no migration, and no CSS build required. Registration is the entire setup, and removing that one line is a complete rollback.
- Do I need a custom Filament theme or Tailwind @source directive for the bottom bar?
- No. As of version 1.0.2 the package ships inline CSS instead of Tailwind utility classes, which explicitly removes the need for an @source directive or any theme compilation on the consuming side. You do not need to create a custom theme, rebuild assets, or touch your tailwind.config.js. That also means the bar renders correctly out of the box on a stock Filament panel.
- How do I change how many items appear in the mobile bottom bar?
- Use the fluent fromNavigation() method, which takes the total number of slots including the More button. fromNavigation(5) gives you four navigation items plus More, while fromNavigation(4) gives you four items and no More button at all. The default is two navigation items plus a More button that opens the sidebar.
- Can I hand-curate the bottom navigation items instead of auto-extracting them?
- Yes. Auto-extraction is the default and simply reads your panel's navigation registry, but you can pass your own set with ->items([...]) using MobileBottomNavItem objects. Each item supports icon, activeIcon, URL, badge, and visible() closures, and versions 1.1 and 1.2 added closure support for label() and badges. That is enough to handle role-based visibility and count-based badges without forking the package.
- Does this package add database queries to every Filament panel page?
- Potentially, depending on how you configure it. Closure-based badges and visible() predicates are evaluated at render time, so any closure that hits the database adds a query to every page that renders the panel. For a handful of static items the cost is negligible, but if you are computing unread counts or similar per item, benchmark the panel before shipping to production.
- Does the bottom navigation support dark mode and iPhone safe-area insets?
- Yes, both are supported out of the box. The bar respects dark mode so it matches the rest of your Filament panel styling, and it applies safe-area inset padding so it sits above the iOS home indicator rather than behind it. No extra configuration is needed to enable either behavior.
- At what breakpoint does the bottom bar hide on desktop and tablets?
- The bar is fixed to the bottom on mobile viewports and stays hidden on desktop screens. The practical thing to verify is that the package's cutoff matches your panel's own responsive breakpoint, because a mismatch produces either a dead band where neither navigation is usable or doubled navigation at tablet widths. Test at the exact widths where your sidebar collapses.
- How does the More button work, and does my mobile sidebar need to remain enabled?
- The More button opens your Filament sidebar rather than rendering its own overflow menu, so the overflow path depends on the sidebar being enabled and reachable on mobile. If your panel hides the sidebar on small screens or uses a non-collapsible configuration, the More button has nothing to open and those extra navigation items become unreachable. Confirm your sidebar setup before relying on overflow.
- Is this plugin safe to run in production, and what is the maintenance risk?
- The blast radius is small: it reads the navigation registry and renders one Blade partial into a render hook (PanelsRenderHook::BODY_END by default), with no migrations, models, or service bindings. The real risks are that it is a single-maintainer package with a modest install base and a hard dependency on Filament's navigation and render-hook APIs, so a Filament v6 upgrade is gated on this package's release cadence. It is MIT licensed and small enough that forking would cost roughly a week of work, and rollback is literally deleting one line from your panel provider.