Kotlin Multiplatform vs React Native Karşılaştırması

Yalnız iş mantığını paylaş, UI'ı native bırak

VS
React Native

Tek kod tabanından UI + iş mantığını birlikte üret

10 dk okumaCross-Platform

Hızlı Karar

Net kazanan yok, senaryo belirliyor. UI'ı native bırakıp yalnız ağ/veri/iş mantığını paylaşmak istiyorsan ve ekibin Kotlin/Android'e yakınsa KMP'yi seç: shared module'ü Android'e ekleyip iOS'a Xcode framework olarak bağlaman resmi tutorial'la tanımlı. Ekranları tek kod tabanından üretmek ve web ekibini mobile katmak istiyorsan React Native öne çıkıyor: 126.703 star'lık ekosistem ve resmi "Integration with Existing Apps" rehberi bunu destekler.

Kotlin MultiplatformReact Native
Tam sonucu oku

Puan Karşılaştırması

Grafik yükleniyor...

Detaylı Puanlama

Detaylı Puanlama: Kotlin Multiplatform ve React Native — kategori bazında 10 üzerinden puanlar
KategoriKotlin MultiplatformReact Native
Performans
8/10
7/10
Öğrenme Kolaylığı
6/10
7/10
Ekosistem
6/10
9/10
Topluluk
6/10
9/10
İş Pazarı
6/10
7/10
Gelecek
8/10
8/10

Artıları & Eksileri

Kotlin Multiplatform

Artıları

  • Kotlin/Android ekibi için sıfır yeni dil öğrenme maliyeti
  • UI native kalır — platform hissini ve erişilebilirliği otomatik korur
  • Shared module mevcut Gradle projesine az müdahaleyle eklenir
  • JetBrains'in resmi, uzun vadeli desteği (Kotlin 2.4.20, destek 2027'ye kadar)
  • expect/actual ile platforma özgü kodu tek yerden yönetme imkânı
  • İstenirse Compose Multiplatform ile opsiyonel tam UI paylaşımına genişletilebilir
  • Apache 2.0 lisanslı, tamamen açık kaynak ve ücretsiz

Eksileri

  • Multiplatform-native kütüphane ekosistemi RN'e göre küçük ve genç
  • iOS tarafında Swift/Xcode bilgisi gerektirir (ekip tamamen Android odaklıysa öğrenme eğrisi var)
  • Platforma özgü SDK erişimi için sık sık kendi köprünü yazman gerekir
  • GitHub yıldızı (53.451) RN'in yaklaşık %42'si, yani 2,4'te biri (Kotlin dilinin reposu; KMP'nin ayrı yıldız sayısı yok) — topluluk kaynağı daha sınırlı
  • Gradle multiplatform yapılandırması ilk kurulumda karmaşık gelebilir

En Uygun

Kotlin/Android ekibi olan, iOS'a network/data katmanını da paylaştırmak isteyen ekiplerUI'ın native kalmasının kritik olduğu platforma özgü, karmaşık ekranlarMevcut Gradle/Xcode pipeline'ına minimal müdahaleyle katman ekleme senaryosuUzun vadeli, JetBrains destekli bir çözüm arayan kurumsal ekipler

React Native

Artıları

  • Web/React bilgisi doğrudan transfer olur, ekip hızlı üretken olur
  • Devasa npm ekosistemi — çoğu native modül köprüsü zaten hazır geliyor
  • 126.703 GitHub star'lık büyük, aktif topluluk (JetBrains/kotlin'in ~2,4 katı)
  • Resmi 'Integration with Existing Apps' rehberiyle mevcut projeye net adımlarla eklenir
  • Yeni Mimari (Fabric/TurboModules) 2024'ten beri Meta'nın kendi production uygulamalarında kanıtlanmış
  • RN 0.87 ile Strict TypeScript API varsayılan — daha güvenli, tip-kontrollü kod
  • MIT lisanslı, tamamen açık kaynak ve ücretsiz

