İkisini de gerçek projelerde kullandık

Flutter mı React Native mi? İkisini de Yayınlamış Bir Ekipten

Bu soru teknik bir soru gibi görünür ama aslında ticari bir sorudur: uygulamanızı beş yıl sonra kim bakacak, ekip bulmak kolay olacak mı ve hangi kararın maliyeti sonradan çıkacak? İkisiyle de uygulama yayınladık; bu sayfa reklam değil, kriter listesi.

Kısa cevap

Çoğu iş uygulaması için Flutter daha güvenli tercihtir: tek kod tabanı iki platformda birebir aynı görünür, arayüz davranışı sürprizsizdir ve mağaza süreçlerinde daha az beklenmedik sorun çıkar. React Native ise şu iki durumda öne geçer — ekibinizde zaten React bilen geliştiriciler varsa ve uygulamanız ağırlıklı olarak veri gösteren, karmaşık özel animasyon içermeyen bir yapıdaysa. Karar dilin kendisinden çok ekibinize ve uygulamanın türüne bağlıdır; performans farkı bugün çoğu proje için belirleyici değildir.

Bu soruyu soranlar: Mobil uygulama yaptıracak işletme sahipleri ve teknoloji kararı veren proje yöneticileri

Karşılaştırılan Taraflar

Bu kümeye yalnızca her iki tarafını da gerçekten sahaya çıkardığımız karşılaştırmaları koyuyoruz. Aşağıda hangi seçeneği hangi işimizde kullandığımız yazılı.

Flutter

Google’un Dart tabanlı çerçevesi; arayüzü kendi çizer, platform bileşenlerine bağımlı değildir.

Bizim kullandığımız yer

Canlı Altın (iOS + Android, mağazalarda yayında), Ev Hizmet (iOS + Android, mağazalarda yayında), Dini Bilgi Yarışması

React Native

Meta’nın JavaScript/React tabanlı çerçevesi; platformun kendi arayüz bileşenlerini kullanır.

Bizim kullandığımız yer

Mesai (vardiya ve mesai takibi uygulaması; henüz geliştirme aşamasında, yayında değil)

Kriter Kriter Karşılaştırma

KriterFlutterReact Native
İki platformda görünüm tutarlılığıYüksek. Arayüzü kendisi çizdiği için iOS ve Android’de birebir aynı görünür.Orta. Platform bileşenlerini kullandığı için küçük görünüm farkları çıkar, düzeltmek ek iş.
Geliştirici bulma kolaylığı (Türkiye)Orta. Dart öğrenilmesi gereken ayrı bir dil; havuz React kadar geniş değil.Yüksek. JavaScript ve React bilen geliştirici sayısı çok daha fazla.
Mevcut web ekibiyle uyumDüşük. Web tarafındaki React bilgisi doğrudan taşınmaz.Yüksek. React bilen bir ekip için giriş engeli çok düşük.
Animasyon ve özel tasarımGüçlü. Karmaşık geçişler ve özel tasarımlar daha az uğraşla çıkar.Yapılabilir ama daha çok emek ister; ağır animasyonlarda köprü katmanı zorlanabilir.
Cihaz özelliklerine erişim (kamera, konum, bluetooth)Geniş resmi paket seti; nadir donanımlarda native kod yazmak gerekebilir.Çok geniş topluluk paketi; ama paket kalitesi değişken, bakımsız paketler yaygın.
Sürüm yükseltme sancısıGenellikle sorunsuz; kırıcı değişiklikler duyurulup geçiş rehberiyle gelir.Tarihsel olarak daha sancılı; paket uyumsuzlukları yükseltmeyi projeye dönüştürebilir.
Uygulama boyutuKendi çizim motorunu taşıdığı için taban boyut biraz daha yüksek.Taban boyut biraz daha düşük olabilir; paket sayısı arttıkça fark kapanır.
Mağaza inceleme süreciSorunlar genellikle uygulamanın kendisinden kaynaklanır, çerçeveden değil.Aynı; ama üçüncü parti paketlerin gizlilik beyanları eksik olabiliyor, bu ek iş çıkarıyor.

Tablo mobilde yana kaydırılabilir. Değişken rakamlar (komisyon oranı, paket ücreti, sürüm numarası) bilerek yazılmadı — bunlar zamanla değişir, güncel değeri sağlayıcıdan doğrulayın.

Performans tartışması bugün çoğu proje için bitmiştir

On yıl önce bu karşılaştırmanın merkezinde performans vardı; bugün değil. Her iki çerçeve de sipariş listesi, harita, form, bildirim ve ödeme akışı içeren tipik bir iş uygulamasını akıcı çalıştırır. Fark, ekranda saniyede yüzlerce nesnenin hareket ettiği oyun benzeri arayüzlerde veya çok ağır liste animasyonlarında ortaya çıkar. Eğer uygulamanız bir oyun değilse ve saniyede binlerce satır güncellenen bir grafik göstermiyorsa, performans üzerinden karar vermek yanlış eksende karar vermektir. Doğru eksen ekip, bakım ve tasarım ihtiyacıdır.

