Pertumbuhan tingkat pengguna smartphone serta teknologi mobile apps yang kian populer membuat berbagai perusahaan perlu menyesuaikan diri dengan keadaan tersebut agar dapat terus bertahan. Hal ini tentunya berimplikasi terhadap kecenderungan untuk membangun sebuah mobile apps sesuai dengan kepentingan dan tujuan spesifik perusahaan. Tentu untuk membangunnya diperlukan pertimbangan yang matang terkait banyak hal, seperti cost, waktu pengerjaan, dan kualitas / performa dari sebuah mobile apps itu sendiri. Harapannya, mobile apps dapat memberikan pelayanan yang baik dan memuaskan untuk customer. Memilih metode pengembangan mobile apps yang tepat jadi hal yang penting untuk diperhatikan.

Mobile Cross-Platform Development adalah metode pengembangan mobile apps yang memungkinkan untuk membuat aplikasi dan melakukan deployment ke berbagai platform berbeda, seperti iOS dan Android. Bicara tentang Mobile Cross-Platform Development artinya tidak dapat terlepas dari Flutter dan React Native, dimana keduanya merupakan Framework Mobile Cross-Platform Development yang paling populer yang digunakan oleh banyak mobile developer, termasuk di Indonesia. Meski keduanya sama-sama populer, ada beberapa alasan yang membuat Flutter lebih unggul dibandingkan React Native dalam sebuah project pengembangan mobile apps. Penasaran? Simak beberapa alasannya dalam ulasan berikut.

Arsitektur dan UI

Arsitektur merupakan sebuah hal yang penting dalam sebuah framework dimana hal ini dapat menentukan tingkat performa dari suatu framework. Berikut ini merupakan perbandingan arsitektur dari masing - masing framework.

Flutter :

Flutter menggunakan Skia engine, yang digunakan untuk membangun Chrome Browser dan Android. Engine ini juga membuat flutter dapat merender komponen - komponennya dengan 60 FPS. Flutter juga menggunakan library widget sendiri untuk menampilkan UI - nya, yang membuat performanya tinggi dan tampilan UI yang flawless (mulus/halus), dan hal itu men-generalisasi tampilan UI apapun versi OS nya. Hal itu membuat aplikasi terlihat sama, baik pada versi baru Android dan yang lebih lama hingga versi 4.4.

React Native :

React Native berbasis JavaScript engine yang bekerja sebagai bridge/jembatan antara JS code dan Native OS components (Komponen asli masing - masing OS). Hal itu membuat aplikasi yang dikembangkan menggunakan React Native, sangat mirip dengan aplikasi aslinya atau dengan kata lain, UI iOS dan Android akan mengikuti UI OS masing - masing sehingga UI nya akan berbeda antara iOS dan Android. Jika ingin aplikasi menggunakan React Native terlihat hampir identik di seluruh platform dan juga pada versi sistem operasi yang lebih lama (seperti yang dicapai Flutter), harus menggunakan library tambahan yaitu React Native Paper.

Perbandingan :

Dapat dikatakan bahwa kinerja Flutter lebih unggul, karena Flutter memiliki Renderer Engine sendiri sedangkan React Native menggunakan bride JS dan hal itu membuat React Native memiliki issue kinerja karena ada delay dalam pemrosesan antara koneksi JS dan Native Code.

React Native memiliki kelebihan dalam membangun UI yang sesuai dengan tampilan setiap OS-nya. Akan tetapi hal ini membuatnya jadi membutuhkan usaha lebih apabila ingin membuat tampilan yang serupa. Sedangkan pembangunan UI Flutter lebih customizable dapat dibangun sesuai kebutuhan client tanpa harus menggunakan library tambahan.

Performa / Kinerja

Berdasarkan performance benchmarking yang dikembangkan oleh inVerita, performa komputasi Flutter unggul jauh daripada React Native baik di platform iOS maupun Android. inVerita menghitung tingkat performa berdasarkan penghitungan matematis dan manipulasi memori yang menggambarkan kecepatan app dalam memproses business logic. Performa dari sisi ini penting untuk aplikasi-aplikasi dengan business logic yang kompleks.

Berikut hasil yang menunjukkan performa React Native - Flutter - Native iOS/Android dalam komputasi dan memori. Algoritma Gauss Legendre lebih bersifat memory-intensive sehingga dapat mengukur performansi memori. Sedangkan algoritma Borwein lebih bersifat CPU-intensive.

Source : https://medium.com/swlh/flutter-vs-native-vs-react-native-examining-performance-31338f081980

Dari tes algoritma di atas dapat disimpulkan bahwa dalam penggunaan memori, React Native memerlukan waktu 2992 ms (millisecond) di platform iOS dan 3289.3 ms di platform Android untuk mengeksekusi algoritma tersebut, sedangkan Flutter lebih unggul karena memerlukan waktu yang lebih singkat yaitu 188.7 ms di platform iOS dan 272.5 ms di platform Android. Menilik dari segi penggunaan CPU, Flutter tetap unggul dengan waktu eksekusi sebesar 179.5 ms di platform iOS dan 285.2 ms di platform Android, sedangkan React Native memerlukan waktu yang lebih lama yaitu 582.1 ms di platform iOS dan 821.9 ms untuk platform Android. Tentunya hal ini menjadi pertimbangan dalam memilih Flutter sebagai Framework Mobile Cross-Platform Development untuk sebuah project karena performa adalah hal yang penting sebagai layanan terbaik yang bisa diberikan untuk pengguna mobile apps.

Komunitas Dan Popularitas

