React Native vs Flutter

Merve Duran
BilgeAdam Teknoloji
5 min readDec 18, 2019

Günümüzde mobil uygulama geliştirme yaklaşımlarından en popülerlerinden biri olan cross-platform mobil uygulamalar sayesinde Android için Java veya iOS için Swift yada Objective-C kullanarak ayrı uygulamalar geliştirmek yerine farklı platformlarda çalışabilen native uygulamalar geliştirilmektedir.

Binlerce mobil uygulama oluşturmak için kullanılan React Native ve Flutter, gerçek native uygulamalara en yakın performansa sahip ve en popüler cross-platform mobil uygulama geliştirme framework’leridir. React Native, Facebook tarafından 2015 yılında tanıtılmış ve kısa sürede popüler hale gelerek birçok kullanıcı kitlesine ulaşmıştır. Google tarafından 2017 yılında sunulan Flutter ise daha genç olmasına rağmen kullanımı giderek artmakta ve neredeyse React Native’i yakalamıştır.

Özellikle mobil uygulamaya yeni başlayan veya başlamak isteyenlerin çoğunun kafasını kurcalayan “ React Native mi yoksa Flutter mı kullanmalıyım? ” sorusu akla geliyor.

Bu sorunun net bir cevabı yok. React Native ve Flutter her teknolojideki gibi kendi avantaj ve dezavantajı olan güçlü rakiplerdir. Bu nedenle gerçekleştirmek isteğimiz uygulamanın ihtiyaçlarını, problemlerimizi iyi analiz ederek ve kullanım durumlarına bağlı olarak kullanacağımız teknolojiye karar vermeliyiz.

React Native ve Flutter’ın tek bir codebase üzerinden cross-platform uygulamalar geliştirme, hot reloading, birçok tool ve native uygulama olması gibi bir çok benzerlikleri ile karşımıza çıksa da elbette farklılıkları mevcuttur.

Her iki framework’ü birkaç faktörde karşılaştırmak gerekirse;

DİL

React Native, JavaScript ve XML dil yapılarını harmanladığı kendine ait syntax(JSX) ve kurallarla aslında React kullanılarak temelde JavaScript ile geliştirilmektedir.

Flutter ise yine Google tarafından 2011’de geliştirilen açık kaynak kodlu, nesneye dayalı bir programlama dili olan, Dart ile geliştirilmektedir.

JavaScript’ in dünyadaki popülerliği ve kullanımının daha yaygın olması React Native’i daha avantajlı göstermektedir. Özellikle JavaScript geliştiricileri veya JavaScript bilen geliştiricilerin React Native’i öğrenmeleri oldukça kolaydır.

Diğer bir yandan C++, C# veya Java gibi herhangi bir nesneye yönelik programlama dillini biliyorsanız, sizin için Dart dilini öğrenmek çok daha kolay olabilir.

ALT YAPI

React Native, JavaScript altyapısına dayandığından ve native’e çevrilirken, native bileşenlerle etkileşime geçmek için mutlaka JS köprü(bridge) ile erişim sağlaması gerekmektedir. Bu da animasyonlar, sayfa geçişleri, ekrana dokunmalar vs. işlemlerde aradaki köprüden dolayı performans düşmesine neden olmaktadır.

React Native Uygulama Yapısı

Flutter ise bir JavaScript köprüsü gerektirmeden reaktif görünümler sunan tek mobil SDK’dır. Kendi içinde hemen hemen tüm native kütüphaneleri barındırması sayesinde native sistem ile haberleşmek için ayrı bir yapıya ihtiyaç duymamaktadır. Dart kodu yerel makine koduna göre derlemesi sayesinde JavaScript V8 motoruna göre daha hızlıdır. Bu sayede daha iyi bir native performans sunmaktadır.

Flutter Uygulama Yapısı

KURULUM

