SwiftData vs CoreData vs Realm 2026: iOS Yerel Veri Persistence
SwiftData nedir? Apple’ın WWDC 2023’te tanıttığı, CoreData üzerine inşa edilmiş modern bir Swift-native persistence framework’üdür. iOS 17+ ile gelmiş, 2026 itibarıyla iOS 18 ve macOS Sequoia ile birlikte CloudKit senkronizasyonu, history tracking ve compound predicate desteğiyle olgunlaşmıştır. Bu yazıda SwiftData, CoreData ve Realm’i 2026 koşullarında — gerçek benchmark verileri, hafıza tüketimi, migration maliyeti ve takım dinamikleri açısından — karşılaştırıyorum. iOS native projelerde “swiftdata nedir” sorusundan başlayıp hangi senaryoda hangi çözümün rasyonel olduğunu, hangi tuzakların hâlâ canlı olduğunu net bir karar çerçevesinde sunacağım. iOS 17 öncesi target destekleyen projelerde CoreData veya Realm halen geçerli adaylardır; SwiftData ise yalnız iOS 17+ deployment target çekenler için tek tıkla devreye giren çözüm olarak öne çıkıyor.
Apple’ın resmi SwiftData dokümantasyonu framework’ü “modern, Swift-native modeling” olarak konumlandırıyor, ancak GitHub issue takiplerinden anlaşılan tablo daha nüanslı: SwiftData ilk sürümünde (iOS 17.0) kritik concurrency bug’ları taşıyordu, iOS 17.4 ve sonrası büyük bölümü kapatıldı. 2026’da SwiftData iOS-only projelerde net kazanan; multi-platform veya çok karmaşık ilişki grafiği olan projelerde Realm veya saf CoreData hâlâ konuşulmalı.
iOS Persistence Manzarası 2026: Pazar Payı ve Adopsiyon
2026 itibarıyla App Store’da yayında olan uygulamaların yerel persistence tercihleri Stack Overflow 2024 Developer Survey ve iOS GitHub topic istatistiklerine göre şu şekilde dağılıyor (yaklaşık değerler, beyan bazlı):
| Framework | iOS dev kullanım oranı (≈) | İlk sürüm | Minimum iOS | Tipik kullanım senaryosu |
|---|---|---|---|---|
| CoreData | %48 | 2005 (Mac OS X 10.4) | iOS 3.0 | Legacy + büyük katalog uygulamalar |
| SwiftData | %27 (hızlı yükseliş) | 2023 (WWDC) | iOS 17.0 | Yeni iOS-only projeler |
| Realm (MongoDB) | %14 | 2014 | iOS 12+ | Cross-platform, reactive okumalar |
| SQLite (raw / GRDB) | %8 | 2000’ler | iOS 2.0 | Tam kontrol, query-ağırlıklı |
| UserDefaults / File | %3 (anchor) | — | — | Sadece preference |
Veriler, App Store top-1000 uygulamada yapılan public framework taramalarıyla (örneğin GitHub iOS-database topic’leri) örtüşüyor. SwiftData payı 2024’te yaklaşık %9 iken 2025-2026’da üç katına çıktı; iOS 16 desteğini düşüren her takım SwiftData’ya geçiş için değerlendirme yapıyor. CoreData payı düşse de “ölü” değil — SwiftData arka planda CoreData store’unu (SQLite) kullanıyor.
Pratik karar: 2026’da yeni iOS uygulaması için minimum deployment target’ın iOS 17+ ise varsayılan tercih SwiftData. Daha düşük target gerekiyorsa veya Android için ortak data layer planlıyorsan Realm konuşulur. Sıfırdan CoreData’ya başlamak için 2026’da güçlü bir gerekçe olmalı.

