Notifikasi Filament yang Tidak Mengganggu
Setiap kali saya membangun modul baru di aplikasi berbasis Filament, ada satu godaan yang selalu muncul: menambahkan notifikasi untuk hampir semua aksi. User klik simpan, muncul toast. Ada background job selesai, muncul toast lagi. Ada validasi gagal, muncul toast lagi. Masalahnya, kalau semua hal dianggap penting, pada akhirnya tidak ada yang terasa penting. Ini yang biasa disebut notification fatigue — user mulai mengabaikan semua notifikasi karena volumenya terlalu tinggi, termasuk yang sebenarnya krusial.
Di aplikasi yang saya kelola, termasuk yang jalan di lingkungan sistem klinik, saya jadi lebih hati-hati membedakan dua jenis notifikasi bawaan Filament: toast (notifikasi sementara yang muncul lalu hilang sendiri) dan banner persisten (yang tetap terlihat sampai user menutupnya atau kondisinya berubah). Keduanya punya tempat masing-masing, tapi sering dipakai terbalik.
Kapan Toast Cocok Dipakai
Toast paling pas untuk konfirmasi hasil aksi yang dilakukan user itu sendiri, dan yang tidak butuh tindakan lanjutan. Simpan data berhasil, hapus record berhasil, kirim email berhasil — semua ini cocok jadi toast karena user sudah tahu apa yang dia lakukan, notifikasi hanya menegaskan bahwa aksinya berhasil.
Notification::make()
->title('Data berhasil disimpan')
->success()
->send();
Prinsip yang saya pegang: kalau notifikasi itu jawaban langsung dari aksi user dan tidak ada risiko terlewat (karena user memang sedang menunggu hasilnya), toast sudah cukup. Durasi default beberapa detik biasanya aman, tapi untuk pesan yang agak panjang saya sering menambah durasi sedikit supaya sempat terbaca, bukan sekadar berkedip lalu hilang.
Kapan Banner Persisten Lebih Tepat
Banner persisten atau notifikasi database saya pakai untuk kondisi yang harus tetap disadari user selama dia bekerja, bukan cuma sesaat. Misalnya: lisensi akan kedaluwarsa, ada antrean sinkronisasi data yang belum selesai, atau ada perubahan status sistem yang memengaruhi cara user bekerja di halaman itu. Kalau notifikasi seperti ini dibuat toast, besar kemungkinan hilang sebelum sempat dibaca, apalagi kalau user sedang fokus mengisi form.
Filament menyediakan database notifications yang bisa ditampilkan sebagai daftar persisten di panel, lengkap dengan status terbaca/belum terbaca. Ini cocok untuk hal-hal yang butuh tindak lanjut, bukan sekadar informasi lewat.
$user->notify(new SyncPendingNotification($job));
Bedanya dengan toast: notifikasi persisten ini menunggu user, bukan mengejar user. User bisa membuka kapan saja, dan notifikasinya tidak hilang begitu saja hanya karena timer habis.
Mengurangi Notification Fatigue
Selain memilih jenis notifikasi yang tepat, ada beberapa kebiasaan yang menurut saya membantu:
- Gabungkan notifikasi yang mirip. Kalau ada sejumlah record gagal diproses dalam satu batch, kirim satu notifikasi ringkasan, jangan satu per satu.
- Bedakan level urgensi secara konsisten — warna sukses, warning, dan danger sebaiknya benar-benar mencerminkan tingkat urgensi, bukan dipakai asal-asalan.
- Pertanyakan setiap penambahan notifikasi baru: apakah user benar-benar perlu tahu ini sekarang, atau cukup terlihat kalau dia membuka halaman terkait?
Sebagai ilustrasi, kalau dalam satu sesi kerja user menerima terlalu banyak notifikasi non-esensial, bukan tidak mungkin dia mulai menutup semua notifikasi tanpa membaca isinya — termasuk saat ada peringatan yang sebenarnya penting.
Takeaway
Aturan sederhana yang saya pakai: toast untuk konfirmasi aksi user yang sudah selesai dan tidak butuh tindak lanjut, banner atau notifikasi persisten untuk kondisi yang harus tetap disadari sampai ditangani. Kalau ragu, lebih baik bertanya dulu apakah notifikasi ini benar-benar perlu ada, daripada menambahkannya karena "kelihatan lebih informatif".