React Native’de bileşenlerinin kullanıma hazır olması geliştirme sürecini basit ve hızlı hale getirmektedir. React Native framework’ünün kendisini “npm” paket yöneticisi ile tek satırlık kodla daha rahat kurulurken, Flutter ise bu konuda biraz manuel kurulum aşamasında kalmıştır. Geliştiricilerin öncelikle paketi indirir, sıkıştırmasını açar ve ardından sıkıştırılmış paketin içindeki bir klasörü işaret eden bir ortam değişkeni yaratır.

Her iki platformun kurulması için hemen hemen aynı miktarda çalışma yapılması gerekse de, React Native in ayarlanması Node.js ve önceden kurulmuş olan “npm” ile daha kolaydır.

UI BİLEŞENLERİ

React Native’ in third-party yani dışarıdan eklenen kütüphanelere bağımlılığı çok fazladır. Native modüllerin çoğuna erişimde bu kütüphaneler kullanılır. Başkalarının geliştirdiği bu kütüphaneler hatalı veya güncel olmayabilir.

Flutter ise geliştirme API’leri ve UI bileşenleri bakımından daha zengindir. Third-party UI kütüphanelerine daha az bağımlı olup, kendi içerisinde UI bileşenleri, cihaz API erişimi, navigation, testing gibi çok sayıda kütüphaneler ve kullanıma hazır widgetler ile birlikte gelmektedir.

KURUMSAL DESTEK

React Native Facebook tarafından desteklenen ve sürekli daha iyi hale getirilmektedir ve 2015 yılından bu yana popüler hale gelmiştir.

Flutter ise Google tarafından desteklenen codebase kullanılarak mobil uygulama oluşturmak için Google’ın açık kaynak kodlu SDK sıdır. 2017 yılında sunulmasına rağmen çok kısa sürede popülerleşmiştir.

GELİŞTİRİLEN UYGULAMALAR

Facebook, Instagram, Uber Eats, Tesla, Bloomberg, AirBnB ve daha pek çok ürün mobil uygulamaları için React Native kullanmaktadır.

React Native kullanan uygulamalar

Bugün React Native ile geliştirilen uygulama sayısı da göz önüne alındığında Flutter’a göre daha yaygın olduğu görülmektedir. Ancak Flutter’ın 1.0 versiyonun duyurulmasından sonra çok kısa sürede Groupon, Philips Hue, Tencent, Alibaba gibi birçok şirket tarafından beta sürecinde uygulamalar geliştirilmiş ve kullanıma sunulmuştur. Google Reklamlar ve Hamilton müzik de Flutter kullanılarak geliştirilmiştir.

Flutter kullanan uygulamalar

POPÜLERLİK

2019 stackoverflow anketine göre geliştiricilerin sevdiği frameworklerden Flutter’ın %75.4 ile React Native’e göre daha üst sıralarda yer almaktadır.

2019 StackoverFlow

Aşağıda ki görselde Google’ın React Native-Flutter trend sonucunda da Flutter’ın daha çok arandığı görülmektedir.

Dikkat edilmesi gereken nokta ise, React Native’in daha önce ortaya çıkmış olması ve kullanım sayısına rağmen Flutter çok kısa sürede daha popüler olmaya başlamıştır.

Sonuç olarak her iki framework de performans, dokümantasyon ve bahsettiğimiz durumlar açısından kendi artı noktaları vardır.

Her ne kadar React Native bazı güçlü noktalara sahip olsa da Flutter gibi daha genç bir framework’ün kısa sürede React Native kadar popüler olması ileride mobil uygulama geliştirmede çok daha fazla kullanılacak gibi gözüküyor.

Öğrenmek veya bir uygulamayı geliştirmek için seçilen teknolojiler, gerçekten kullanım durumunuza ve ihtiyaçlarınıza bağlıdır. Daha fazla C ++ veya Java geliştiricisiyseniz, Dart ve dolayısıyla Flutter’ı tercih edebilirsiniz. Bir web geçmişiniz varsa veya JavaScript biliyorsanız bu durumda da React Native’i tercih edebilirsiniz.

--

--