Cross-platform geliştirmede en sık sorulan soru bu: hangi framework’ü seçmeliyim?
Dürüst cevap şu: evrensel bir kazanan yok. Her framework’ün farklı bir felsefesi, farklı güçlü yanları var ve farklı ekiplere uyuyor. Bu yazı, sizi tek bir framework’e ikna etmek için değil, bilinçli bir karar vermenize yardımcı olmak için yazıldı.
Üçünü de 2026 verileriyle, 10 farklı boyutta karşılaştıracağız.
Üç Farklı Felsefe
Özelliklere geçmeden önce her framework’ün temel felsefesini anlamak gerekiyor.
Flutter: “Her Yerde Aynı Arayüz”
Flutter, her şeyi kendi motoruyla (Skia/Impeller) çiziyor. Uygulamanız her platformda birebir aynı görünüyor. Tek kod tabanı, tek arayüz, tek ekip. Maksimum kod paylaşımı.
React Native: “Bir Kere Öğren, Her Yerde Yaz”
React Native, platformun kendi native arayüz bileşenlerini kullanıyor ama mantığı JavaScript ile yazmanıza izin veriyor. Uygulamanız her platformda native görünüyor, çünkü gerçek native buton, metin alanı ve liste bileşenlerini kullanıyor.
KMP: “Mantığı Paylaş, Arayüzü Native Tut”
KMP, iş mantığını (ağ istekleri, veritabanı, modeller) Kotlin ile paylaşıyor. Arayüz her platform için ayrı yazılıyor: Android’de Compose, iOS’ta SwiftUI. İsteğe bağlı olarak Compose Multiplatform ile arayüz de paylaşılabiliyor.
Flutter: [ Paylaşılan UI + Paylaşılan Mantık ] → %95 paylaşım
React Native: [ Paylaşılan UI + Paylaşılan Mantık ] → %85 paylaşım
KMP: [ Native UI ] + [ Paylaşılan Mantık ] → %40-60 paylaşım
KMP + CMP: [ Paylaşılan UI + Paylaşılan Mantık ] → %80-95 paylaşım
1. Dil
| Framework | Dil | Öğrenme Eğrisi |
|---|---|---|
| Flutter | Dart | Çoğu geliştirici için yeni bir dil |
| React Native | JavaScript/TypeScript | Çoğu web geliştiricisi zaten biliyor |
| KMP | Kotlin | Android geliştiricileri zaten biliyor, Swift’e benziyor |
Bunun Anlamı
Ekibiniz JavaScript biliyorsa, React Native yeni bir dil öğrenmeden mobil uygulama geliştirmenizi sağlıyor.
Ekibiniz Kotlin biliyorsa, KMP mevcut becerileri doğrudan kullanmanıza izin veriyor. Kotlin, Swift’e de benziyor, bu yüzden iOS geliştiricileri paylaşılan kodu kolayca okuyup inceleyebiliyor.
Ekibiniz sıfırdan başlıyorsa, Dart (Flutter) öğrenmesi kolay ama sadece Flutter’da işe yarıyor. Kotlin ve JavaScript ise mobil dışında da kullanılabiliyor.
2. Performans
| Metrik | Flutter | React Native | KMP |
|---|---|---|---|
| Render | Kendi motoru (Skia/Impeller) | Native bileşenler + Fabric | Native derleme |
| Başlangıç süresi | Hızlı (AOT derleme) | Hermes motoruyla iyileşti | Native seviyede |
| Uygulama boyutu (taban) | ~15-30 MB | ~10-20 MB | En küçük (native) |
| Animasyon performansı | Mükemmel (60/120fps) | İyi (Fabric ile iyileşti) | Native seviyede |
| Bellek kullanımı | Orta | Değişken | En düşük |
Gerçek Durum
2026’da üçü de çoğu uygulama için yeterince iyi performans veriyor. Performans farkları sadece belirli senaryolarda fark ediliyor:
- Karmaşık animasyonlar: Flutter kazanıyor, render motoru animasyonlar için özel olarak tasarlanmış
- Büyük listeler: KMP kazanıyor, native
LazyColumn/UITableViewen optimize seçenekler - Başlangıç süresi: KMP kazanıyor, başlatılacak bir runtime yok
- Uygulama boyutu: KMP kazanıyor, gömülü bir motor ya da runtime yok
Tipik bir iş uygulamasında (listeler, formlar, navigasyon) üçü arasında fark hissetmezsiniz.
3. Kod Paylaşımı
| Flutter | React Native | KMP (sadece mantık) | KMP + CMP | |
|---|---|---|---|---|
| UI paylaşımı | Evet (%100) | Evet (~%85) | Hayır | Evet (~%90) |
| Mantık paylaşımı | Evet | Evet | Evet | Evet |
| Toplam paylaşım | ~%95 | ~%85 | ~%40-60 | ~%80-95 |
| Platforma özel kod | ~%5 | ~%15 | ~%40-60 | ~%5-20 |
Bunun Anlamı
Flutter en fazla kodu paylaşıyor. Her şey için tek bir kod tabanı. Ama platforma özgü arayüz davranışından ödün veriyorsunuz.
React Native çoğu kodu paylaşıyor ama bazı platform özellikleri için “native module” gerekebiliyor, yani kodun yaklaşık %15’i platforma özel kalıyor.
KMP (sadece mantık) en az kodu paylaşıyor ama en native deneyimi veriyor. Arayüzü iki kere yazıyorsunuz (Compose + SwiftUI) ama tüm iş mantığını paylaşıyorsunuz.
KMP + Compose Multiplatform neredeyse Flutter kadar paylaşım sağlıyor ve bunu Kotlin/Compose ekosisteminde yapıyor. Compose Multiplatform’u Flutter ile daha detaylı karşılaştırdığımız yazıya buradan göz atabilirsiniz.
4. Geliştirici Deneyimi
IDE ve Araçlar
| Flutter | React Native | KMP | |
|---|---|---|---|
| Ana IDE | VS Code, Android Studio | VS Code, herhangi bir editör | Android Studio, IntelliJ |
| Hot Reload | Mükemmel (saniyenin altında) | İyi (Fast Refresh) | Sınırlı (iOS için yeniden derleme gerekiyor) |
| Debugging | DevTools (mükemmel) | Flipper, Chrome DevTools | Standart IDE debugger |
| Önizleme | Widget önizlemesi | Sınırlı | Compose Preview (sadece Android, iOS önizlemesi yok) |
Hot Reload
Bu, Flutter’ın en büyük avantajı. Bir rengi değiştirin, kaydedin, anında görün. React Native’in Fast Refresh özelliği de iyi. KMP’nin hot reload desteği Compose Hot Reload ile gelişiyor ama hâlâ geride.
iOS özelinde KMP, her değişiklik için Kotlin/Native framework’ünü yeniden derlemeyi gerektiriyor, bu da 10-30 saniye sürebiliyor. KMP geliştiricilerinin en sık şikayet ettiği konu bu.
Paket Ekosistemi
| Flutter | React Native | KMP | |
|---|---|---|---|
| Paket sayısı | 40.000+ (pub.dev) | En büyük (npm ekosistemi) | 1.000+ (hızla büyüyor) |
| Kalite | Genelde yüksek | Değişken (birçoğu terk edilmiş) | Yüksek kalite, daha az seçenek |
| Native API kapsamı | İyi (eklentiler üzerinden) | İyi (native module’ler üzerinden) | Mükemmel (doğrudan native erişim) |
React Native, tüm npm ekosisteminden faydalanıyor (her paket RN’e özel değil ama çoğu uyumlu). Ancak birçok npm paketi güncel değil ya da terk edilmiş durumda. Flutter’ın paket sayısı daha az ama bakımı daha iyi. KMP’nin paket sayısı en az ama kaliteli, ayrıca native API’lere her zaman doğrudan erişebiliyorsunuz.
5. Native Görünüm ve His
| Flutter | React Native | KMP | |
|---|---|---|---|
| iOS hissi | Özel (native’i taklit edebilir) | Native bileşenler | Native (SwiftUI) |
| Android hissi | Özel (Material 3) | Native bileşenler | Native (Compose) |
| Platform kuralları | Manuel uygulanmalı | Çoğunlukla otomatik | Tamamen native |
| Erişilebilirlik | İyi | İyi | Native seviyede |
Tartışma
Flutter her pikseli kendisi çiziyor. Bu, uygulamanızın her iki platformda da birebir aynı görünmesi demek, marka tutarlılığı için harika ama kullanıcılar platforma özgü davranış beklediğinde (iOS’ta geri kaydırma jesti, Android’de geri tuşu, platforma özel tarih seçiciler) sorun olabiliyor.
React Native gerçek native bileşenleri kullanıyor, bu yüzden platform kurallarını otomatik olarak takip ediyor. Ama karmaşık özel arayüzler daha zor kurulabiliyor.
KMP, native arayüzle en otantik platform deneyimini veriyor, çünkü zaten native. Ama arayüz kodunu iki kere yazıyorsunuz.
6. Bu Framework’leri Kullanan Şirketler (2026)
Flutter
- Google (dahili uygulamalar)
- BMW (My BMW uygulaması)
- Alibaba
- Nubank (200 milyon+ kullanıcı)
- ByteDance (TikTok dahili araçları)
React Native
- Meta (Facebook, Instagram)
- Microsoft (Office, Teams bileşenleri)
- Discord
- Walmart
- Shopify
KMP
- Netflix (stüdyo uygulamaları)
- McDonald’s (mobil sipariş)
- Airbnb (rezervasyon mantığı)
- Duolingo (%80 paylaşılan kod)
- Cash App (finans)
- Google (Workspace uygulamaları)
Üçü de büyük ölçekte üretimde kanıtlanmış durumda. “Üretime hazır mı?” sorusu her üçü için de yanıtlanmış: evet.
7. İş Piyasası
| Flutter | React Native | KMP | |
|---|---|---|---|
| İş ilanları | Hızla artıyor | En fazla ilan | En hızlı artan |
| Ortalama maaş (ABD) | ~$120-140K | ~$100-135K | ~$125-145K |
| Rekabet | Orta | Yüksek | Düşük (nadir bir beceri) |
| Freelance talebi | Yüksek | Çok yüksek | Artıyor |
Kariyer Perspektifi
React Native‘in en çok ilanı var ama en çok adayı da var. Güvenli bir seçim ama tek başına fark yaratmıyor.
Flutter güçlü bir büyüme ve iyi talep gösteriyor, özellikle startup’larda ve ajanslarda.
KMP geliştiricileri nadir ve talep görüyor. KMP’yi iyi biliyorsanız, iyi ödeme yapan roller için daha az kişiyle rekabet ediyorsunuz. Üçü arasında en iyi “arz-talep” dengesi bu.
8. Sürdürülebilirlik
| Flutter | React Native | KMP | |
|---|---|---|---|
| Güncelleme zorluğu | Orta (sürümler arası kırıcı değişiklikler) | Zor olabiliyor (native module güncellemeleri) | Orta (Gradle karmaşıklığı) |
| Teknik borç riski | Düşük (tek kod tabanı) | Orta (bridge/native module karışımı) | Düşük (native + paylaşılan) |
| Uzun vadeli istikrar | İyi (Google desteği) | İyi (Meta desteği) | İyi (JetBrains + Google desteği) |
Görünmeyen Maliyetler
Flutter: Büyük sürüm güncellemeleri ciddi bir geçiş çalışması gerektirebiliyor. Dart daha küçük bir ekosistem, bu yüzden Flutter popülerliğini kaybederse Dart becerilerinizin başka alanlarda kullanılabilirliği sınırlı kalıyor.
React Native: “Native module” deseni bazı bağımlılıkların topluluk tarafından bakımının yapılması demek. Geliştiriciler paketleri terk ettiğinde güncelleme ya da fork etme yükü size kalıyor.
KMP: Gradle yapılandırması karmaşık. Kotlin/Native derleyicisi JVM derlemesinden daha yavaş. Büyük projelerde iOS derleme süreleri gerçek bir dert.
9. Test
| Flutter | React Native | KMP | |
|---|---|---|---|
| Unit test | Mükemmel (dart:test) | İyi (Jest) | Mükemmel (kotlin.test, paylaşılan testler) |
| Widget/bileşen testi | Mükemmel (WidgetTester) | İyi (Testing Library) | İyi (Compose testi) |
| Entegrasyon testi | İyi (integration_test) | İyi (Detox/Appium) | İyi (platforma özel araçlar) |
| Paylaşılan test avantajı | Testler tüm platformlar için tek sefer çalışıyor | Testler tüm platformlar için tek sefer çalışıyor | commonTest‘teki testler TÜM platformlarda çalışıyor |
KMP’nin test avantajı şu: commonTest içine yazdığınız testler, mantığınızın hem Android hem iOS’ta çalıştığını otomatik olarak doğruluyor. Tek test dosyası, iki platform doğrulanmış oluyor.
10. Hangisini Ne Zaman Seçmeli
Flutter’ı Şu Durumlarda Seçin:
- Tek ekiple maksimum kod paylaşımı istiyorsanız
- Görsel tutarlılık, native his’ten daha önemliyse
- Uygulamanızda karmaşık animasyonlar ya da özel arayüz varsa
- Bir startup MVP’si kuruyor ve hızlı çıkış yapmanız gerekiyorsa
- Ekibiniz küçükse ve her şey için tek bir framework istiyorsanız
- Uygulamanız içerik odaklıysa (haber, sosyal medya, e-ticaret)
React Native’i Şu Durumlarda Seçin:
- Ekibiniz zaten JavaScript/TypeScript biliyorsa
- Mobil geliştirmek isteyen mevcut bir web ekibiniz varsa
- npm ekosistemine erişmeniz gerekiyorsa
- Şirketiniz web’de React kullanıyorsa (paylaşılan bilgi)
- Hızlı işe alım yapmanız gerekiyorsa (en geniş geliştirici havuzu)
KMP’yi Şu Durumlarda Seçin:
- Ekibiniz Kotlin biliyorsa (mevcut Android geliştiricileri)
- Her platformda native arayüz istiyorsanız (en iyi kullanıcı deneyimi)
- Performans kritikse (finans, medya, oyun)
- Mevcut bir Android uygulamanız var ve iOS eklemek istiyorsanız
- İş mantığını paylaşmak ama arayüzü esnek tutmak istiyorsanız
- Ekibinizde hem Kotlin hem Swift geliştiricileri varsa
- Kariyer farklılaşması istiyorsanız (nadir, talep gören bir beceri)
KMP + Compose Multiplatform’u Şu Durumlarda Seçin:
- KMP için yukarıdaki her şey, ARTI
- Flutter gibi arayüzü de paylaşmak istiyorsanız (ama Kotlin ile)
- iOS’ta Compose kullanmaya sıcak bakıyorsanız (stabil ama görece yeni)
- Her şey için tek bir dil (Kotlin) istiyorsanız
Hibrit Yaklaşım
2026’da birçok şirket aynı anda birden fazla framework kullanıyor:
- Paylaşılan iş mantığı (ağ istekleri, veritabanı, modeller) için KMP
- Kullanıcıya dönük ekranlar için native arayüz (Compose + SwiftUI)
- Dahili araçlar ya da hızlı prototipleme için Flutter ya da React Native
“Bir framework seç, ömür boyu ona bağlı kal” ikilemi artık eskiyor.
Karar Akış Şeması
Kotlin biliyor musunuz?
├── Evet → iOS'ta native arayüz gerekiyor mu?
│ ├── Evet → KMP (mantık) + SwiftUI
│ └── Hayır → KMP + Compose Multiplatform
│
├── Hayır → JavaScript biliyor musunuz?
│ ├── Evet → React Native
│ └── Hayır → Dart öğrenmek ister misiniz?
│ ├── Evet → Flutter
│ └── Hayır → KMP (Kotlin en çok yönlü seçenek)
Hızlı Özet
| Flutter | React Native | KMP | |
|---|---|---|---|
| Dil | Dart | JavaScript | Kotlin |
| Arayüz yaklaşımı | Kendi motoru | Native bileşenler | Native ya da CMP |
| Kod paylaşımı | ~%95 | ~%85 | %40-95 |
| Performans | Native’e yakın | İyi | Native |
| Hot reload | Mükemmel | İyi | Sınırlı |
| Ekosistem | 40K paket | 2M npm paketi | 1K+ (büyüyor) |
| En uygun | Tek ekip, maksimum paylaşım | JS ekipleri, web’den mobile | Kotlin ekipleri, native UX |
| Destekleyen | Meta | JetBrains + Google |
Türkiye’den Bakınca: React Native’in Yeri
Yukarıdaki Compose Multiplatform ile Flutter karşılaştırmasında Türkiye’deki Android/Kotlin kökenli ekiplerin Compose Multiplatform’a doğal geçişini konuşmuştuk. React Native’in Türkiye’deki konumu farklı bir yerden besleniyor: web geliştirme.
Türkiye’nin yazılım sektöründe uzun yıllardır büyük bir JavaScript/React web geliştirici havuzu var: e-ticaret ve fintech şirketlerinin ön yüz ekipleri, ajanslar ve bootcamp mezunları büyük ölçüde React ve TypeScript üzerine kurulu. Bu, React Native için hazır bir geçiş yolu anlamına geliyor. Web tarafında zaten React bilen bir ekip, yeni bir dil öğrenmeden mobil uygulamaya adım atabiliyor; bu da onu KMP ya da Flutter’a göre daha düşük “giriş maliyetli” bir seçenek yapıyor.
Bunun bir bedeli de var. React Native ekiplerinin bir kısmı, native platform detaylarına (iOS’a özgü jestler, Android’in arka plan kısıtlamaları) React Native’e yeni başlayan bir web ekibiyle karşılaştığında daha geç aşinalık kazanıyor; bu, framework’ün kendisinden çok, ekibin native mobil geçmişinin olup olmamasıyla ilgili bir konu. KMP’nin native UI yaklaşımı bu riski yapısal olarak ortadan kaldırıyor, ama karşılığında Kotlin öğrenme eğrisini gerektiriyor.
Pratik sonuç: elinizde güçlü bir web/React ekibi varsa ve mobile hızlı bir köprü kurmak istiyorsanız React Native, ekibin zaten bildiği dili koruyarak en kısa yol. Elinizde native Android/Kotlin geçmişi olan bir ekip varsa, bir önceki karşılaştırma yazımızda ele aldığımız gibi Compose Multiplatform daha mantıklı bir yatırım. İkisi de “sıfırdan öğrenmeden mevcut bir dil becerisini mobile taşıma” mantığıyla çalışıyor, sadece hangi dilden başladığınıza göre yön değiştiriyor.
Son Değerlendirme
Üçü de 2026’da üretime hazır. Framework benchmark’ları değil, ekibinizin mevcut becerileri ve projenizin ihtiyaçları asıl belirleyici olmalı.
Ekibiniz JavaScript/React biliyorsa ve hızlı bir mobil köprü istiyorsanız, React Native en kısa yol.
Ekibiniz Kotlin biliyorsa ve native arayüz kalitesi öncelikliyse, KMP (gerekirse Compose Multiplatform ile birlikte) en tutarlı seçim.
Sıfırdan başlıyorsanız ve tek ekiple maksimum paylaşım istiyorsanız, Flutter’ın öğrenme eğrisi ve ekosistemi en güvenli başlangıç noktası.
Doğru cevap yok, ekibinizi üretken kılan seçim doğru cevap.