Asıl belirleyici: uygulamayı beş yıl sonra kim açacak?

Bir mobil uygulama teslim edildiği gün bitmez; işletim sistemleri her yıl yeni sürüm çıkarır, mağazalar hedef sürüm zorunluluğu getirir ve uygulama güncellenmezse bir gün mağazadan düşer. Bu yüzden teknoloji seçiminde en ağır soru şudur: bu kodu ileride kim bakacak? Türkiye’de React ve JavaScript bilen geliştirici havuzu Dart bilenlerden belirgin şekilde geniştir; bu, React Native lehine gerçek bir argümandır. Buna karşılık Flutter kod tabanları pratikte daha az paket bağımlılığı taşıdığı için yıllar sonra açıldığında daha az kırılmış olur. Yani biri işe alım kolaylığı, diğeri bakım kolaylığı sunar.

Paket ekosistemi: çok olması iyi değildir, bakımlı olması iyidir

React Native tarafında hemen her ihtiyaç için birden çok paket bulunur ve bu ilk bakışta avantaj görünür. Pratikte sorun şudur: paketlerin önemli bir kısmı bakımsızdır, işletim sistemi güncellemesinden sonra çalışmayı bırakır ve o noktada ya paketi siz devralırsınız ya da alternatifine geçersiniz. Flutter tarafında paket sayısı daha az ama kritik alanlarda (kamera, konum, bildirim, harita) resmi ya da yaygın kabul görmüş tek bir çözüm olma eğilimi var. Bir proje seçerken paket sayısına değil, o paketin son güncellenme tarihine ve açık sorun sayısına bakmak gerekir; biz teklif aşamasında bunu tek tek kontrol ediyoruz.

Ekip zaten React biliyorsa denklem değişir

Şirket içinde React ile web geliştiren bir ekibiniz varsa React Native ciddi bir avantaj sunar: aynı dil, benzer bileşen mantığı, ortak yardımcı kod. Bu durumda tek bir ekip hem web hem mobil tarafı taşıyabilir ve bu, uzun vadede en büyük maliyet kaleminden — insan kaynağından — tasarruf demektir. Böyle bir ekibiniz yoksa bu avantaj sizin için yoktur ve karar diğer kriterlere kayar. Kararı verirken sorulacak soru "hangisi daha iyi" değil, "bizim elimizde ne var" olmalıdır.

Tek kod tabanı, iki farklı kabuk — mimari kararı çerçeveden bağımsızdır

Ev Hizmet uygulamasında müşteri ve hizmet veren için iki ayrı uygulama yayınlamak yerine tek kod tabanında, kullanıcının rolüne göre açılan iki ayrı kabuk kurduk. Bu karar Flutter’a özgü değil; React Native ile de yapılabilirdi. Buradaki mesaj şu: mimari kararlar (rol bazlı kabuk, sunucu tarafında yetkilendirme, veri minimizasyonu) çerçeve seçiminden bağımsızdır ve projenin kaderini çerçeveden daha çok belirler. Flutter mı React Native mi sorusuna takılıp bu kararları atlamak, yanlış yerde uzun düşünüp doğru yerde hızlı karar vermektir.

Peki ya native? Üçüncü bir yol var

Bazı projelerde doğru cevap ikisi de değildir. Şifre Yöneticisi uygulamasını Kotlin ile native yazdık, çünkü Android’in donanım destekli anahtar deposu ve biyometrik doğrulama API’lerine doğrudan erişmek istedik; arada bir katman olduğunda bu bütünleşme sorunlu oluyor. Sessiz Uyku da aynı sebeple native. Yani soru üçlüdür: Flutter, React Native ve native. Güvenlik veya derin sistem entegrasyonu merkezdeyse native, geri kalan çoğu durumda cross-platform doğru cevaptır. Bu ayrımı ayrıca yazdık: Native mi Cross-Platform mu?

Hangisini Seçmelisiniz?

Flutter seçin, eğer:

  • Ekibinizde hazır bir React geliştirici kadrosu yok
  • iOS ve Android’in birebir aynı görünmesini istiyorsunuz
  • Tasarımınız özel; hazır platform bileşenlerine benzemesin istiyorsunuz
  • Uygulamayı yıllarca az bakımla taşımak istiyorsunuz
  • Animasyon ve geçişler ürün deneyiminin önemli parçası

React Native seçin, eğer:

  • Şirketinizde zaten React ile web geliştiren bir ekip var
  • Aynı ekibin hem web hem mobil taşımasını istiyorsunuz
  • Uygulama ağırlıklı olarak veri listeleyen, form içeren bir yapı
  • İleride geliştirici bulma kolaylığı sizin için en kritik kriter

