Kısa cevap
Uygulamanız yoğun donanım erişimi, platforma özgü deneyim ya da ağır grafik işleme gerektiriyorsa native geliştirme (iOS için Swift, Android için Kotlin) daha uygundur. Formlar, listeler, panolar ve standart iş akışlarından oluşan uygulamaların çoğunda ise Flutter ya da React Native gibi cross-platform çözümler, tek kod tabanıyla iki platforma daha düşük maliyetle çıkmayı sağlar. Doğru seçim; uygulamanın teknik ihtiyacına, ekibin bilgisine ve uzun vadeli bakım planına göre yapılır.
Mobil uygulama projelerinde ilk teknik karar genellikle bu sorudur: iOS ve Android için ayrı ayrı native uygulama mı yazılmalı, yoksa iki platformu tek kod tabanıyla mı çıkarmalı? Cevap, projenin bütçesini, süresini ve yayından sonraki yıllarda bakımın nasıl yapılacağını doğrudan etkiler.
Bu yazıda iki yaklaşımı ve öne çıkan araçları karşılaştırıyor, hangi uygulama türünde hangisinin daha mantıklı olduğunu anlatıyoruz. Belirli bir teknolojiyi her proje için önermiyoruz; her projede ihtiyacı yeniden değerlendiriyoruz.
Native uygulama nedir?
Native uygulama, her platform için o platformun resmi dili ve araçlarıyla ayrı ayrı geliştirilen uygulama demektir. iOS tarafında Swift dili ve SwiftUI ya da UIKit, Android tarafında ise Kotlin dili ve Jetpack Compose kullanılır.
Native geliştirmenin temel avantajı, platformun sunduğu her özelliğe ilk günden ve aracısız erişebilmektir. Yeni bir işletim sistemi sürümüyle gelen özellikler, native tarafta hemen kullanılabilir. Arayüz de platformun kendi bileşenleriyle çizildiği için kullanıcıların alışık olduğu davranışları kendiliğinden taşır.
Dezavantajı ise iki ayrı kod tabanıdır. Aynı özellik iki kez yazılır, iki kez test edilir ve iki ayrı bakım gerektirir.
Cross-platform uygulama nedir?
Cross-platform yaklaşımda tek bir kod tabanından hem iOS hem Android uygulaması üretilir. Öne çıkan seçenekler şunlardır:
- Flutter: Google tarafından geliştirilen, Dart dilini kullanan çatı. Arayüzü kendi çizim motoruyla oluşturur; bu sayede iki platformda birebir aynı görünüm elde edilebilir.
- React Native: Meta tarafından geliştirilen, JavaScript ya da TypeScript kullanan çatı. Arayüz platformun kendi bileşenleriyle çizilir. Web tarafında React bilen ekipler için öğrenmesi kolaydır.
- Kotlin Multiplatform: JetBrains'in yaklaşımı. İş mantığı, ağ ve veri katmanı ortak yazılır; arayüz her platformda native kalabilir ya da Compose Multiplatform ile ortaklaştırılabilir.
Cross-platform çözümler de gerektiğinde platforma özgü kod yazmaya izin verir. Kamera, Bluetooth ya da ödeme gibi özellikler için hazır eklentiler kullanılır, eksik olan yerde native modül eklenir.
İki yaklaşım nasıl karşılaştırılır?
Aşağıdaki tablo, karar verirken en çok önem taşıyan başlıkları özetliyor.
| Kriter | Native (Swift / Kotlin) | Cross-platform (Flutter / React Native) |
|---|---|---|
| Kod tabanı | Platform başına ayrı | Büyük ölçüde ortak |
| Geliştirme süresi | İki platform için daha uzun | Genellikle daha kısa |
| Performans | Platformun doğrudan sunduğu performans | Çoğu iş uygulaması için yeterli |
| Donanım ve işletim sistemi erişimi | Doğrudan ve ilk günden | Eklenti ya da native modül üzerinden |
| Yeni işletim sistemi özellikleri | Hemen kullanılabilir | Eklenti desteğini bekleyebilir |
| Arayüz | Platformun kendi bileşenleri | Ortak tasarım, platform davranışı ayrıca ele alınmalı |
| Ekip ihtiyacı | iOS ve Android uzmanlığı | Tek teknolojide uzman ekip |
| Bakım | İki kod tabanı | Tek kod tabanı ve çatı güncellemeleri |
Tablodaki "daha kısa" ya da "daha uzun" ifadeleri genel eğilimi anlatır. Gerçek süre, uygulamanın kapsamına ve platforma özgü iş miktarına bağlıdır.
Hangi durumda native geliştirme seçilmeli?
Native geliştirme, platformla yakın çalışmanın gerektiği durumlarda öne çıkar.
- Yoğun donanım kullanımı: Gerçek zamanlı kamera işleme, artırılmış gerçeklik, sürekli Bluetooth iletişimi ya da düşük seviyeli ses işleme.
- Platforma özgü özellikler: Ana ekran widget'ları, akıllı saat uygulamaları, CarPlay ya da Android Auto entegrasyonları gibi her platformda farklı çalışan yapılar.
- Tek platform hedefi: Uygulama yalnızca iOS ya da yalnızca Android için yapılacaksa cross-platform'un temel avantajı ortadan kalkar.
- Platformu iyi bilen ekip: Kurum içinde güçlü iOS ve Android ekipleri varsa native yol daha doğal bir seçimdir.
Hangi durumda cross-platform daha mantıklı?
İş uygulamalarının büyük bölümü cross-platform ile rahatlıkla geliştirilebilir.
- Standart akışlar: Giriş, listeler, formlar, sipariş, randevu, bildirim ve ödeme gibi akışlardan oluşan uygulamalar.
- İki platforma aynı anda çıkma: Bütçe ve süre sınırlıyken iOS ve Android kullanıcılarına birlikte ulaşmak.
- MVP ve hızlı doğrulama: Fikrin gerçek kullanıcılarla test edileceği ilk sürümler. Bu yaklaşımı MVP nedir? yazımızda anlattık.
- Ortak tasarım dili: Markanın iki platformda da aynı görünmesinin istendiği ürünler.
Mobil oyunlarda durum farklı mı?
Oyunlar bu karşılaştırmanın biraz dışında kalır. Oyun geliştirmede genellikle uygulama çatıları yerine oyun motorları kullanılır ve bu motorlar zaten birden fazla platforma çıktı alabilir.
Biz mobil oyunlarımızı Godot ile geliştiriyoruz. Godot, aynı projeden Android ve iOS için çıktı almaya imkân veriyor; Prismo, Arrow Knots ve Çağların Cephesi gibi oyunlarımız bu motorla hazırlandı. Oyun geliştirme sürecinin ayrıntılarını mobil oyun geliştirme süreci yazımızda bulabilirsiniz.
Web uygulaması bir alternatif olabilir mi?
Bazı projelerde mağaza uygulamasına hiç gerek olmayabilir. İyi tasarlanmış, mobil uyumlu bir web uygulaması ya da ana ekrana eklenebilen bir progresif web uygulaması (PWA), özellikle iç kullanım araçları, paneller ve seyrek kullanılan hizmetler için yeterli olabilir.
PWA'nın sınırları da var: bazı donanım özelliklerine erişim kısıtlıdır, mağazada keşfedilme avantajı yoktur ve iOS'taki bildirim ve arka plan çalışma imkânları native uygulamaya göre sınırlıdır. Kullanıcının uygulamayı her gün açması bekleniyorsa mağaza uygulaması genellikle daha iyi bir deneyim sunar.
Karar verirken hangi sorulara bakmalı?
Seçimi netleştirmek için şu soruları cevaplayın:
- Uygulama hangi donanım özelliklerini ne yoğunlukta kullanacak?
- İlk sürümde iki platform da gerekli mi?
- Arayüz platforma özgü mü olmalı, yoksa iki platformda aynı mı?
- Uygulamayı uzun vadede hangi ekip geliştirecek ve bu ekip hangi teknolojiyi biliyor?
- Mevcut bir web uygulaması varsa, onunla kod ya da ekip paylaşımı mümkün mü?
Bu soruların cevapları çoğu projede seçimi açıkça gösterir. Kararsız kalınan durumlarda kritik özelliği küçük bir teknik prototiple denemek, ileride pahalıya mal olacak bir yanlış seçimi önler.
Mobil uygulamanız için doğru teknolojiyi seçmek ve uygulamayı mağazaya kadar götürmek istiyorsanız mobil uygulama geliştirme hizmetimize göz atabilirsiniz. Uygulama hazır olduğunda yayın adımları için App Store ve Google Play yayınlama rehberimizi okuyabilirsiniz.
Sık sorulan sorular
Cross-platform uygulamalar native uygulamalardan yavaş mı?
Formlar, listeler ve standart ekranlardan oluşan uygulamalarda kullanıcıların fark edeceği bir performans farkı genellikle oluşmaz. Ağır grafik, gerçek zamanlı medya işleme ya da yoğun donanım iletişimi gerektiren uygulamalarda ise native geliştirme daha fazla kontrol ve optimizasyon imkânı sunar. Performans, seçilen teknoloji kadar kodun nasıl yazıldığına da bağlıdır.
Flutter mı, React Native mi seçilmeli?
İki çatı da olgun ve yaygın olarak kullanılıyor. Ekip JavaScript ve React biliyorsa ya da web uygulamasıyla kod paylaşımı isteniyorsa React Native avantajlıdır. İki platformda birebir aynı, özel tasarlanmış bir arayüz hedefleniyorsa Flutter'ın kendi çizim motoru işi kolaylaştırır.
Cross-platform ile başlayıp sonra native'e geçmek mümkün mü?
Mümkün, ancak bu genellikle uygulamanın yeniden yazılması anlamına gelir. Bir ara yol olarak, cross-platform uygulamanın içine belirli ekranlar ya da özellikler için native modüller eklenebilir. Kotlin Multiplatform gibi yaklaşımlarda ise iş mantığı ortak kalırken arayüz native yazılabilir.
Native uygulama iki kat mı pahalıya mal olur?
Her zaman iki kat değildir, çünkü tasarım, arka uç sunucusu ve API gibi işler iki platform için ortaktır. Ancak arayüz ve istemci tarafı mantık iki kez yazıldığı ve test edildiği için toplam iş yükü belirgin biçimde artar. Bu farkın büyüklüğü, uygulamanın ne kadarının istemci tarafında olduğuna bağlıdır.
Mobil oyun için Flutter ya da React Native kullanılır mı?
Basit bulmaca ya da kart oyunları bu çatılarla yapılabilir, ancak çoğu mobil oyun için Godot ya da Unity gibi oyun motorları daha uygun araçlar sunar. Fizik, animasyon, sahne yönetimi ve performans araçları oyun motorlarında hazır gelir.
Kaynaklar

AssistoTech Ekibi
İstanbul'da web, mobil, masaüstü, oyun, SaaS ve kurumsal yazılım geliştiren ekibiz. Bu yazı, kendi ürünlerimizde ve müşteri projelerinde edindiğimiz deneyime dayanır. Projeniz için bize yazın.




