Filament 5 plugin
Render huge Filament tables fast, at any size.
Keep your table() definition. Just add ->fast().
Filament 5.10+ · PHP 8.3+ · Laravel 11.28+ · Works on mobile · 1,000 rows in 0.3 s
1,000 rows per page: 0.3 s, not 12.8 s.
Same table, same query, same server. The native table gets slower with every row you add to the page. Fast Tables stays at 0.3 s whether the page has 1,000 rows or a million.
1,000 rows per page
- Time to first rows ↓ lower is better
-
Fast Tables 0.3 s, native table 12.8 s. Lower is better. Fast Tables is 42 times faster.
- Browser memory ↓ lower is better
-
Fast Tables 30 MB, native table 163 MB. Lower is better. Fast Tables is 5.4 times lighter.
Measured on the live demo in Chromium.
Fast Tables shows 1,000 rows per page in 0.3 s with 30 MB of browser memory.
Try 1,000 rows per page in the demo →100,000 rows per page
- Time to first rows ↓ lower is better
-
Fast Tables 0.4 s, native table not run (simulated). Lower is better.
- Browser memory ↓ lower is better
-
Fast Tables 38 MB, native table not run (simulated). Lower is better.
The native values are simulated. The native table is not run at 100,000 rows per page: a page this large runs past the PHP time and memory limits. The simulated values grow at the rate measured at 1,000 rows per page.
Measured on the live demo in Chromium.
Fast Tables shows 100,000 rows per page in 0.4 s with 38 MB of browser memory.
Try 100,000 rows per page in the demo →1,000,000 rows per page
- Time to first rows ↓ lower is better
-
Fast Tables 0.4 s, native table not run (simulated). Lower is better.
- Browser memory ↓ lower is better
-
Fast Tables 52 MB, native table not run (simulated). Lower is better.
The native values are simulated. The native table is not run at 1,000,000 rows per page: a page this large runs past the PHP time and memory limits. The simulated values grow at the rate measured at 1,000 rows per page.
Measured on the live demo in Chromium.
Fast Tables shows 1,000,000 rows per page in 0.4 s with 52 MB of browser memory.
Try 1,000,000 rows per page in the demo →Move fast. Don’t break things.
Filament is quick at 25 rows a page. Past a few hundred rows, the page starts to crawl. Fast Tables makes the big pages as quick as the small ones, and your table code does not change.
A client asks for “show all”
You say no, or you ship a page that takes seconds to build.
You raised the page size to 100 or more
People want to scan, not click through pages. Every extra row adds to the wait.
You upgraded to Filament 5
Normal pages got faster. The big ones are still slow.
The browser hangs when you scroll
With thousands of rows on the page, every scroll, click and filter gets heavier.
Fix the queries first. Fast Tables does not touch your queries. It fixes the part that stays slow after they are fast. In Filament issue 9304, “All” on 1,000 rows took 14 to 18 seconds on Filament 3.
Keep your table. Add ->fast().
No rewrite, no second table definition, no JavaScript grid to maintain. Your columns, filters, search, sorting and pagination stay as they are.
-
1
Add the
InteractsWithFastTabletrait to the page, and call->fast()on the table. - 2 Or register the panel plugin to turn it on for every table in the panel.
In the docs
public static function table(Table $table): Table { return $table ->columns([...]) // your columns, unchanged ->filters([...]) ->fast(); // the same table, only faster }
The highlighted line is the change to the table. The page also gets the InteractsWithFastTable trait.
Buy a licence. Install it with Composer.
One private Composer package, from $129 for one domain, with a 14-day refund. Your columns, your theme and your tests stay as they are.
- 1Buy a licence. The purchase email has your Composer repository URL and credentials.
- 2Add the repository and credentials to your project with
composer config. - 3Require
fasttables/fast-tables. Then add->fast()to a table.
What you get
- Every row on one page, at any size
- Every column type, custom columns included
- Every layout: Split, Stack, Panel and grid cards
- Search, filters, sorting and actions as today
- Live updates with poll()
- Screen readers and keyboard, unchanged
- Your panel theme and dark mode
- One ->fast() per table, or on for the whole panel
- Your existing tests keep passing
Everything you built keeps working
Your actions, columns, filters and theme behave exactly as they do today, because the table is still real HTML: Filament's own views, not a canvas grid that trades your features for speed. Fast Tables works beneath the table, in how the browser carries it, so the page does a fraction of the work for the same rows. The only thing that changes is the wait.
The part that carries the table is a compiled core, written in Rust and running in the browser.
stackedOnMobile()
Works on phones
On small screens each row stacks its cells with their labels. Touch scrolling loads more rows as you go.
custom columns
Looks like your app
Custom columns, ViewColumn, badges and your own CSS work as they do today.
Split, Stack, Panel
Every layout
Split and Stack layouts, collapsible panels and grid cards all scroll as fast as plain rows.
recordActions()
Actions still work
Record actions, action groups and bulk actions keep their policies, modals and notifications.
wasm
A compiled core
The work beneath the table is a small compiled core, written in Rust and served by your own app. Nothing to install, no CDN.
14-day refund
Nothing to lose
Try it on your own tables. If Fast Tables is not for you, email us within 14 days of purchase for a full refund.
Questions
Do I have to rewrite my tables?
table() definition. Add the InteractsWithFastTable trait to the page and call ->fast() on the table, or register the panel plugin to turn it on for every table.My table is slow at 25 rows. Will this help?
Why not pagination, infinite scroll or a JavaScript grid?
Does it work with my custom columns and theme?
ViewColumn and custom columns, and your theme applies. The live demo shows every layout and column type.Does it work on phones?
stackedOnMobile(), each row stacks its cells with their labels on small screens, and touch scrolling loads more rows as you go.What if it does not work for my tables?
Will Fast Tables help me buy a Lambo?
Don’t take our word for it. Scroll a million rows.
The demo is a real Filament panel. Pick 1,000,000 rows per page and scroll, then compare with the native table at 1,000.