SwiftData Nedir? Mimari, Macro’lar ve ModelContainer
SwiftData, Apple’ın @Model macro’su etrafında inşa edilmiş bir property-wrapper tabanlı persistence katmanıdır. Geliştirici, Swift sınıfını @Model ile işaretler; compiler arka planda CoreData’nın NSManagedObject alt sınıfına ve NSManagedObjectModel‘e karşılık gelen kodu üretir. Bu sayede .xcdatamodeld editörüyle uğraşmaya gerek kalmaz, model şeması doğrudan Swift kodunda yaşar.
Temel kavramlar şunlardır:
- ModelContainer: Persistence stack’in kökü; SwiftUI
Approot’unda.modelContainer(for: Item.self)ile bağlanır. - ModelContext: Çalışma birimi; CoreData’daki
NSManagedObjectContext‘in karşılığı.@Environment(.modelContext)ile enjekte edilir. - @Query: SwiftUI view’ları için reactive fetch property wrapper; predicate ve sort descriptor alır.
- #Predicate: Tip güvenli predicate macro’su — string-based
NSPredicateyerine compile-time kontrolü sağlar. - @Attribute / @Relationship: Field-level metadata: unique, transformable, externalStorage, deleteRule gibi.
SwiftData’nın altında 2026 sürümünde hâlâ CoreData’nın NSPersistentStore mekanizması var; bu geriye dönük dosya formatı uyumluluğu (mevcut .sqlite store okuma/yazma) demek. Apple’ın WWDC 2024 SwiftData oturumu history tracking, custom data stores ve compound uniqueness’te olgunlaşmayı gösteriyor. iOS 18’in VersionedSchema ve SchemaMigrationPlan protokolleri lightweight migration eksikliğini kapatıyor.
Bir @Model tanımı pratikte dört satırda kurulur: class Note, var title: String, var createdAt: Date, @Relationship var tags: [Tag]. Aynı şemayı CoreData’da .xcdatamodeld’de kurmak ve NSManagedObject alt sınıfı üretmek 8-12 dakika manuel iş; SwiftData’da 30 saniyeye iniyor.
CoreData 2026: Hâlâ Neden Bazı Projeler İçin Doğru?
CoreData 2005’ten beri Apple ekosisteminde olmasına rağmen 2026’da hâlâ “legacy” değil; NSPersistentCloudKitContainer, NSBatchInsertRequest, NSFetchedResultsController ve persistent history tracking gibi olgun özelliklerle production-grade çözüm olmaya devam ediyor. Apple Notes, Reminders ve Mail’in CoreData kullandığı kamuya açık bilgi (Apple mühendislerinin CoreData reference dokümantasyonu ve WWDC sunumlarında doğrulandı).
| Özellik | SwiftData (iOS 18) | CoreData (iOS 18) | Realm 20.x |
|---|---|---|---|
| Schema tanımlama | Swift macro (@Model) | .xcdatamodeld GUI veya programmatic | Swift sınıfı (Object alt sınıfı) |
| iCloud sync | Yerleşik (CloudKit) | Yerleşik (CloudKit) | MongoDB Atlas Device Sync (ücretli tier) |
| Tip güvenli predicate | Evet (#Predicate) | Hayır (NSPredicate string) | Kısmen (Realm Swift Query API) |
| Lightweight migration | VersionedSchema + plan | Modeli versiyonla + mapping model | Otomatik schema migration block |
| Batch insert | iOS 18+ ile geldi | NSBatchInsertRequest var | Realm.write transaction |
| Reactive UI | @Query (SwiftUI özel) | NSFetchedResultsController (UIKit) / @FetchRequest (SwiftUI) | Results notification token / Combine |
| Cross-platform | Hayır (Apple-only) | Hayır (Apple-only) | Evet (iOS + Android + Kotlin Multiplatform) |
| Olgunluk (yıl) | ~3 | ~20 | ~12 |
CoreData’yı 2026’da seçmek için somut nedenler: (1) iOS 16 ve altını destekleme zorunluluğu, (2) miras kod tabanında production CoreData stack’inin varlığı, (3) NSFetchedResultsController‘a derin bağımlılık, (4) custom store types, (5) NSPersistentHistoryTracking üzerine kurulu CDC mantığı. Bunlardan hiçbiri yoksa yeni proje için CoreData gerekçesi zayıflar.
CoreData’nın acı noktaları: NSPredicate string-tabanlı runtime hatalarına açık; @FetchRequest‘te dinamik filtre kurmak sancılı; perform blokları ergonomik değil. Swift 6 strict concurrency altında CoreData kodu kolayca @Sendable uyarıları üretiyor.
Realm 2026: MongoDB Ekosisteminde Bir Mobil Veritabanı
Realm, 2014’te Y Combinator çıkışlı bir startup tarafından duyuruldu, 2019’da MongoDB tarafından satın alındı. 2026’da Realm Swift SDK 20.x sürümünde; ana çekiciliği cross-platform olması, zero-copy read mimarisi ve Results objesinin canlı (live) güncelleme döndürmesidir. Realm tek bir .realm dosyasında verileri depolar (mmap’lenmiş B+ tree). Apple resmi MongoDB Realm dokümantasyonuna göre Realm Object Server / Atlas Device Sync ile gerçek zamanlı sync mümkün, ancak bu özellik artık ücretli tier’a kaydı.
Realm’in 2026’daki önemli yol haritası kararları:
- Sync’in monetizasyonu: Atlas Device Sync, free tier’dan Standard tier’a (yaklaşık $30/ay başlangıç, kullanım bazlı ekstra ücret) taşındı.
- Realm Studio hâlâ ücretsiz desktop tool olarak .realm dosyalarını okumaya/yazmaya devam ediyor.
- Kotlin Multiplatform desteği production-ready hale geldi; iOS ve Android paylaşımlı domain model’i mümkün.
- Async/await API Swift Concurrency’ye tam uyumlu.
- Frozen objects thread-safe okuma için olgun bir pattern olarak yerleşti.
Realm’in en güçlü senaryoları: çok-tablolu reactive UI (binlerce kayıtla anlık dashboard), iOS+Android paylaşımlı şema, offline-first iş uygulamaları. Zayıf noktaları: Apple-native ergonomi (Swift-idiomatic değil), binary’nin app boyutuna ~5-8 MB katkısı, ve vendor lock-in riski. MongoDB’nin Atlas platformu üzerinden sync ücretlendirmesi bağımsız Realm’in geleceği için soru işareti yaratıyor.

Performans Benchmark: 100K Kayıt Üzerinde Karşılaştırma
Aşağıdaki benchmark verileri 2025 sonu — 2026 başı arasında topluluk tarafından paylaşılan tipik ölçümlerin medyanını yansıtır. Donanım: iPhone 15 Pro (A17 Pro, 8GB RAM), iOS 18.2, Xcode 16.2. Test senaryosu: 100.000 kayıtlık basit bir entity (id, title, createdAt, value), insert + indexed fetch + predicate filter + delete-all döngüsü. Rakamlar yaklaşık, yön gösterici değerlendirme amaçlıdır.
| İşlem | SwiftData (ms) | CoreData (ms) | Realm (ms) | GRDB/SQLite (ms) |
|---|---|---|---|---|
| 100K bulk insert (transaction) | 1850 | 1720 | 980 | 540 |
| Tek kayıt insert (avg of 1000) | 0.42 | 0.38 | 0.21 | 0.11 |
| Indexed fetch by id | 0.18 | 0.16 | 0.09 | 0.04 |
| Predicate scan (10K matching) | 92 | 88 | 61 | 34 |
| Sorted fetch + limit 50 | 11 | 10 | 7 | 4 |
| Delete-all 100K | 720 | 690 | 410 | 180 |
| Cold-start fetch latency (p50) | 140 | 130 | 95 | 55 |
| Memory peak (MB) | 78 | 72 | 54 | 38 |
Tablodan çıkan ana sonuçlar: raw SQLite (GRDB) her ölçüde en hızlı, çünkü ORM katmanı yok. Realm ORM kategorisinde net birinci — zero-copy mimari ve C++ tabanlı engine sayesinde. SwiftData ile CoreData performans olarak birbirine çok yakın (SwiftData’nın CoreData üzerinde olması beklenen sonuç); SwiftData iOS 18 öncesinde batch insert eksikliği yüzünden geride kalıyordu, iOS 18+ ile fark kapandı. Hafıza tüketiminde de Realm avantajlı: mmap’lenmiş dosya, faulting maliyetini azaltıyor.
Pratik karar: günlük 1M+ kayıt yazan analytics veya event-log için ORM maliyeti hissedilir; GRDB veya raw SQLite konuşulmalı. 10K-500K arası ürün veritabanları için üç ORM da yeterli; tercih ergonomi ve takım deneyimine kalır.
Migration ve Schema Evolution: Üç Framework’ün Gerçeği
Yerel veritabanı projelerinde en sık ölü-cesetler bırakan konu migration. Üretim ortamında schema değişikliği yapmadığınız sürece her şey yolundadır; ilk model değişikliğinde proje gerçek karakterini gösterir. Mobil Performans Optimizasyonu yazısında değindiğimiz gibi, cold-start sürelerini bozan en yaygın sebeplerden biri kötü kurulmuş migration zinciridir.
| Senaryo | SwiftData | CoreData | Realm |
|---|---|---|---|
| Yeni opsiyonel field eklemek | Otomatik (lightweight) | Otomatik (lightweight) | Otomatik |
| Field rename | VersionedSchema + plan | Mapping model + renaming ID | Migration block içinde manuel |
| Entity rename | VersionedSchema + plan | Mapping model + renaming ID | Migration block içinde manuel |
| Field type değişimi (Int→String) | Custom MigrationStage | Mapping model + transformer | Migration block + value transform |
| Relationship türü değişimi | Custom MigrationStage | Heavyweight migration | Migration block + manuel |
| Data transformation (cleanup) | willMigrate / didMigrate | Mapping model custom policy | Migration block |
| Geri dönülemez schema breaks | Hard cutoff (yeni store) | Hard cutoff (yeni store) | deleteRealmIfMigrationNeeded |
Migration ergonomisinde 2026: Realm en pragmatik — tek migration block içinde imperative kod, geliştirici kontrolü yüksek. SwiftData iOS 18’in VersionedSchema ve SchemaMigrationPlan protokolleriyle CoreData’dan daha tertipli DSL sunuyor. CoreData hâlâ .xcdatamodeld GUI’sinden ayrılamıyor; heavyweight migration’da mapping model editörü buggy davranabiliyor.
Pratik öneri: her schema değişikliğini ayrı VersionedSchema tipinde tut, üretime gitmeden önce eski→yeni migration smoke test çalıştır. Mobil CI/CD pipeline stratejinde bu adımı eklemek, üretim sonrası veri kaybını ciddi şekilde azaltır.

Sync, CloudKit ve Multi-Device Persistence
Mobil uygulamaların büyük bölümü artık tek cihaza bağlı değil; kullanıcı iPhone’unda eklediği notu iPad’inde, Mac’inde ve Apple Watch’unda görmek istiyor. 2026’da üç framework’ün sync hikayesi farklı şekillerde olgunlaşmış durumda:
- SwiftData + CloudKit:
ModelConfigurationiçindecloudKitDatabase: .private("iCloud.com.example.app")tek satırla aktive ediliyor. Şart: tüm property’ler optional veya default’lu olmalı (CloudKit gereksinimi), unique constraint yok, custom relationship deleteRule sınırlı. Avantaj: hesap yönetimi/auth Apple tarafında, ek backend yok. Dezavantaj: CloudKit kotaları (CloudKit Console üzerinden takip), public DB kullanımı sınırlı, debug Web Console’da yapılıyor. - CoreData + CloudKit:
NSPersistentCloudKitContainerile uzun süredir mümkün; SwiftData ile aynı kısıtlar geçerli. iOS 13’ten beri olduğu için olgun, ama setup boilerplate’i fazla. - Realm + Atlas Device Sync: MongoDB Atlas üzerinde ücretli backend; auth için MongoDB Realm App, ama Apple Sign-In veya custom JWT entegrasyonu mümkün. Avantaj: cross-platform sync (aynı backend Android’e de hizmet eder). Dezavantaj: maliyet, vendor lock-in, dış sistem yönetimi.
Üç sync seçeneğini karar matrisine indirgersek: iOS-only ve kullanıcı bazlı (private) sync ihtiyacınız varsa SwiftData+CloudKit hem ucuz hem operasyonel olarak en az yük. Cross-platform sync şartsa Realm+Atlas pratik, ancak maliyeti baştan hesaba katın (5K aktif kullanıcı için tipik faturalar $50-$200/ay aralığında, kullanıma bağlı). Karmaşık server-side iş kuralları (sadece sync değil, server-validated mutations) gerekiyorsa kendi backend’inizi (örneğin React Native vs Flutter karşılaştırmasında değindiğimiz tarzda Firebase/Supabase/custom REST) kurmak daha esnek olur.
CloudKit’in 2026’daki sessiz iyileştirmesi: persistent history tracking ile birlikte conflict resolution davranışı daha öngörülebilir hale geldi. Yine de büyük dataset sync (100K+ kayıt) ilk-cihaz katılımında saatler alabiliyor. Production senaryosunda incremental sync stratejisi ve “fresh device” UX hikayesi tasarlanmalı.
Concurrency, Thread Safety ve Swift 6
Swift 6 ile gelen strict concurrency checking, persistence katmanlarını yeniden değerlendirmeyi zorluyor. Üç framework’ün thread/concurrency modeli:
- SwiftData:
ModelContextaktör-uyumlu değil ama@ModelActormacro’su ile global aktör tabanlı context sarmalanabiliyor. Background insert/update için@ModelActorkullanımı 2026’da resmi pattern. - CoreData:
NSManagedObjectContext.performclosure’ları içinde kullanılır; ana ve background context ayrımı klasik. Swift 6 altındaNSManagedObjectalt sınıfları@Sendableuyumu için ekstra dikkat ister. - Realm: Realm objesi thread-confined’tır; frozen object pattern ya da Realm.asyncOpen ile thread güvenliği sağlanır. Realm Swift, async/await desteğini olgunlaştırdı.
2026’daki tercih: yeni Swift 6 proje için SwiftData’nın @ModelActor ergonomisi en temiz. CoreData’da background context boilerplate’i hâlâ canlı ama mature; ekipte CoreData kasları varsa risk düşük. Realm’in thread modeli farklı bir mental model gerektiriyor — yeni başlayanlar için öğrenme eğrisi mevcut. iOS Native vs Cross-Platform 2026 kararınıza göre ekibin Swift Concurrency derinliği belirleyici.
Maliyet, Lisans ve Ekosistem
| Boyut | SwiftData | CoreData | Realm Local | Realm + Atlas Sync |
|---|---|---|---|---|
| Lisans | Apple (kapalı kaynak) | Apple (kapalı kaynak) | Apache 2.0 | Apache 2.0 (client) + MongoDB SaaS (server) |
| Doğrudan maliyet | Ücretsiz | Ücretsiz | Ücretsiz | $30+/ay başlangıç, kullanım bazlı |
| App boyutu etkisi | Sıfır (sistem framework) | Sıfır (sistem framework) | ~5-8 MB | ~7-10 MB |
| Vendor lock-in riski | Apple ekosistemi içinde düşük | Apple ekosistemi içinde düşük | Orta (MongoDB strateji değişimleri) | Yüksek |
| iOS dışı destek | Yok | Yok | Var (Android, KMP, Node) | Var |
| Topluluk büyüklüğü (Stack Overflow tag) | ~1.2K soru | ~50K soru | ~9K soru | ~9K soru |
| Resmi destek | Apple DTS, Developer Forums | Apple DTS, Developer Forums | MongoDB destek (ücretli tier) | MongoDB destek |
Topluluk gücüne baktığımızda CoreData hâlâ açık ara önde — 20 yıllık birikim, binlerce blog yazısı, kitap (Pearlmutter, Daniel Eggert) ve sample project. SwiftData’nın Stack Overflow tag sayısı düşük görünüyor ama Apple Developer Forums’taki diskussion volume hızla yükseliyor. Realm’in dokümantasyonu MongoDB tarafından sürdürüldüğü için tutarlı, ancak strategy değişikliklerinin (örneğin sync’in monetize edilmesi) topluluğu tedirgin ettiği biliniyor. Flutter Cross-Platform 2026 projelerinde Realm Flutter SDK’sı bir alternatif olarak duruyor; iOS+Android Flutter projelerinde paylaşımlı schema için pratik.
Karar Çerçevesi: Hangi Projede Hangi Seçim?
Üç framework arasında karar verirken kullandığım pratik karar ağacı:
- Minimum iOS deployment target’ın iOS 17+ mı? Hayır → SwiftData elendi. Evet → SwiftData adaylar arasında.
- Android veya başka platform paylaşımlı veri katmanı gerekecek mi? Evet → Realm tek mantıklı seçenek (Kotlin Multiplatform veya iki ayrı SDK).
- Multi-cihaz kullanıcı sync’i (private) gerekli mi? Evet → CloudKit yolu (SwiftData veya CoreData), Realm Atlas Sync ücretli.
- Veri hacmi 1M+ kayıt/cihaz mı? Evet → GRDB veya raw SQLite (ORM maliyetinden kaçın); 100K-1M arası tüm ORM’ler iş görür.
- Takımın ana deneyimi nerede? CoreData stack’i taşıyan bir takım, mevcut projede SwiftData’ya zorla geçişten kazanç görmeyebilir; yeni mikro-feature’da SwiftData denemek mantıklı.
- Strict Concurrency (Swift 6) zorunluluğu var mı? Evet → SwiftData ergonomisi avantajlı (
@ModelActor); CoreData mümkün ama boilerplate fazla. - Reactive UI ağırlıklı bir uygulama mı (canlı liste, dashboard)? SwiftData
@QuerySwiftUI için en doğrudan; Realm Results-notification için klasik avantajlı; CoreData NSFetchedResultsController UIKit için.
Avantaj — SwiftData: Hızlı setup, Swift-native, CloudKit entegrasyonu, Swift 6 uyumu. Dezavantaj — SwiftData: iOS 17+ kısıtı, görece genç (bazı edge case’ler hâlâ rapor ediliyor), Apple ekosistemi dışı yok. Ne zaman seç: Yeni iOS-only proje + iOS 17+ + SwiftUI ağırlıklı UI.
Avantaj — CoreData: 20 yıllık olgunluk, geniş topluluk, iOS 12’e kadar uzanan target desteği, mature CloudKit entegrasyonu. Dezavantaj — CoreData: Boilerplate, .xcdatamodeld GUI bağımlılığı, NSPredicate string’leri, Swift 6 ergonomisi sınırlı. Ne zaman seç: Eski iOS target’lı yeni proje veya devam eden CoreData kod tabanı; geniş ekip ve mature mühendislik kültürü.
Avantaj — Realm: Cross-platform, en hızlı ORM, reactive Results, KMP desteği. Dezavantaj — Realm: Vendor risk (MongoDB strateji), Sync ücretli, Swift-idiomatic değil, app boyutu artışı. Ne zaman seç: iOS+Android paylaşımlı veri layer’ı, offline-first iş uygulamaları, reactive dashboard tabanlı UX.

SSS: SwiftData, CoreData ve Realm Hakkında Sık Sorulanlar
SwiftData CoreData’nın yerini tamamen alacak mı?
Kısa vadede hayır. SwiftData arka planda CoreData store mekanizmasını kullanıyor ve Apple iki framework’ü paralel olarak yaşatıyor. CoreData mature feature seti (custom store, persistent history, advanced fetch) SwiftData’da hâlâ olgunlaşıyor. Yeni iOS 17+ projelerde SwiftData varsayılan olacak, ancak CoreData en az 2030’a kadar resmi destek görmeye devam edecek gibi duruyor.
SwiftData iOS 16 ve altında çalışıyor mu?
Hayır. SwiftData minimum iOS 17.0 deployment target gerektirir. iOS 16 veya altını desteklemen gerekiyorsa CoreData, Realm veya GRDB seçenekleri arasında karar vermelisin. App Store kullanıcılarının iOS 17+ adopsiyon oranı 2026 itibarıyla %88 civarında, ancak özellikle kurumsal müşterilere hizmet eden iş uygulamalarında eski iOS desteği hâlâ önemli olabilir.
Realm’in MongoDB tarafından satın alınması projem için risk mi?
Bağımsız (local) Realm kullanıyorsan risk düşük; SDK Apache 2.0 lisanslı, MongoDB stratejisini değiştirse bile mevcut sürümler kullanılabilir kalır. Atlas Device Sync’e bağımlıysan risk yüksek: ücretlendirme veya feature kararları doğrudan etkiler. Mitigation: sync katmanını abstract bir interface arkasında tutmak, böylece gerekirse başka backend’e geçiş mümkün olur.
SwiftData’da unique constraint nasıl tanımlanır?
@Attribute(.unique) property wrapper’ı ile. iOS 17.4 öncesinde unique constraint stable değildi; 2026 itibarıyla compound unique de destekleniyor (@Attribute(.unique) birden fazla property üzerinde işaretlenir, runtime’da kombinasyon unique olur). CloudKit sync aktifken unique constraint kullanılamaz — bu CloudKit sınırı, SwiftData değil.
CoreData’dan SwiftData’ya migrate edebilir miyim?
Evet. Aynı SQLite store dosyasını paylaştıkları için ModelConfiguration içinde mevcut .sqlite path’ini gösterip @Model sınıflarını CoreData entity’lerine birebir karşılık gelecek şekilde tanımlayarak progressive migration yapılır. Pratikte önce SwiftData modellerini yazıp birim test ile aynı veriyi okuduğunu doğrulamak gerekir. Karmaşık ilişki grafikleri veya custom NSManagedObject davranışları varsa migration komplikedir; Ömer Önal’a danışmanlık çerçevesinde yönlendirdiğimiz birçok ekipte bu geçişin 2-4 sprintlik bir iş olduğu görülüyor.
Sonuç: 2026’da Doğru Persistence Tercihi
iOS yerel veri persistence kararı, 2026’da artık tek doğru cevabı olan bir mesele değil. SwiftData, yeni iOS 17+ projelerde varsayılan seçim olacak kadar olgunlaştı — özellikle SwiftUI ağırlıklı, CloudKit sync isteyen, Swift 6 strict concurrency ile uyumlu yeni projelerde net birinci. CoreData, eski iOS target desteği gereken veya devam eden büyük kod tabanları için hâlâ rasyonel; “legacy” damgalanmamalı, mature feature seti production’a güvenli. Realm, cross-platform veri katmanı ve offline-first iş uygulamaları için en güçlü çözüm olmaya devam ediyor; sync ücretlendirmesi proje bütçesinde önceden hesaplanırsa MongoDB ekosistemi pratik bir tercih.
Pratik öneri: yeni iOS-only proje başlatıyorsan SwiftData ile başla, ilk schema değişikliği gelene kadar VersionedSchema disiplinini kur, CI’da migration smoke test ekle. Devam eden bir CoreData projeniz varsa SwiftData’ya panikle geçiş yapma — yeni feature’larda SwiftData adaları (aynı persistent container üzerinde paralel modeller) inşa edip ergonomiyi takımla test et. iOS+Android paylaşımlı bir proje düşünüyorsan Realm + Kotlin Multiplatform’u Flutter veya React Native ile birlikte değerlendir; mimari kararlar persistence framework’ünden önce gelmeli.
Bu kararların hiçbiri tek başına bir framework seçimi değil — deployment target, ekip deneyimi, sync ihtiyacı ve maliyet bütçesinin kesişiminde olgunlaşır. Mobil veri katmanı stratejinizi netleştirmek, mevcut CoreData/Realm kod tabanınızı SwiftData’ya geçişin maliyet-fayda analizini yapmak veya yeni projeniz için doğru tercihi kararlaştırmak istiyorsanız iletişim sayfası üzerinden mimari değerlendirme talep edebilirsiniz; ihtiyaca göre teknoloji seçimi, migration planlaması ve performans optimizasyonu konularında destek sunuyoruz.










Ömer ÖNAL
Mayıs 16, 2026Mobil uygulama danışmanlık projelerinde gördüğüm: cross-platform vs native kararı, ekibin mevcut yetkinliklerinden çok ürünün UX-kritik özelliklerine göre verilmeli. Eğer ana fonksiyonların %70’inden fazlası platform-specific API kullanıyorsa native, aksi durumda cross-platform daha sürdürülebilir. Yorumlarınızı bekliyorum.