Eksileri

  • Native bileşenleri yine de bir JS runtime (JSI üzerinden) sürüyor — köprü 0.76'dan beri kaldırılmış olsa da ek bir runtime/JS thread maliyeti var; KMP'de UI zaten platformun kendi framework'üyle çizilir
  • RN 0.87 minimum toolchain'i (Node.js 22, AGP 9, Kotlin 2.0+) eski projelerde önce yükseltme gerektirir
  • Strict TS API'ye geçiş eski internal-path deep-import'ları kırabilir (breaking change)
  • Mevcut uygulamaya entegrasyon adımı KMP'den daha fazla (proje dizin yapısını yeniden düzenleme)
  • Platforma özgü, derin sistem entegrasyonu gerektiren ekranlar için native modül köprüsü yazmak gerekir

En Uygun

Web/JS ekibinin mobile'a genişlediği, ürün ekranlarını hızlı üretmek isteyen takımlarSık A/B test ve UI iterasyonu gerektiren, iki platforma aynı anda ekran güncellemesi isteyen ürünlerDevasa npm ekosisteminden hazır bileşen/kütüphane kullanmak isteyen projelerMeta ölçeğinde kanıtlanmış Yeni Mimari'yi (Fabric/TurboModules) güvenle benimseyen ekipler

Kod Karşılaştırması

Kotlin Multiplatform
// KMP shared module — mevcut Android/iOS uygulamasına ekleme
// shared/src/commonMain/kotlin/data/UserRepository.kt

package com.app.shared.data

import kotlinx.coroutines.flow.Flow
import kotlinx.serialization.Serializable

@Serializable
data class User(val id: String, val name: String, val avatarUrl: String)

// Not: kotlin.Result bir value class'tır ve Objective-C export'una çıkmaz;
// dönüş tipi doğrudan User, hata yolu throws/completion error olarak gider.
class UserRepository(private val api: UserApi) {
    suspend fun fetchUser(id: String): User = api.getUser(id)
}

// expect/actual: platforma özgü kısım (iOS Keychain / Android EncryptedSharedPreferences)
expect class SecureStorage {
    fun save(key: String, value: String)
    fun read(key: String): String?
}

// shared/build.gradle.kts (özet)
kotlin {
    androidTarget()
    listOf(iosX64(), iosArm64(), iosSimulatorArm64()).forEach {
        it.binaries.framework { baseName = "Shared" }
    }
    sourceSets {
        commonMain.dependencies {
            implementation("io.ktor:ktor-client-core:3.6.0")
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0")
        }
    }
}

// iOS tarafında Xcode framework olarak bağlama (Swift)
import Shared

let repo = UserRepository(api: UserApiImpl())
repo.fetchUser(id: "42") { user, error in
    if let user = user { print(user.name) }
}
React Native
// React Native — mevcut uygulamaya entegrasyon; index.js: ekranı kaydet

import { AppRegistry } from 'react-native';
import ProfileScreen from './src/ProfileScreen';

AppRegistry.registerComponent('ProfileScreen', () => ProfileScreen);

// src/ProfileScreen.tsx — Strict TypeScript API (RN 0.87 varsayılan)
import { View, Text } from 'react-native';

export default function ProfileScreen({ userId }: { userId: string }) {
  return (
    <View style={{ padding: 16 }}>
      <Text style={{ fontSize: 17 }}>Kullanıcı {userId}</Text>
    </View>
  );
}

// android/app/build.gradle — RN Gradle Plugin (özet)
apply plugin: "com.facebook.react"

react { autolinkLibrariesWithApp() }

// MyReactActivity.kt — resmi rehberdeki kalıp
import com.facebook.react.ReactActivity
import com.facebook.react.ReactActivityDelegate
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
import com.facebook.react.defaults.DefaultReactActivityDelegate

class MyReactActivity : ReactActivity() {
  override fun getMainComponentName(): String = "ProfileScreen"
  override fun createReactActivityDelegate(): ReactActivityDelegate =
    DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled)
}

// AndroidManifest.xml: <activity android:name=".MyReactActivity"
//   android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
// mevcut Activity'nden: startActivity(Intent(this, MyReactActivity::class.java))

Sonuç

Net kazanan yok, senaryo belirliyor. UI'ı native bırakıp yalnız ağ/veri/iş mantığını paylaşmak istiyorsan ve ekibin Kotlin/Android'e yakınsa KMP'yi seç: shared module'ü Android'e ekleyip iOS'a Xcode framework olarak bağlaman resmi tutorial'la tanımlı. Ekranları tek kod tabanından üretmek ve web ekibini mobile katmak istiyorsan React Native öne çıkıyor: 126.703 star'lık ekosistem ve resmi "Integration with Existing Apps" rehberi bunu destekler.

