Pilih React Native atau Flutter? Pengalaman Pribadi

Agun Buhori
3 min readFeb 21, 2024

--

Beberapa tahun lalu, saya mengerjakan banyak sekali proyek dengan React Native. Alasannya, karena React Native pastinya bersahabat bagi React atau JavaScript developer seperti saya dan didukung oleh banyak library di internet yang mudah kita dapatkan. Sebenarnya saya termasuk salah satu fans produk Google, seperti Angular, GoLang, Firebase, dan lain-lain. Namun, khusus untuk mobile application saya belum bisa lepas dari React Native. Framework ini masih menjadi primadona di job market dan tentunya beberapa perusahaan masih menggunakannya, karena populasi JS developer yang lumayan banyak.

Menemukan masalah

Sebelumnya saya tidak pernah menemukan masalah berarti ketika menggunakan React Native, karena saya selalu menemukan library yang dibutuhkan. Meskipun kadang disebut ribet, hal tersebut masih bisa diatasi dengan sedikit trik. Tibalah kemudian saya menyadari bahwa performa dari React Native tidaklah begitu bagus dan perlu melakukan banyak hal untuk meningkatkannya, terutama ketika berurusan dengan data yang sangat besar. Biasanya, kita menggunakan FlatList untuk menampilkan VirtualizedList, tentunya dengan segala keterbatasan. Saya berusaha mencari library pendukung yang sekiranya sudah disiapkan dari developer lain, namun hasilnya tetap kurang memuaskan dan tetap buggy.

Bayangkan saja, ketika membuat suatu fitur yang berkaitan dengan pencarian data, React Native menantang saya untuk membuat algoritma yang melibatkan matematika seperti pengukuran layar, kalkulasi tinggi masing-masing item, nested decision, dan banyak hal lagi. Setelah melakukan rangkaian ribet tersebut, dan tetap saja hasilnya buggy dan tidak memuaskan, padahal rumusnya secara logika sudah benar.

Selain performa, ternyata saya menyadari fleksibilitas membangun aplikasi dengan React Native menantang kita untuk membuat struktur proyek yang sangat apik, tidak hanya asal jadi. Kita harus benar-benar menempatkan file-file dengan sangat teratur sehingga tidak terlihat berantakan, dan menurut saya ini sangatlah tricky. Apalagi harus berurusan dengan beberapa native module yang harus dikustom, terkadang membuat saya ragu akan maintainability code yang saya buat.

Jatuh hati kepada Flutter

Ketika saya mencoba mempelajari Flutter, saya menemukan perbedaan yang sangat signifikan dari segi penulisan kode, manajemen file, dan juga penginstallan library yang dibutuhkan. Dengan Flutter, segala sesuatu terasa lebih sederhana dan tidak se-tricky React Native ketika kita membutuhkan suatu fitur yang menurut kita kompleks. Selain kesederhanaan, Flutter juga menawarkan performa yang sangat apik dibanding React Native yang pernah membuat saya frustasi ketika mengerjakan suatu fitur. Dart yang dibawa oleh Flutter juga bisa dikatakan mirip dengan TypeScript, dan tentunya mudah bagi saya untuk bermigrasi.

Selain penempatan kode dan performa yang luar biasa, saya sangat suka ketika melakukan styling dengan Flutter. Mengapa? Bayangkan saja, dengan React Native melakukan penginstallan font bisa menghabiskan setengah hingga satu jam, sedangkan dengan flutter bisa kurang dari 5 menit. Mungkin karena Flutter didukung oleh Google yang memiliki library Google font sehingga memudahkan developer menggunakannya. Di React Native, kita harus mendownload, menempatkan, melakukan asset, kemudian membuat suatu komponen yang reusable agar kita tidak melakukan styling berulang.

Lalu kapan pakai React Native?

Tentunya kita tidak bisa meninggalkan React Native begitu saja, karena framework ini masih bisa diandalkan dan job market yang masih cukup banyak. Jika ditanya “kapan?” maka jawabannya tergantung. Jika proyek kita membutuhkan performa yang berkaitan dengan data yang banyak, pencarian, indeks, dan lain-lain saya rasa React Native bukan pilihan yang tepat. Jika aplikasi yang kita buat bisa dikatakan sederhana, hanya memproses beberapa data yang dibutuhkan seperti melakukan CRUD dan sebagainya, React Native masih menjadi andalan. Saya ingat slogan, “React Native is a cross-platform framework to build application without extreem performance.”

--

--