Popularitas Flutter menunjukan perkembangan yang pesat. Hal tersebut dapat dilihat dari jumlah Github stars (per akhir Maret 2021) yang berjumlah 117k, sedangkan React Native berjumlah 94.4k. Selain itu, website stackoverflow.com juga melansir perkembangan Q&A tentang Flutter. Website tanya jawab seputar pemrograman tersebut menunjukan bahwa Q&A tentang Flutter menunjukan perkembangan yang signifikan dari tahun ke tahun dibandingkan dengan React Native.

Source: https://insights.stackoverflow.com/trends?tags=flutter%2Creact-native

Begitu pula data dari Statista, website dengan tagline Global No.1 Business Data Platform ini menunjukan data dengan responden sejumlah 19.696 mobile developers di seluruh dunia, bahwa pertumbuhan jumlah Flutter developers meningkat pesat, sedangkan jumlah React Native developers tetap.

Source: https://www.statista.com/statistics/869224/worldwide-software-developer-working-hours/

Client dan Showcase

React Native memiliki portofolio yang cukup banyak, terutama dalam kategori sosial media, mengingat usia React Native yang sudah lebih lama dibandingkan Flutter. Akan tetapi, Flutter tidak tertinggal terlalu jauh, Flutter memiliki client dan portofolio yang bisa bersaing dengan React Native, hal ini ditunjukkan dari perilisan versi 2 di awal Maret 2021 dengan Toyota sebagai client barunya. Untuk dapat melihat perbandingan singkatnya, berikut beberapa client dan apps yang dibuat oleh masing - masing SDK.

Dilansir dari developers.googleblog.com, Toyota, mengumumkan rencananya untuk menghadirkan best-in-market digital experience untuk kendaraan, dengan membangun sistem infotainment yang didukung oleh Flutter. Toyota memilih Flutter karena performa dan konsistensi pengalamannya yang tinggi, iterasi yang cepat dan ergonomis pengembang serta mekanik sentuh tingkat smartphone. Dengan menggunakan Flutter's embedder API, Toyota dapat menyesuaikan Flutter untuk kebutuhan unik sistem di dalam kendaraan.

Development

Terakhir, jika membahas SDK tentunya tidak bisa lepas dari sudut pandang sisi development, karena tidak bisa dipungkiri, proses development sebuah mobile apps berpengaruh terhadap performa dan waktu pengerjaannya karena selain kualitas yang ditentukan oleh SDK dari suatu Framework Mobile Cross-Platform Development, waktu pengerjaan juga dipengaruhi oleh kenyamanan developer dalam menggunakan SDK tersebut. Ada beberapa hal yang menjadi pertimbangan developer untuk memilih Flutter untuk mengembangkan suatu mobile apps, diantaranya:

Flutter & Android by Google

Flutter adalah SDK yang dikembangkan dan di-support oleh Google yang mana sistem operasi mobile Android pun dikembangkan oleh Google. Hal ini membuat proses development Flutter dan integrasinya terhadap hardware Android berjalan dengan lancar, seperti implementasi biometric, kamera dan GPS, dengan konfigurasi dan kode yang cukup sederhana.

Firebase

Firebase adalah layanan development yang disediakan / dikembangakan oleh Google. Beberapa layanan tersebut sangatlah familiar bagi developer, diantaranya Push Notification, Analytic, Crash Monitoring, Authentication, App Distribution, dan masih banyak layanan development lainnya yang disediakan oleh Firebase, sehingga developer/vendor tidak perlu menyediakan atau membangun layanan tersebut dari nol, hal ini memudahkan proses development dan integrasi karena penyedia layanan Firebase itu adalah Google.

Dari React Native ke Flutter

Menilik dari berbagai poin yang telah disebutkan di atas, dapat dikatakan bahwa Flutter dapat menjadi alternatif bila ingin mencoba mengembangkan mobile apps dengan metode Cross-Platform, karena selain sama - sama satu codebase, Futter juga memiliki performa yang lebih unggul dibandingkan React Native. Flutter juga menyediakan jembatan untuk mempelajari Flutter bagi developer React Native. Hal ini akan sangat bermanfaat ketika sudah terlanjur mengembangkan mobile apps dengan React Native atau bagi para developer in-charge yang sudah terbiasa dengan React Native namun ingin mencoba Flutter.

Seperti React Native, Flutter juga menggunakan tampilan reactive-style. Akan tetapi, tidak seperti React Native yang menggunakan komponen asli dari platform, Flutter melakukan compile code hingga menjadi tampilan yang sama di masing - masing platform. Flutter mengontrol dan merender setiap pixel di layar, yang bisa menurunkan resiko masalah kinerja yang disebabkan oleh kebutuhan JavaScript bride dalam React Native.

Dart adalah bahasa yang mudah dipelajari yang memiliki fitur-fitur seperti berikut:

  1. Menyediakan bahasa pemrograman open-source dan bisa dikembangkan untuk membangun web, server, dan aplikasi seluler.
  2. Menyediakan object-oriented programming dan single inheritance yang menggunakan style syntax bahasa C yang di-compile oleh AOT (compiler) langsung menjadi native
  3. Secara opsional bisa dilakukan transcompile (diterjemahkan) ke dalam JavaScript.
  4. Mendukung antarmuka dan kelas abstrak.

Untuk lebih lanjut mempelajari Flutter bagi developer React Native, bisa dipelajari di link berikut: https://flutter.dev/docs/get-started/flutter-for/react-native-devs.

Berbagai alasan yang telah diulas di atas menjadi alasan kenapa Flutter dapat dikatakan lebih baik dibandingkan React Native untuk sebuah project yang dilihat dari berbagai aspek dan variabel yang dimiliki, diharapkan bisa menjadi insight dan pertimbangan dalam membangun sebuah project aplikasi mobile yang baik.