- How do I install filament-sticky-table-header in a Laravel app?
- Install it with composer require watheqalshowaiter/filament-sticky-table-header, then register the plugin in your AdminPanelProvider by adding it to the panel's plugins array. No configuration file is required for the basic sticky behavior. You can optionally publish Filament assets with php artisan filament:assets if your deployment does not already handle that step.
- Which Filament and Laravel versions does this sticky table header plugin support?
- The package supports Filament 3.x, 4.x, and 5.x on Laravel 10, 11, or 12 and PHP 8.1 through 8.4. The changelog shows Filament 4 and Filament 5 support shipped within the same release cycle as those majors. Check the current Composer constraints before upgrading your panel major.
- Can I enable sticky table headers for only one Filament resource or table?
- No. The plugin operates at the panel level, so it is effectively all-or-nothing for every table rendered in that panel. The documentation does not describe a per-resource or per-table opt-in or opt-out. If you need selective sticky headers, you would need custom CSS or a fork that scopes the behavior.
- Do I need to publish the plugin assets with filament:assets?
- Asset publishing is optional for installation, but the plugin's CSS and JavaScript must be available in public assets for it to work. If filament:assets or vendor:publish is not wired into your deploy pipeline, the plugin can silently do nothing with no error. Include that step in deployment checks and verify the header behavior after deploy.
- Will the sticky header work with a custom compiled Filament theme?
- There is a real risk with Vite-compiled custom Filament themes because the plugin's CSS may not be picked up, may be purged, or may load in the wrong order. The plugin relies on Filament's rendered DOM and Tailwind class structure rather than a formal styling extension point. Spike this against your actual theme before rollout and test stacking contexts with the topbar, sidebar, filters, and bulk-action bar.
- Does the plugin work on mobile, and are there accessibility concerns?
- Sticky headers work on mobile, and prior releases included mobile-specific fixes, but a pinned header permanently consumes vertical space on small viewports. That reduces visible rows and can occlude the first row after anchor navigation. Treat mobile behavior as an explicit design decision and test small screens rather than assuming it is free.
- How do I configure scroll-to-top behavior on page change?
- The package exposes a small fluent configurator with shouldScrollToTopOnPageChanged(enabled:, behavior:) for the optional scroll-to-top behavior. That behavior overlaps conceptually with Filament's own pagination scroll handling, so enable it deliberately rather than by default. It does not affect the core sticky header behavior.
- Is this package production-ready given its low star count and single maintainer?
- The blast radius is small because the package is presentational CSS and JavaScript with no database, auth, queue, or data-path exposure. The maintenance risk is the bigger concern: it has about 35 stars, zero dependents, and a single maintainer. Pin the version, test Filament upgrades, and have an internal owner for breakage if the maintainer goes dormant.
- Does the plugin add database migrations, service providers, or PHP APIs I need to maintain?
- No. It adds no migrations, models, events, hooks, or public PHP API beyond the small configurator, and it does not require you to extend a service provider. It is a panel plugin that publishes CSS and JavaScript assets. Your maintenance surface is limited to the Composer dependency and the panel registration line.
- What are alternatives if I need per-table sticky headers or want to avoid DOM-coupled plugins?
- If you need per-table control, a custom Tailwind or CSS rule scoped to specific Filament tables is the usual alternative, but you must manage stacking contexts and overflow ancestors yourself. Forking this plugin is another option if you want its behavior with resource-level scoping. The package itself is best suited to panels where every table should stick.