Ücretsiz Danışmanlık Al
SSS

Sıkça Sorulan Sorular

Kesin cevap yok, ekip becerisine bağlı: Kotlin/Android ekibiysen ve UI'ı native bırakmak istiyorsan KMP; web/React ekibiysen ve tek kod tabanından ekran üretmek istiyorsan React Native. İkisi de mevcut uygulamaya kademeli eklemeyi resmi olarak destekliyor.

Giriş

Mevcut bir iOS/Android uygulaman var ve "sıfırdan yeniden yazmadan" mobil geliştirmeyi hızlandırmak istiyorsun. İki büyük aday var: Kotlin Multiplatform (KMP) ve React Native. İkisi de artık "yeni uygulama" değil, "mevcut native uygulamaya kademeli ekleme" senaryosunda olgunlaştı — Kotlin 2.4.20 (7 Eylül 2026) ile KMP tooling'i, React Native 0.87 (11 Ağustos 2026) ile RN'in Strict TypeScript API'si ve deneysel SwiftPM desteği bunu kanıtlıyor. Ama ikisi temelde farklı felsefeler: KMP varsayılan olarak yalnız iş mantığını paylaşır, UI native kalır; React Native UI'ı da JavaScript/TypeScript katmanından üretir. Bu seçim ekip becerine, mevcut kod tabanına ve UI'ın ne kadar native hissetmesi gerektiğine bağlı. Bu karşılaştırma resmi KMP ve React Native dokümantasyonu, GitHub API verileri ve JetBrains/Meta'nın kendi vaka çalışmaları üzerinden hazırlandı.

Karşılaştırma Matrisi

Karşılaştırma Matrisi: Kotlin Multiplatform / React Native
ÖzellikKotlin MultiplatformReact Native
İlk yayın / ana repo oluşturulma2012 (Kotlin dili deposu); KMP Kasım 2023'te Stable ilan edildi2015-01-09 (react/react-native)
Güncel kararlı sürüm (23 Eyl 2026)Kotlin 2.4.20 (7 Eyl 2026)React Native 0.87 (11 Ağu 2026)
LisansApache 2.0MIT
GitHub star (Kotlin dili ana reposu vs RN reposu)53.451126.703 (Öne çıkan)
GitHub fork6.42125.283 (Öne çıkan)
Varsayılan paylaşılan katmanYalnız iş mantığı / network / dataUI + iş mantığı birlikte
UI native kalmaVarsayılan native, UI paylaşımı opsiyonel (Compose Multiplatform) (Öne çıkan)Varsayılan JS/TS'ten render
Mevcut projeye entegrasyon adımıShared module + Gradle bağımlılığı + Xcode framework (Öne çıkan)Dizin yeniden yapılandırma + Gradle + ReactActivity (6 adım)
Minimum toolchain (2026)Yayınlanmış asgari Kotlin/Gradle sürümü yok; IDE: IntelliJ IDEA 2025.2.2 / Android Studio Otter 2025.2.1Node.js 22, AGP 9, Kotlin 2.0+
Kütüphane/SDK ekosistemiKüçük, genç multiplatform-native havuzuDevasa npm ekosistemi (Öne çıkan)
Ekip uyumuKotlin/Android ekibiJS/React/web ekibi
Resmi vaka çalışmalarıDuolingo, Sony, Booking.com, McDonald'sMeta ürünleri, Microsoft, Amazon
Yeni mimari üretim-kanıtlılığıN/A (native UI zaten platform mimarisi)Fabric/TurboModules 2024'ten beri üretimde

Derinlemesine İnceleme

Kotlin Multiplatform

Genel Bakış

