Table Sticky Header plugin screenshot
Dark mode ready
Multilingual support
Supports v5.x

Table Sticky Header

Community

Keep Filament table headers visible while scrolling long tables. The package moves the original table header, so sorting, selection, tooltips, Livewire actions, and horizontal scrolling continue to work without cloned controls.

Tags: Tables Table Column Panels
Supported versions:
5.x 4.x
Majid Shafik Al-Nashri avatar Author: Majid Shafik Al-Nashri

Package health

Beta

Automated checks of this plugin's Composer package

65 / 100
Security 43
Maintenance 100
Ecosystem 76
15 checks
  • Failed: GitHub Actions pinned to SHA View details on Plumb
  • Skipped: GitLab CI includes pinned to SHA
  • Skipped: Open security advisories
  • Passed: Dependabot PR responsiveness — No open Dependabot PRs.
  • Skipped: Renovate MR responsiveness
  • Failed: Dependabot or Renovate configured No dependency updater configuration found. View details on Plumb
  • Skipped: Dependency update cooldown configured
  • Passed: Provides a security policy
  • Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
  • Passed: Commit and release recency — Active: last commit 0 days ago; no release date available.
  • Passed: composer.lock not committed by library composer.lock is absent from the released dist archive.
  • Passed: Dist archive is lean
  • Warning: Current Laravel version supported — Package support for current Laravel 13.0 could not be verified; the newest co-installable line is 12.0, which receives security patches only (until 2027-02-24). Line 13.0 could not be fully verified: no solution was found among the newest package versions, and resolving the complete version pool exceeded solver resource budgets, so support there cannot be ruled out.
  • Passed: Current PHP version supported — Constraint ^8.2 supports current PHP 8.5.
  • Skipped: Current Symfony version supported
Third-party plugin. This is built by the community, not the Filament team. Filament does not review, endorse, or vet the security of plugins outside the filament/ namespace. Review the source and install at your own risk. Found malware or an unresolved security issue the author won't address? Report it .
Powered by Plumb Last scanned 11 hours ago

Documentation

Latest Version on Packagist Tests Total Downloads

Keep Filament table headers visible while scrolling long tables. The package moves the original table header, so sorting, selection, tooltips, Livewire actions, and horizontal scrolling continue to work without cloned controls.

Filament Table Sticky Header

#Features

  • Applies automatically to Filament tables across the panel.
  • Keeps the original interactive <thead> in the DOM.
  • Stops the header at the end of its table.
  • Detects Filament's topbar height automatically.
  • Supports nested scroll containers and modal headers.
  • Supports grouped columns, RTL layouts, dark mode, Livewire updates, and SPA navigation.
  • Avoids the stacked mobile card layout automatically.
  • Works alongside majid-shafik/filament-table-drag-scroll.
  • Requires no JavaScript build step and does not modify Filament vendor files.

#Requirements

  • PHP 8.2 or newer.
  • Filament 4.x or 5.x.
  • A modern browser with ResizeObserver support.

#Installation

Install the package through Composer:

composer require majid-shafik/filament-table-sticky-header

Publish Filament assets, then refresh the browser:

php artisan filament:assets

No panel provider changes are required. Laravel package discovery enables the package automatically.

#Configuration

Publish the config file:

php artisan vendor:publish --tag="filament-table-sticky-header-config"

The package has one global on/off switch. Leave top_offset as null to detect Filament's topbar automatically:

return [
    'enabled' => true,
    'top_offset' => null,
];

Set enabled to false to disable sticky headers across the system. When a panel has an additional fixed header, set top_offset to its total height in pixels:

'top_offset' => 96,

Rebuild the application's configuration cache after changing a cached production configuration.

#How it works

Filament's table content container uses horizontal overflow, which makes a CSS-only viewport-sticky header unreliable. This package calculates the correct vertical offset in a throttled animation frame and translates the original <thead>. A ResizeObserver and a DOM observer keep measurements current after responsive changes and Livewire morphs.

#Testing

composer test
composer test:lint
composer analyse
node --check resources/js/table-sticky-header.js

#Changelog

See CHANGELOG.md for release history.

#Security

Please report security issues privately as described in SECURITY.md.

#License

The MIT License. See LICENSE.md.

The author

Majid Shafik Al-Nashri avatar Author: Majid Shafik Al-Nashri

I am a passionate software developer with a strong focus on building robust web applications using PHP and Laravel. Over the past few years, I have developed a deep appreciation for the TALL stack and love utilizing Filament to create elegant, user-friendly admin panels and interfaces. When I am not writing code or contributing to open-source projects, I enjoy exploring new web technologies and sharing my knowledge with the developer community

Plugins
2
Stars
3

From the same author