Pengalaman pembuat ekstensi Chrome dalam menangani memory leak dengan menggunakan framework SolidJS diungkap dalam artikel ini. Meskipun bukan merupakan kesalahan dari SolidJS itu sendiri, tetapi lebih kepada prediksi teknis yang salah dari penulis.
Dalam proyek pribadi bernama “Project FRExtension,” penulis menemui masalah memory leak yang tidak terlihat secara langsung namun berpotensi menyebabkan masalah di masa depan. Isu ini bukan hanya terkait dengan error di console, tetapi lebih pada penumpukan sampah memori yang dapat membuat browser terasa berat atau bahkan crash seiring berjalannya waktu.
Chrome sebenarnya telah dilengkapi dengan sistem Garbage Collector yang canggih, Orinoco, untuk mengelola memori di setiap tab dengan efisien. Namun, implementasi yang ngawur dapat membuat GC tidak berfungsi sebagaimana mestinya. GC bekerja berdasarkan prinsip “Reachability,” dimana jika masih terdapat referensi ke elemen HTML yang sudah dihapus, GC akan menolak membuang elemen tersebut.
Dalam pengembangan ekstensi FRProject, penulis awalnya menggunakan Pure Vanilla JS namun kemudian beralih ke SolidJS. Meskipun SolidJS menjanjikan performa tinggi dan tampilan yang ramah, namun saat mencampur siklus hidup SolidJS dengan siklus hidup DOM manual, masalah memory leak mulai muncul. Penulis akhirnya kembali menggunakan Vanilla JS dan memanfaatkan WeakMap untuk mengatasi masalah tersebut.
Dari pengalaman tersebut, penulis menyimpulkan bahwa untuk komponen UI yang volatile seperti ekstensi browser, Vanilla JS seringkali lebih superior dalam hal performa dan manajemen memori. Framework modern mungkin cocok untuk membangun SPA yang kompleks, namun untuk widget kecil seperti ekstensi browser, Vanilla JS lebih direkomendasikan. Pelajaran berharga untuk tidak menimbulkan sampah memori sejak awal.