Kotlin Multiplatform (KMP), JetBrains'in Kotlin dili üzerine kurduğu, iş mantığını Android ve iOS arasında paylaşmayı hedefleyen bir teknolojidir. JetBrains KMP'yi Kasım 2023'te 'Stable ve production-ready' ilan etti; aşağıdaki 2012 yayın yılı Kotlin dilinin ana deposunun oluşturulma tarihidir (KMP'nin değil). Güncel kararlı sürüm Kotlin 2.4.20 (7 Eylül 2026). KMP'nin felsefesi farklı: varsayılan olarak yalnız network, veri modeli ve domain mantığını 'shared module' içinde paylaştırır, UI her platformda kendi native framework'üyle yazılmaya devam eder; UI'ı da paylaşmak isteyenler için Compose Multiplatform opsiyonel bir katman. Mevcut native uygulamaya eklenmesi resmi tutorial'la adım adım tanımlı. JetBrains'in vaka sayfası Duolingo, Sony, Booking.com ve McDonald's'ı belgeliyor; Booking.com'un kendi ifadesiyle KMP iOS'ta 'viable, long-term solution' olarak performans gösterdi.

Ekosistem

Paket yöneticisi
Gradle (Kotlin Multiplatform plugin)
Geliştirme ortamı
Android StudioIntelliJ IDEA
Popüler kütüphaneler
Ktor Clientkotlinx.coroutineskotlinx.serializationSQLDelightKoin
GitHub yıldızı
53,451

Üretimde Kullanım

  • Duolingo

    Duolingo mobile app

    JetBrains'in resmi KMP vaka listesinde yer alıyor (vaka videosu: youtu.be/RJtiFt5pbfs).

  • Sony

    Compose Multiplatform companion app

    JetBrains vaka sayfasına göre Sony, Compose Multiplatform ile bir companion uygulama geliştirdi.

  • Booking.com

    Booking.com iOS/Android app

    Şirketin kendi ifadesiyle KMP iOS'ta 'performed great, proving it's a viable, long-term solution'.

  • McDonald's / Umain

    McDonald's mobile app

    JetBrains'in resmi vaka sayfasında KMP kullanıcısı olarak listeleniyor.

React Native

Genel Bakış

React Native, Meta'nın (Facebook) React'i mobil platformlara taşıdığı, JavaScript/TypeScript'ten native UI üreten bir framework. Ana GitHub deposu 2015-01-09'da oluşturuldu (bugün react/react-native olarak taşındı) ve 126.703 star, 25.283 fork ile mobil cross-platform framework'ler arasında en büyük topluluklardan birine sahip. Güncel sürüm 0.87 (11 Ağustos 2026) Strict TypeScript API'yi varsayılan yaptı, deneysel Swift Package Manager desteği ekledi ve minimum toolchain'i Node.js 22, AGP 9, Kotlin 2.0+ seviyesine çekti. Yeni Mimari (Fabric/TurboModules) 2024'ten beri Meta'nın kendi production uygulamalarında (Facebook Marketplace, Messenger Desktop, Ads Manager) çalışıyor; Microsoft ve Amazon da RN kullanımlarını resmi showcase sayfasında belirtiyor. Mevcut native uygulamaya entegrasyon resmi 'Integration with Existing Apps' rehberiyle adım adım tanımlı.

Ekosistem

Paket yöneticisi
npm / Yarn
Geliştirme ortamı
VS CodeAndroid Studio (native taraf)Xcode (native taraf)
Popüler kütüphaneler
React NavigationReanimatedReact Native Gesture HandlerExpo modulesReact Native Paper
GitHub yıldızı
126,703

Üretimde Kullanım

  • Meta

    Facebook Marketplace, Messenger Desktop, Ads Manager, Meta Quest app

    Meta, resmi showcase sayfasında bu ürünlerin React Native ile geliştirildiğini belirtiyor; Yeni Mimari 2024'ten beri bu uygulamalarda üretimde.

  • Microsoft

    Office, Outlook, Teams, Xbox Game Pass mobile

    Microsoft bu mobil ürünlerde React Native kullanıyor; ayrıca ayrı bir React Native for Windows/macOS showcase'i mevcut.

  • Amazon

    Amazon mobile app özellikleri

    Amazon'un resmi showcase girdisine göre şirket 2016'dan beri hızlı özellik teslimatı için React Native kullanıyor.

Teknik Analiz

Paylaşılan Katman: Yalnız İş Mantığı mı, UI de mi?