Bizim Deneyimimiz

Flutter tarafında üç uygulama yayınladık. Canlı Altın gram, çeyrek, yarım ve tam altın ile döviz kurlarını anlık gösteriyor; hem App Store hem Google Play’de yayında ve İngilizce sürümü de var. Ev Hizmet iki taraflı bir pazaryeri: müşteri ve hizmet veren için tek kod tabanında rol bazlı iki kabuk, canlı konum takibi, 3D Secure ödeme ve dört dilli arayüz; iki mağazada da yayında. Dini Bilgi Yarışması ise tamamen çevrimdışı çalışan bir oyun. React Native tarafında Mesai adlı vardiya ve mesai takibi uygulamasını geliştiriyoruz; bu uygulama henüz geliştirme aşamasında ve yayında değil, bunu olduğu gibi yazıyoruz. Kotlin native tarafında ise Şifre Yöneticisi ve Sessiz Uyku uygulamalarımız Play Store’da.

Ev Hizmet vaka çalışmasıCanlı AltınMesaiDini Bilgi Yarışması

Sıkça Sorulan Sorular

Flutter mı React Native mi daha ucuz?
Geliştirme maliyeti açısından ikisi arasında yapısal bir fark yok; ikisi de tek kod tabanından iki platforma çıkıyor ve ayrı ayrı native yazmaya göre belirgin şekilde ucuz. Fark toplam sahip olma maliyetinde ortaya çıkıyor: React Native tarafında geliştirici bulmak daha kolay olduğu için ileride bakım için ekip kurmak ucuz olabilir; Flutter tarafında ise paket bağımlılığı daha az olduğu için bakım gereken durum sayısı daha az olma eğiliminde. İkisi de savunulabilir; hangisinin sizin için ucuz olduğu ekibinize bağlı.
Uygulamam ileride başka bir ekibe devredilebilir mi?
Evet ve bu, teknoloji seçiminden çok kod kalitesiyle ilgili bir sorudur. Devredilebilirliği belirleyen şeyler: bağımlılıkların güncel olması, mimarinin standart kalıplara uyması, ortam değişkenlerinin ve kurulum adımlarının belgelenmiş olması. Bizde proje sonunda veritabanı, depolama ve mağaza hesapları sizin adınıza kalır ve erişim bilgileri devredilir; başka bir ekiple devam etmeye karar verirseniz sistem sizde kalır.
Flutter web ve masaüstü de yapıyor, avantaj değil mi?
Kağıt üzerinde evet, pratikte dikkatli olmak gerekir. Flutter web çıktısı arama motorları açısından zayıftır; sayfanın içeriği tarayıcıda çizildiği için standart bir web sitesi gibi indekslenmez. Yani pazarlama sitesi ya da e-ticaret için Flutter web doğru araç değildir; biz o tarafta Next.js ya da Astro kullanıyoruz. Flutter web, oturum açmış kullanıcının kullandığı iç panel gibi arama motoruna açık olmayan ekranlarda anlamlı olabilir.
Var olan React Native uygulamamı Flutter’a taşımak mantıklı mı?
Genellikle hayır. Çalışan bir uygulamayı sırf çerçeve değiştirmek için baştan yazmak, aynı işlevi ikinci kez ödemektir. Taşımayı ancak şu durumlarda konuşuruz: mevcut kod tabanı sürüm yükseltmelerinde tıkanmışsa, bakımsız paketlere kilitlenmişse ve bunları düzeltmenin maliyeti yeniden yazmaya yaklaşıyorsa. Bunu ölçmenin yolu tahmin değil inceleme; kodu okumadan taşınsın ya da taşınmasın demiyoruz.
Hangisinde mağaza reddi daha az yaşanıyor?
Çerçeveden kaynaklanan sistematik bir fark görmedik. Redler neredeyse her zaman uygulamanın kendi içeriğinden geliyor: eksik gizlilik beyanı, gerekçesiz izin talebi, hesap silme imkanının bulunmaması, ödeme akışıyla ilgili kurallar. Tek fark şu: React Native tarafında kullanılan üçüncü parti paketlerin gizlilik manifesti eksik olabiliyor ve bu ek bir kontrol işi çıkarıyor. Bu süreçleri biz yürütüyoruz; ayrıntısı App Store ve Google Play Yayın Rehberi yazısında.

Karar Verdiyseniz

Bu karşılaştırmanın karşılık geldiği çözüm sayfaları — sistemin hangi modüllerden oluştuğunu ve sürecin nasıl işlediğini orada bulacaksınız.

Konuyla İlgili Yazılar

Diğer Karşılaştırmalar

Hâlâ emin değil misiniz?

Durumunuzu anlatın, hangisinin size uyduğunu söyleyelim. Cevap "ikisi de değil" ya da "bu iş için bize ihtiyacınız yok" olursa onu da söylüyoruz.

WhatsApp'tan Sorun