Filament v4 yang resmi dirilis pada 12 Agustus 2025, membawa peningkatan signifikan dalam performa dibandingkan versi sebelumnya (v3). Berdasarkan pengujian dan dokumentasi resmi, Filament v4 menawarkan kecepatan rendering hingga 2-3x lebih cepat, terutama pada tabel dan form. Fitur-fitur baru seperti partial rendering dan optimalisasi blade templates membuat aplikasi laravel kita lebih responsif, terutama saat menangani dataset yang berukuran besar.
Performa Sangat Penting di Filament V4
Filament dirancang untuk memudahkan para Laravel Developer membuat admin panel yang lebih efisien dan praktis. DI versi sebelumnya yaitu versi 3, untuk melakukan rendering pada tabel yang memiliki dataset yang besar terasa sangat lambat. Filament v4 mengatasi ini dengan optimalisasi mendalam, mulai dari sisi server hingga client-side. Hasilnya? Aplikasi dengan performa yang lebih cepat, konsumsi memori lebih rendah, dan pengalaman pengguna yang lebih smooth.
Fitur Utama Filament v4 Untuk Meningkatkan Performa
Filament v4 fokus pada pengurangan overhead rendering dan request server. Berikut beberapa fitur beserta cara kerjan dan contoh implementasi:
- Optimalisasi Blade Templates dan Rendering Tabel
Banyak template Blade yang telah dioptimalkan untuk mengurangi jumlah view yang dirender. Daripada memuat file baru, Filament v4 menggunakan objek PHP yang ada untuk generate HTML. Selain itu, group class Tailwind CSS diekstrak menjadi class dedicated, mengurangi ukuran HTML dan mempercepat loading halaman. Salah satu contoh fitur yang akan kita bahas adalah method lazy()
pada komponen tabel. Buka file resource kalian pada direktori app/Filament/Resources/**/*.php
lalu tempelkan method lazy()
pada komponen tabel seperti ini.
public static function table(Table $table): Table
{
return $table
->recordTitleAttribute('name')
->columns([
TextColumn::make('name')->sortable(),
TextColumn::make('price')->money('usd'),
])
->lazy();
}
Namun saat installasi resources, kalian memilih dengan konfigurasi terpisah, kalian perlu membuka file konfigurasi tabel yang berada pada direktoriapp/Filament/Resources/**/Tables/*.php
.
- Partial Rendering Untuk Form dan Komponen
Fitur ini memungkinkan rendering ulang hanya bagian spesifik dari form setelah update state, bukan seluruh halaman. Method seperti partiallyRenderComponentsAfterStateUpdated()
atau skipRenderAfterStateUpdated()
membantu menghemat waktu server. Dengan begitu, interaksi form akan lebih cepat dan ideal untuk aplikasi dengan field yang dinamis.
TextInput::make('name')
->live()
->partiallyRenderComponentsAfterStateUpdated(['email'])
TextInput::make('email')
->label(fn (Get $get): string => filled($get('name')) ? "Email address for {$get('name')}" : 'Email address')
- JavaScript Hooks
Terdapat method seperti hiddenJs()
, visibleJs()
, dan afterStateUpdatedJs()
yang akan menjalankan logika di browser tanpa request ke server dan dapat mengurangi latensi.
TextInput::make('discount')
->hiddenJs('state.quantity < 10') // hide if qty < 10
->afterStateUpdatedJs('alert("Discount updated!")');
- Peningkatan Bulk Actions Untuk Dataset Besar
Metode chunkSelectedRecords()
memproses record dalam batch kecil serta mengurangi penggunaan memori. Bulk actions prebuilt tak lagi hydrate semua model, dan tracking deselected records mengoptimalkan aksi "Select all".
// Force Delete Action
ForceDeleteBulkAction::make()->chunkSelectedRecords(250)
// Delete Action
DeleteBulkAction::make()->chunkSelectedRecords(250)
// Restore Action
RestoreBulkAction::make()->chunkSelectedRecords(250)
- Icon Yang Efisien Dengan Heroicon ENUM
Pada Filament v3, ikon dikelola sebagai string, yang bisa menyebabkan kesalahan dan memperlambat rendering. Namun tidak di Filament v4 yang menggunakan enum untuk ikon, meningkatkan type-safety dan efisiensi rendering ikon.
//Icon Navigation
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedStar;
// Icon Input
TextColumn::make('status')
->icon(HeroIcon::STAR);
- Peningkatan Global Search Performance
Secara default, pencarian global pada Filament memecah kueri pencarian menjadi kata-kata terpisah dan mencari setiap kata secara independen, memungkinkan hasil pencarian yang lebih fleksibel. Namun, pendekatan ini dapat memperlambat performa saat menangani dataset berukuran besar karena kompleksitas kueri yang meningkat. Di Filament v4 terdapat properti baru $shouldSplitGlobalSearchTerms
memungkinkan developer menonaktifkan pemisahan kata dalam pencarian global serta mengurangi kompleksitas query pada dataset besar.
protected static ?bool $shouldSplitGlobalSearchTerms = false; //set false
- Caching Components (PRODUCTION)
Perintah php artisan filament:cache-components
membuat cache untuk indeks komponen (resources, pages, widgets), mengurangi waktu auto-discovery, tentu ini sangat membantu untuk aplikasi dengan banyak komponen. Alternatifnya, gunakan php artisan optimize
untuk optimasi menyeluruh, termasuk caching komponen.
Kesimpulan
Filament v4 adalah upgrade wajib bagi developer Laravel yang ingin aplikasi dengan performa tinggi. Dengan fitur seperti partial rendering, JS hooks, dan optimalisasi bulk actions, dapat mengurangi waktu rendering hingga 2-3x sekaligus menjaga kode tetap clean dan simple.
Terimakasih.