KMP'nin varsayılan kullanım şekli "shared module" — network çağrıları, veri modelleri, domain mantığı Kotlin'de tek yerde yazılır; UI Android'de Jetpack Compose/View, iOS'ta SwiftUI/UIKit ile native kalır. UI paylaşımı istersen Compose Multiplatform ayrı, opsiyonel bir katman olarak eklenir — zorunlu değil. React Native'de bu ayrım yok: varsayılan model UI + mantığın birlikte JavaScript/TypeScript'te yazılmasıdır, native ekranlar istisnadır. Bu yüzden "UI'ı native bırak" isteği doğrudan KMP'ye, "tek kod tabanından ekran üret" isteği doğrudan RN'e işaret eder — ikisi de aynı sorunu farklı katmanda çözüyor.

Mevcut Uygulamaya Kademeli Entegrasyon

Her iki taraf da resmi, adım adım rehbere sahip. KMP'nin "Integrate KMP into an existing application" tutorial'ı: shared module oluştur → Gradle bağımlılığı olarak Android projesine ekle → Xcode'da framework olarak iOS projesine bağla. React Native'in "Integration with Existing Apps" rehberi (Android tarafı): proje dizin yapısını kur → mevcut Android projesini alt klasöre taşı → Community Template'in package.json'ını al, npm install çalıştır → React Native'i Gradle yapılandırmasına ekle → ReactActivity ile entegre et → bundler'ı test et. RN'in adımı daha fazla (6 adım, proje yapısını yeniden düzenleme gerektiriyor); KMP'nin shared-module yaklaşımı mevcut proje yapısına daha az müdahale eder çünkü yalnızca bir Gradle modülü ekler.

Ekip Becerisi: Kotlin/Android mı, JS/Web mi?

Bu kriter çoğu zaman kararı tek başına verdiriyor. Android ekibi zaten Kotlin, Gradle ve Android Studio'ya hâkimse KMP shared module'ü öğrenmek küçük bir adım — syntax aynı, yeni olan yalnızca multiplatform hedefleri (expect/actual) ve iOS framework export'u. Web/JS ekibi mobile'a genişleyecekse React Native çok daha kısa yoldan üretken hale gelir — React bilgisi doğrudan transfer olur, yalnız native modül köprüleri (Kotlin/Swift tarafı) öğrenilmesi gerekir. İki tarafın da "diğer platformun native dilini hiç bilmeyen ekip" senaryosunda öğrenme eğrisi var: KMP'de iOS tarafı Swift/Xcode bilgisi gerektirir, RN'de native modül yazımı Kotlin/Swift bilgisi gerektirir — hiçbiri "native dil bilgisi sıfır" vaadi vermiyor.

UI'ın Native Hissi

