React Native Uygulama Maliyeti: Nerede Tasarruf Edersiniz, Nerede Etmezsiniz?
Tek kod tabanıyla iOS ve Android geliştirmenin bütçeye gerçek etkisini, native kodun hâlâ gerektiği durumları ve bakım tarafını projelerimden örneklerle anlattım.
React Native nedir, maliyeti neden etkiler?
React Native uygulama maliyeti konusunu konuşmadan önce ne olduğunu kısaca anlatayım. React Native, Meta'nın geliştirdiği açık kaynak bir çatı. Uygulamanın arayüzünü ve iş mantığını JavaScript ya da TypeScript ile bir kez yazıyorsunuz, aynı kod iOS ve Android'de gerçek native bileşenlerle çalışıyor. Yani kullanıcı ekranda bir web sayfası değil, telefonun kendi düğmelerini ve listelerini görüyor.
Maliyete etkisi buradan geliyor. Klasik yolda iOS için Swift, Android için Kotlin ile iki ayrı uygulama yazılır. İki kod tabanı, çoğu zaman iki ayrı geliştirici, iki kez yazılan aynı iş mantığı ve iki kez düzeltilen aynı hata demek. React Native'de bu işin büyük kısmı bir kez yapılıyor. Wingardium tarım uygulamasını ve Tüfekli Arıcılık'ın mobil uygulamasını React Native ile geliştirdim; iki projede de iOS ve Android aynı kod tabanından çıktı.
Nerede tasarruf sağlar?
- Arayüz ve ekranlar: Ekranların büyük çoğunluğu iki platformda aynı kodla çalışır. Platforma göre küçük farklar, aynı dosya içinde birkaç satırla çözülür.
- İş mantığı: Sepet hesabı, form doğrulama, kullanıcı oturumu, API çağrıları tek yerde yazılır. Bir kural değiştiğinde tek yerde değişir.
- Hata düzeltme: Ortak koddaki bir hata bir kez düzeltilir ve iki platformda birden çözülür.
- Web ile paylaşım: Yönetim paneli ya da web sitesi React veya Next.js ile yazılıyorsa, veri modelleri, doğrulama kuralları ve API katmanı gibi parçalar ortak kullanılabilir. Projelerimde backend tarafında Node.js ve Express kullandığım için uçtan uca tek dil ile çalışabiliyorum.
- Ekip yapısı: Tek bir ekip ya da tek bir geliştirici iki platformu birlikte yürütebilir. Bu, toplantı ve koordinasyon yükünü de azaltır.
Tasarruf sıfır maliyet anlamına gelmiyor. Test iki platformda ayrı ayrı yapılır, mağaza yayını iki kez hazırlanır, iki platformun tasarım alışkanlıkları farklı olduğu için bazı ekranlarda ince ayar gerekir. Yine de toplam iş, iki ayrı uygulama yazmaya göre belirgin biçimde daha az olur.
Native kod hâlâ ne zaman gerekir?
React Native her şeyi tek kodla çözmez. Bazı durumlarda platforma özel native modül yazmak ya da hazır bir modülü uyarlamak gerekir. Teklif aşamasında bunları ayrıca konuşuyorum, çünkü maliyeti en çok bu kalemler oynatır:
- Bluetooth ve harici donanım: Bir cihazla eşleşip veri okumak, yazıcıya çıktı göndermek, özel bir okuyucuyla çalışmak.
- Arka planda uzun süre çalışan işler: Sürekli konum takibi, arka planda veri yükleme, sesli içerik oynatma.
- Platforma özgü özellikler: iOS widget'ları, Apple Watch veya Android Wear uygulamaları, Siri kısayolları gibi sistemle derin entegrasyon.
- Yoğun grafik ve görüntü işleme: Gerçek zamanlı kamera filtreleri, artırılmış gerçeklik, ağır animasyonlu oyunlar.
- Hazır modülü olmayan bir SDK: Bazı ödeme, kimlik doğrulama ya da kurumsal SDK'ların yalnızca native sürümü olabilir, bunlar için köprü yazılır.
Bu tür ihtiyaçlar uygulamanın çoğunlukla küçük bir parçasıdır. Kalan büyük kısım ortak kodla yazıldığı için toplam bütçe yine de iki ayrı native uygulamadan düşük kalır. Uygulamanın neredeyse tamamı bu tür işlerden oluşuyorsa ise doğrudan native geliştirmek daha mantıklı olabilir.
Expo: kurulumu ve yayını kısaltan araç seti
Expo, React Native üzerine kurulmuş bir araç seti ve hizmetler bütünü. React Native ekibinin kendisi de yeni projelere Expo gibi bir çatıyla başlamayı öneriyor. Maliyet açısından şu noktalarda fark yaratıyor:
- Kamera, bildirim, konum, dosya sistemi gibi sık kullanılan özellikler için bakımı yapılan hazır modüller.
- Bulutta derleme (EAS Build): iOS sürümünü derlemek için her aşamada özel bir Mac kurulumuna bağımlı kalmazsınız.
- Uygulama içi güncellemeler: Yalnızca JavaScript tarafındaki küçük düzeltmeleri mağaza sürümü beklemeden kullanıcılara gönderebilirsiniz. Native kodu değiştiren güncellemeler ve mağaza kurallarına giren değişiklikler yine mağazadan geçmek zorunda.
- Kendi native kodunuzu ekleyebilme: Expo'da özel native modül yazmak mümkün, bu yüzden ileride bir donanım entegrasyonu gerektiğinde projeyi baştan yazmanız gerekmez.
Performans hakkında efsaneler ve gerçekler
| Sık duyulan iddia | Gerçekte durum |
|---|---|
| React Native uygulamalar yavaştır. | Liste, form, harita, ödeme gibi tipik iş uygulamalarında kullanıcı farkı hissetmez. Yavaşlık genellikle gereksiz yeniden çizim, büyük görseller ya da kötü kurgulanmış veri akışından kaynaklanır ve bu sorunlar native uygulamada da yaşanır. |
| Web sitesini uygulama kılığına sokuyor. | Hayır. Ekrandaki bileşenler iOS ve Android'in kendi native bileşenleridir. Tarayıcı içinde çalışan hibrit çözümlerle karıştırılıyor. |
| Büyük uygulamalar React Native ile yapılmaz. | Meta'nın kendi uygulamalarında ve pek çok bilinen uygulamada React Native ekranları kullanılıyor. Yeni mimari (Fabric, JSI) ve Hermes motoru ile JavaScript ve native taraf arasındaki iletişim eskiye göre daha doğrudan. |
| Native her zaman daha hızlıdır. | Yoğun grafik, oyun ve ağır görüntü işlemede native avantajlıdır. İş uygulamalarının büyük çoğunluğunda fark ölçülebilir olsa bile kullanıcı deneyimine yansımaz. |
Native, React Native ve Flutter karşılaştırması
Flutter, Google'ın geliştirdiği ve Dart dilini kullanan diğer güçlü çapraz platform seçeneği. Aşağıdaki tablo bir kazanan ilan etmek için değil, hangi durumda hangisinin öne çıktığını göstermek için:
| Kriter | Native (Swift ve Kotlin) | React Native | Flutter |
|---|---|---|---|
| Kod tabanı | Platform başına bir tane | iOS ve Android için tek | iOS ve Android için tek |
| Dil | Swift, Kotlin | JavaScript, TypeScript | Dart |
| Arayüz | Platformun kendi bileşenleri | Platformun native bileşenleri | Kendi çizim motoruyla çizilen bileşenler |
| Web ile kod paylaşımı | Yok denecek kadar az | React ve Next.js ile yüksek | Flutter web var ama web ekosistemiyle ortaklık sınırlı |
| Donanım ve sistem erişimi | En doğrudan | Modüllerle, gerekirse native kodla | Eklentilerle, gerekirse native kodla |
| Geliştirici bulma | İki ayrı uzmanlık gerekir | JavaScript bilen geniş bir havuz | Büyüyen ama daha dar bir havuz |
| Uygun olduğu proje | Ağır grafik, oyun, derin sistem entegrasyonu | Web ve mobili birlikte yürüten iş uygulamaları | Görsel olarak çok özelleştirilmiş arayüzler |
Ben React Native'i tercih ediyorum çünkü web tarafında da React ve Next.js ile çalışıyorum ve projelerimde web sitesi, yönetim paneli ve mobil uygulama çoğu zaman birlikte ilerliyor. Tek dil ve ortak parçalar bu senaryoda bütçeyi doğrudan düşürüyor. Flutter ile iyi çalışan bir ekibiniz varsa o da sağlam bir seçim.
Bakım tarafında ne beklemeli?
Mobil uygulamada bakım bütçesini yılda geliştirme bedelinin %15 – %20 kadarı olarak planlamanızı öneririm. React Native projelerinde bu bütçenin önemli kısmı üç işe gider: Apple ve Google'ın yeni işletim sistemi sürümlerine uyum, React Native ve kütüphane sürümlerinin yükseltilmesi, mağazaların yeni şartlarının karşılanması.
Sürüm yükseltmelerini birkaç yıl erteleyen projelerde iş birikir ve tek seferde büyük bir güncelleme gerekir. Düzenli, küçük adımlarla ilerlemek hem daha ucuz hem daha az riskli. İki ayrı native uygulamada bu işin iki kez yapıldığını düşünürseniz, tek kod tabanının bakım tarafındaki avantajı da yıldan yıla birikir.
Bakımda bir de ekip sürekliliği konusu var. JavaScript ve React bilen geliştirici havuzu geniş olduğu için, ileride projeyi başka biri devralmak zorunda kalsa bile uygun kişiyi bulmak daha kolaydır. Bu, özellikle tek geliştiriciyle çalışan Adana'daki küçük ve orta ölçekli işletmeler için göz ardı edilmemesi gereken bir güvence.
Adana'da ya da başka bir şehirde, React Native ile bir uygulama planlıyorsanız ücretsiz keşif görüşmesinde hangi kısımların ortak kodla, hangilerinin native modülle çözüleceğini birlikte çıkarabiliriz. Fiyatlar başlangıç aralığıdır ve kapsama göre kesinleşir.
Aklınızdaki sorular
React Native ile uygulama yaptırmak kaç TL?
2026 için iOS ve Android'i birlikte kapsayan bir MVP 150.000 – 350.000 TL, hesap, ödeme ve yönetim paneli içeren orta ölçekli bir uygulama 350.000 – 900.000 TL aralığından başlar (KDV hariç).
React Native iki ayrı native uygulamaya göre ne kadar ucuz?
Kesin bir oran vermek doğru olmaz, çünkü uygulamanın ne kadarının ortak kodla yazılabildiğine bağlı. Tipik iş uygulamalarında kodun büyük kısmı ortak olduğu için hem geliştirme hem bakım tarafında belirgin bir tasarruf oluşur.
React Native uygulama App Store ve Google Play'e yüklenebilir mi?
Evet. React Native ile geliştirilen uygulamalar diğer native uygulamalar gibi derlenir ve iki mağazanın da normal inceleme sürecinden geçer.
React Native ile uygulama ne kadar sürede yapılır?
Kapsamı net bir MVP genellikle haftalar içinde test edilebilir hale gelir. Native modül gerektiren donanım entegrasyonları, ödeme ve gerçek zamanlı özellikler süreyi uzatır. Mağaza inceleme süresi de takvime eklenmelidir.
Mevcut native uygulamamı React Native'e geçirmek mantıklı mı?
Uygulama sık güncelleniyorsa ve iki platformu ayrı ayrı yürütmek pahalıya geliyorsa değerlendirmeye değer. Tümünü baştan yazmak yerine yeni ekranları React Native ile ekleyip kademeli geçiş yapmak da mümkün.
React Native mi Flutter mı daha iyi?
İkisi de olgun seçenekler. Web sitesi ve yönetim paneli de React ile yazılacaksa React Native ortak kod ve tek dil avantajı sağlar. Görsel olarak çok özel bir arayüz ve Dart bilen bir ekip varsa Flutter öne çıkabilir.