KMP'de varsayılan UI native bileşenlerle (SwiftUI/UIKit, Jetpack Compose/View) yazıldığı için platform-spesifik davranış, animasyon ve erişilebilirlik otomatik gelir — çünkü UI zaten platformun kendi framework'üyle üretilir. React Native'in Yeni Mimarisi (Fabric/TurboModules), Meta'nın kendi production uygulamalarında 2024'ten beri kanıtlanmış durumda ve senkron layout ölçümü gibi native'e yakın davranışlar sağlıyor; Yeni Mimari'nin dört parçasından biri zaten "Removing the Bridge" — köprü 0.76'dan (Ekim 2024) beri yok. Yine de UI'ı bir JS runtime sürüyor: bileşenler JSI üzerinden native tarafa render ediliyor, yani ek bir runtime/JS thread katmanı var; KMP'de UI doğrudan platformun kendi framework'üyle çizilir. Pratik sonuç: karmaşık, platforma özgü gesture'lar veya sistem bileşenleriyle derin entegrasyon (ör. iOS'a özgü context menu davranışları) gerektiren ekranlarda KMP'nin native UI'ı ek soyutlama katmanı gerektirmez; RN'de bu tür ekranlar native modül köprüsü ister.

Build/CI Karmaşıklığı ve Kütüphane Erişimi

React Native 0.87 minimum toolchain'i net: Node.js 22, AGP 9, Kotlin 2.0+ — bu, "mevcut uygulamaya ekleme" senaryosunda projenin zaten bu sürümlerde olmasını şart koşuyor, aksi halde önce toolchain yükseltmesi gerekir. KMP tarafında ek bir JS/Node katmanı yok; CI zaten var olan Gradle/Xcode pipeline'ına bir modül daha ekler. Kütüphane erişiminde tablo tersine dönüyor: RN'in npm ekosistemi devasa (yüz binlerce paket) ve çoğu native modül köprüsü zaten yazılmış durumda geliyor; KMP'de expect/actual ile platforma özgü SDK'lara erişim için genellikle kendi köprünü yazman gerekiyor çünkü multiplatform-native kütüphane havuzu daha küçük ve genç.

Ekosistem Büyüklüğü ve İşe Alım Havuzu

GitHub yıldızı kaba ama somut bir ekosistem proxy'si: react/react-native 126.703 star, 25.283 fork ile JetBrains/kotlin'in 53.451 star, 6.421 fork'unun yaklaşık 2,4 katı büyüklükte — bu, Kotlin dilinin genel popülerliğini yansıtır, KMP'ye özel ayrı bir repo yıldız sayısı yayınlanmıyor. İşe alım tarafında elimizde kaynaklı bir iş ilanı sayımı yok: RN 2015'ten beri (react/react-native created_at) mainstream olduğu için havuzun daha geniş olmasını beklemek makul, ama bu bir beklenti — ölçüm değil; bu yüzden iki tarafın jobMarket puanını da nötr bantta tuttuk. Ancak Kotlin/Android becerisi zaten TR pazarında yaygın olduğundan, "KMP bilen Android geliştirici yetiştirmek" RN'den daha kısa bir öğrenme yatırımı olabilir — bu nüans ham yıldız sayısında görünmüyor.

Hangi Senaryoda Hangisi

Android/Kotlin ekibi, iOS'a network+data katmanını da paylaştırmak istiyor

Öneri: KMP

Shared module doğrudan Kotlin syntax'ıyla yazılır, ekip yeni dil öğrenmez; UI native kalır, platform hissini korur.

Web/React ekibi mobile'a genişliyor, yeni ekranları hızlı üretmek istiyor

Öneri: React Native

React bilgisi doğrudan transfer olur, npm ekosistemi hazır bileşenlerle üretkenliği artırır.

Mevcut uygulama çok sayıda platforma özgü gesture/sistem bileşeni kullanıyor

Öneri: KMP

UI native olduğundan bu bileşenler ek köprü gerektirmeden çalışır.

Ürün ekibi çok sık A/B test ve hızlı UI iterasyonu istiyor

Öneri: React Native

Tek kod tabanından iki platforma aynı anda ekran değişikliği yapmak RN'de daha hızlı.

Toolchain eski (Node <22 veya AGP <9) ve hızlı entegrasyon gerekiyor

Öneri: KMP

RN 0.87 minimum toolchain şartlarını karşılamak önce bir yükseltme projesi gerektirir; KMP mevcut Gradle/Xcode pipeline'ına daha az müdahale eder.

Ekip hem Kotlin hem JS'e yabancı, sıfırdan öğrenecek

Öneri: React Native

JS/TS öğrenme kaynakları ve topluluk desteği (126.703 star ekosistemi) daha geniş, öğrenme materyali daha bol.

Yalnız birkaç ekranı paylaşmak, geri kalanını tamamen native bırakmak isteniyor

Öneri: KMP + native UI

Shared module yaklaşımı zaten bu senaryo için tasarlandı; RN'de aynı hedefe native modül köprüleriyle daha dolaylı ulaşılır.

Yaygın Tuzaklar

  • RN 0.87'ye geçişte react-native/Libraries/* gibi internal path'lerden deep-import yapan eski kodun aniden tip hatası vermesi

    React Native

    Çözüm

    Strict TypeScript API'ye geçmeden önce projede internal path import'larını tara ve resmi public API karşılıklarıyla değiştir.

  • RN 0.87 toolchain minimumlarını (Node.js 22, AGP 9, Kotlin 2.0+) atlayıp entegrasyona başlamak

    React Native

    Çözüm

    Entegrasyon öncesi CI ve lokal ortamı toolchain minimumlarına yükselt, aksi halde build hatası alırsın.

  • KMP'de shared module'ü eklerken UI paylaşımını da otomatik varsaymak

    Kotlin Multiplatform

    Çözüm

    UI paylaşımı (Compose Multiplatform) ayrı bir karar — varsayılan yol yalnız iş mantığı paylaşımıdır, bunu netleştirmeden başlama.

  • KMP'de platforma özgü SDK'ya (ör. kamera, bildirim) erişim için hazır kütüphane bulunamaması

    Kotlin Multiplatform

    Çözüm

    expect/actual ile kendi köprünü erken prototiple, bunu sprint planına dahil et — RN'deki gibi hazır paket bulma garantisi yok.

  • İki ekibin de 'diğer platformun native dilini hiç bilmemize gerek yok' varsayımıyla başlaması

    Her ikisi

    Çözüm

    KMP'de iOS tarafı Swift/Xcode bilgisi, RN'de native modül yazımı Kotlin/Swift bilgisi gerektirir — bu gerçeği plana baştan yaz.

Geçiş Kılavuzu

Mevcut Native Uygulama → KMP veya React Native Kademeli Entegrasyon

Tahmini süre: Pilot entegrasyon (1-2 ekran): 2-4 hafta. Orta ölçek (5-10 ekran/katman): 2-4 ay. Toolchain yükseltmesi gerekiyorsa (RN 0.87 minimumları) +1-2 hafta ekle.
  1. 11. Paylaşılacak katmanı netleştir: yalnız network/data mı (KMP), tam ekranlar mı (RN)?
  2. 22. Ekip becerisini ve mevcut toolchain sürümlerini envanterle (Kotlin/Gradle vs Node/npm)
  3. 33. KMP için: shared module oluştur, expect/actual ile platforma özgü kodu ayır
  4. 44. RN için: proje dizin yapısını kur, Community Template package.json'ını al, npm install çalıştır
  5. 55. KMP için: Android'e Gradle bağımlılığı, iOS'a Xcode framework olarak bağla
  6. 66. RN için: Gradle yapılandırmasına ekle, Android'de ReactActivity, iOS'ta RCTRootView/RCTReactNativeFactory ile native tarafa bağla
  7. 77. Pilot ekran/özellik ile 2-4 hafta prova yap, build süresi ve bundle etkisini ölç
  8. 88. Sonuçlara göre tam geçişe devam et ya da native'de kal kararını ekiple netleştir

Gelecek Öngörüsü

Kotlin Multiplatform

Kotlin 2.4.20 (7 Eylül 2026) ve destek penceresi 3 Aralık 2027'ye kadar uzanan 2.4.0 dil sürümü, JetBrains'in KMP'ye uzun vadeli yatırımını gösteriyor. Swift export/interop iyileştirmeleri 2.4.0 ile geldi; JetBrains'in resmi vaka sayfası Duolingo, Sony, Booking.com ve McDonald's gibi şirketlerin KMP'yi production'da kullandığını belgeliyor. Trend: JetBrains, Kotlin'i Android'in resmi dili konumundan mobile-multiplatform'a doğru genişletmeye devam ediyor.

React Native

React Native 0.87 (11 Ağustos 2026) Strict TypeScript API'yi varsayılan yaptı ve deneysel SwiftPM desteğiyle native paket yönetimine yaklaştı; önceki 0.86 (edge-to-edge + DevTools) ve 0.85 (yeni animasyon backend'i) sürümleriyle birlikte Yeni Mimari (Fabric/TurboModules) 2024'ten beri Meta'nın kendi production uygulamalarında çalışıyor. Trend: Meta, RN'i native toolchain'lere (SwiftPM, AGP 9) daha sıkı entegre etmeye devam ediyor.

Altın Bilgi

En değerli çıkarım şu: "KMP mi RN mi" sorusunun cevabı "UI'ı nerede paylaşacağım"dan değil, "ekibim hangi dile zaten hâkim"den çıkar. Kotlin/Android arka planı güçlü bir ekip shared module'ü kısa sürede mevcut projeye bağlar, çünkü Gradle ve Kotlin syntax'ına zaten aşina; aynı ekip React Native'de npm ekosistemi ve JS tooling'i öğrenmekle zaman kaybeder. Tersi de doğru: web/JS ekibi RN'de hızla üretken olurken KMP'nin Gradle multiplatform yapılandırması ve Swift interop'unda takılır. İkinci kritik nokta: KMP'nin "UI native kalsın" varsayımı bir kısıtlama değil, bilinçli tasarım kararı — Compose Multiplatform ile bunu değiştirebilirsin ama varsayılan yol iş mantığı paylaşımıdır.

İlgili Blog Yazıları

Tüm Yazıları Gör

İlgili İçerik