Tüm Yazılar
KategoriFlutter
Okuma Süresi
14 dk
Yayın Tarihi
2026-09-06
Kelime Sayısı
3.088kelime

Kahveni hazırla - bu içerikli bir makale!

Flutter'da UIScene Zorunluluğu: iOS 27 Migrasyonu

Özet

iOS 27 SDK, Flutter'da UIScene lifecycle'ı zorunlu kılıyor. CLI'nın otomatik hallettiği durumu, manuel AppDelegate/Info.plist göçünü ve regresyon testlerini adım adım öğren.

Flutter'da UIScene Zorunluluğu: iOS 27 Migrasyonu

iOS 27 SDK, tüm UIKit tabanlı uygulamalar için UIScene yaşam döngüsünü zorunlu kılıyor — Flutter uygulamaları da bunun dışında değil. Xcode 27 ile derlenip bu geçişi yapmayan bir Flutter uygulaması, cihazda açılış anında çöküyor. Bu yazıda Flutter UIScene geçişini adım adım, gerçekte neyin otomatik neyin manuel olduğunu ve plugin'lerini eski yaşam döngüsüne karşı nasıl tarayacağını net şekilde göreceksin.

💡 Pro Tip: Göçe başlamadan önce flutter --version ile Flutter 3.41 veya üzerinde olduğunu doğrula — UIScene desteği bu sürümden itibaren varsayılan olarak devrede ve CLI, özelleştirilmemiş AppDelegate'leri otomatik göçüyor.

İçindekiler

iOS 27 SDK'nın UIScene Zorunluluğu Tek Cümlede

Flutter'ın resmi 3.47 duyurusu bu değişikliği açık şekilde tarif ediyor: "The iOS 27 SDK now mandates the UIScene lifecycle for all UIKit-based apps. Apps built with Xcode 27 that do not adopt UIScene will fail to launch on startup." Yani mesele bir uyarı değil, doğrudan bir açılış hatası. Bu kural yalnızca Flutter'a özgü değil; Apple bunu WWDC25'te tüm UIKit ekosistemine duyurdu; Apple'ın ifadesiyle (çeviri): iOS 26'yı takip eden sürümde, en güncel SDK ile derlenen her UIKit uygulaması UIScene yaşam döngüsünü kullanmak zorunda kalacak, aksi halde açılmayacak. iOS 26'da bu yalnızca konsola uyarı basıyordu; iOS 27 SDK ile derlendiğinde artık çökme anlamına geliyor.

Burada iki farklı kuralı birbirine karıştırmamak önemli: 28 Nisan 2026'da yürürlüğe giren "App Store'un iOS 26 SDK ile derleme zorunluluğu" ayrı bir kuraldı. UIScene mandate'ı ise tamamen farklı bir eşik — Xcode 27 ile derleme yapan her uygulamayı ilgilendiriyor.

Not: iOS 27 SDK'sı bu yazının yayınlandığı tarihte (Eylül 2026 başı) hâlâ beta aşamasında; Xcode 27 beta'sı 8 Haziran 2026'da geliştiricilere açıldı (ilk build: 27A5194q).

Flutter CLI'nın Otomatik Hallettiği Durum vs Manuel Göç Gerektiren Durum

İyi haber: Flutter 3.41'den beri UIScene desteği varsayılan olarak açık. Resmi migrasyon rehberi şunu söylüyor: "As of Flutter 3.41, UIScene is supported by default. If your AppDelegate hasn't been customized, the Flutter CLI automatically migrates your app." Yani AppDelegate.swift dosyana hiç dokunmadıysan, flutter build ios veya flutter run çalıştırdığında CLI arka planda göçü kendisi yapıyor ve başarılı olduğunda net bir mesaj basıyor: "Finished migration to UIScene lifecycle" — bu mesajı gördüysen ek bir işlem gerekmiyor.

Flutter'ın 3.47 duyurusu bu ayrımı net biçimde çiziyor: "For most apps, the Flutter CLI handles this migration automatically during the build. However, manual migration is required if you have custom native code in your AppDelegate or use plugins that still rely on the legacy application lifecycle." Yani manuel göç tetikleyicisi iki durumdan biri:

  • Özelleştirilmiş AppDelegate: application:didFinishLaunchingWithOptions: içine kendi native kodunu (push token kaydı, üçüncü parti SDK init'i, deep link yönlendirmesi vb.) eklediysen.
  • Eski yaşam döngüsüne bağımlı plugin: Plugin, applicationDidBecomeActive gibi artık deprecate edilmiş UI-durum event'lerini dinliyorsa.

Bir de kapsam ayrımı var: resmi rehber, mevcut bir native iOS uygulamasına gömülü Flutter kurulumları (add-to-app) ve iOS application lifecycle event'lerini kullanan Flutter plugin'leri için ayrı göç rehberlerine yönlendiriyor. Plugin bakımcısıysan aşağıdaki adımlar değil o rehber senin yolun.

Manuel göç gerekip gerekmediğini anlamanın en hızlı yolu, flutter build ios çıktısını okumak. CLI otomatik göçü başaramazsa sessiz kalmıyor, uyarı basıp elle yapılacakları listeliyor:

bash
1flutter build ios --release
2# Çıktıda ararken:
3# "Finished migration to UIScene lifecycle" -> otomatik göç başarılı, ek işlem yok
4# bu mesaj yoksa CLI uyarı basıp manuel göç talimatlarını listeler -> aşağıdaki adımlara geç

Info.plist + AppDelegate Değişikliği Adım Adım

Manuel göç iki dosyada değişiklik istiyor: Info.plist ve AppDelegate.swift. Önce Info.plist'e bir UIApplicationSceneManifest girdisi ekleniyor; varsayılan sahne temsilcisi sınıfı FlutterSceneDelegate:

xml
1<key>UIApplicationSceneManifest</key>
2<dict>
3 <key>UIApplicationSupportsMultipleScenes</key>
4 <false/>
5 <key>UISceneConfigurations</key>
6 <dict>
7 <key>UIWindowSceneSessionRoleApplication</key>
8 <array>
9 <dict>
10 <key>UISceneClassName</key>
11 <string>UIWindowScene</string>
12 <key>UISceneDelegateClassName</key>
13 <string>FlutterSceneDelegate</string>
14 <key>UISceneConfigurationName</key>
15 <string>flutter</string>
16 <key>UISceneStoryboardFile</key>
17 <string>Main</string>
18 </dict>
19 </array>
20 </dict>
21</dict>

Ardından AppDelegate.swift içindeki plugin kaydı, artık application:didFinishLaunchingWithOptions: yerine yeni didInitializeImplicitFlutterEngine callback'ine taşınıyor. Bunun için AppDelegate'in FlutterImplicitEngineDelegate protokolüne uyması gerekiyor:

swift
1import Flutter
2import UIKit
3 
4@main
5@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate {
6 func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) {
7 GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry)
8 }
9}

Projende özel bir sahne davranışına ihtiyacın varsa (örneğin çoklu pencere desteği veya özel deep-link işleme), kendi SceneDelegate'ini yazabilirsin — ama resmi rehber burada net bir kural koyuyor: "If you implement your own SceneDelegate, you must subclass FlutterSceneDelegate or conform to the FlutterSceneLifeCycleProvider protocol." Sıfırdan bir UISceneDelegate yazıp bu iki yoldan hiçbirini izlemezsen, sahne yaşam döngüsü olayları Flutter'a iletilmez.

Custom Native Kodu ve Eski Lifecycle'a Dayanan Plugin'leri Bulma

En sinsi hata kaynağı, AppDelegate içinde artık çağrılmayan bir yaşam döngüsü metoduna güvenmek. Apple, UI durumuyla ilgili application lifecycle event'lerini deprecate etti; resmi doküman bunu şöyle özetliyor: "Apple has deprecated application lifecycle events related to UI state. After you migrate to the UIScene lifecycle, UIKit no longer calls these events." Yani applicationDidBecomeActive, applicationWillResignActive gibi metodlara yazdığın kod artık tetiklenmeyebilir — bu da sessiz, fark edilmesi zor bir regresyon demek.

Kontrol listesi şu şekilde işliyor:

  1. AppDelegate.swift içinde application(_:did...) dışındaki tüm UIApplicationDelegate metodlarını grep ile tara.
  2. Podfile.lock'taki her native plugin için GitHub reposunda "UIScene" veya "scene lifecycle" geçen açık issue var mı diye bak.
  3. Push notification, background fetch ve URL-scheme handling yapan üçüncü parti SDK'ların (analytics, crash reporting) son sürüm notlarını kontrol et.

Somut bir örnek: yaygın kullanılan flutter_local_notifications paketi bu göçü 22 Şubat 2026'da tamamladı. UIScene kaydı (issue #2751), örnek uygulamayı UIScene yaşam döngüsüne taşıyan PR #2761 ile kapandı; aynı PR README'yi de UIScene'e geçmiş uygulamalara özel bilgiyle güncelledi. Yani bu paket artık bir risk kalemi değil — ama kullandığın her paket için aynı doğrulamayı kendin yapman gerekiyor.

Elle tek tek dosya açıp aramak yerine, deprecate edilen lifecycle metodlarını tek komutla taramak daha güvenli. Aşağıdaki grep, AppDelegate.swift içinde artık çağrılmayabilecek UI-durum event'lerini listeler:

bash
1grep -nE "applicationDidBecomeActive|applicationWillResignActive|applicationDidEnterBackground|applicationWillEnterForeground" \
2 ios/Runner/AppDelegate.swift

Bu komut bir sonuç döndürüyorsa, o metodların içindeki mantığı sahne tabanlı karşılıklarına (sceneDidBecomeActive, sceneWillResignActive gibi) taşımayı değerlendirmen gerekiyor — resmi doküman bu event'lerin UIKit tarafından artık tetiklenmediğini açıkça belirtiyor, dolayısıyla içeride kritik bir iş mantığı (örneğin oturum yenileme veya analytics event'i) varsa bunun sessizce çalışmayı bırakması, çökme kadar görünür olmayan ama aynı derecede ciddi bir regresyon.

Podfile.lock üzerinden native bağımlılıklarını hızlıca listeleyip her biri için GitHub'da arama yapmak da işini kolaylaştırır:

bash
1grep -E "^[[:space:]]+- " ios/Podfile.lock | sort -u

Çıkan liste üzerinden her paketin son sürüm notlarını ve açık issue'larını kontrol ederek hangi bağımlılığın UIScene'e hazır olmadığını önceden tespit edebilirsin.

Aşağıdaki tablo, göç sırasında en sık karışan sorumluluk değişimini özetliyor — hangi kod artık nereye taşınmalı:

Eski konum (application lifecycle)
Yeni konum (UIScene lifecycle)
Not
application:didFinishLaunchingWithOptions: içinde plugin kaydı
didInitializeImplicitFlutterEngine(_:)
FlutterImplicitEngineDelegate protokolü şart
applicationDidBecomeActive
UIKit tarafından artık çağrılmıyor
UI-durum event'leri deprecate edildi
Özel SceneDelegate mantığı
FlutterSceneDelegate subclass veya FlutterSceneLifeCycleProvider
Sıfırdan yazımda sahne olayları iletilmez
Info.plist sahne tanımı yok
UIApplicationSceneManifest girdisi
UISceneDelegateClassName varsayılan FlutterSceneDelegate

Minimum iOS 15 / macOS 12 Kararının Maliyeti

Xcode 27 desteğiyle birlikte Flutter, minimum işletim sistemi sürümünü de yükseltti: iOS tarafında önceki minimum 13'ten 15'e, macOS tarafında ise 10.15'ten 12'ye çıkarıldı (Flutter 3.47 duyurusu). Bu değişiklik, flutter/flutter deposundaki "Increase iOS minimum supported version from 13 to 15 to support Xcode 27" başlıklı 187741 numaralı kayıtta kararlaştırılıp kapatıldı.

Bunun kullanıcı tarafında ne kadar cihazı etkilediğine dair resmi bir sayı yok; Apple veya Flutter ekibi bu yükseltmenin gerçek kullanıcı kaybı yüzdesini paylaşmıyor. Kendi uygulamanın analitik panelinden (Firebase Analytics, App Store Connect veya kendi telemetri sistemin) iOS sürüm dağılımını çek ve iOS 15 altında kalan kullanıcı oranını gör. Bu oran ihmal edilebilir düzeydeyse yükseltme sorunsuz; yüksekse minimum SDK yükseltmesini App Store sürüm notlarında önceden duyurmayı düşün.

Intel Mac Desteğinin Sonu

Aynı 3.47 sürümünde Flutter, Intel tabanlı Mac'lerdeki desteği de daraltmaya başladı. Resmi duyuru açık: "We have disabled automated test runs on Intel hardware, and the Flutter CLI now prints warnings when building on Intel hosts or targeting dual architectures. These warnings will become errors in a future release." Yani bugün yalnızca bir uyarı ama gelecekteki bir sürümde bu build hatasına dönüşecek.

Eğer macOS hedefli bir Flutter uygulaması geliştiriyorsan ve Apple Silicon'a geçmeye hazırsan, ARM64-only build'e hemen geçiş yapabilirsin:

bash
1flutter config --enable-macos-arm64-only
2flutter build macos --release

Bu komut, universal binary üretimini durdurup yalnızca Apple Silicon hedefleyen bir build zinciri kuruyor — CI sunucularının da Apple Silicon runner kullandığından emin ol; Intel bir build makinesinde CLI şimdilik yalnızca uyarı basar, ama Flutter bu uyarıların gelecek bir sürümde hataya dönüşeceğini duyurdu.

Deeplink/Push/State-Restore Regresyon Testi

UIScene göçünün en yıkıcı hataları derleme zamanında değil, çalışma zamanında ortaya çıkıyor. Resmi Flutter dokümanı iki somut riski işaret ediyor: özel SceneDelegate implementasyonlarının sahne yaşam döngüsü olaylarını Flutter'a iletmemesi ve deprecate edilen UI-durum event'lerinin artık tetiklenmemesi. Bu iki teknik gerçek, pratikte beş senaryonun regresyon testine alınmasını gerektiriyor — bunlar resmi bir checklist değil, bu iki riskten türeyen mantıksal sonuçlar:

  • Soğuk başlatma + deep link: Uygulama kapalıyken bir deep link'e tıklanıp doğru ekrana yönlendiği kontrol edilmeli.
  • Ana ekran kısayolundan başlatma: 3D Touch/Home Screen quick action ile açılışın plugin kaydından etkilenip etkilenmediği görülmeli.
  • Arka plan/ön plan geçişi: applicationDidBecomeActive gibi event'lere bağımlı kodun artık çalışmadığı, sahne tabanlı karşılığının (sceneDidBecomeActive) devrede olduğu doğrulanmalı.
  • Push notification handling: Bildirime tıklayarak açılışın, plugin'in yeni didInitializeImplicitFlutterEngine callback'iyle uyumlu çalıştığı test edilmeli.
  • Durum geri yükleme: Uygulama sistem tarafından arka planda sonlandırıldıktan sonra yeniden açıldığında sahne durumunun ve kullanıcının kaldığı ekranın geri geldiği doğrulanmalı.

Capacitor ve React Native Tarafındaki Aynı Apple Kısıtı

Bu mandate Flutter'a özgü değil — aynı Apple kuralı tüm çapraz platform ekosistemlerini vuruyor. Capacitor tarafı, kuralı doğrudan bir sürüm yükseltmesiyle karşıladı: "we've released Capacitor 8.5, a breaking minor that adopts UIScene... Changes in this version are iOS only, and for most apps the migration is one CLI command." Göç komutu tek satır:

bash
1npm i -D @capacitor/cli@latest && npx cap migrate

Önemli bir ayrım var: bu değişiklik yalnızca Xcode 27 ile _yeniden derlenen_ uygulamaları etkiliyor. Capacitor ekibinin kendi ifadesiyle: "this only affects apps built with Xcode 27. Published apps keep running on iOS 27... Nothing breaks in the App Store when iOS 27 ships." Yani App Store'da zaten yayında olan, eski Xcode ile derlenmiş bir uygulama iOS 27 çıktığında çalışmaya devam ediyor — sorun yalnızca _yeni bir build_ çıkarmak istediğinde ortaya çıkıyor. Flutter için de aynı mantık geçerli: mevcut binary'n etkilenmez, ama bir sonraki App Store güncellemesi için Xcode 27 ile derlediğinde göçü tamamlamış olman gerekir.

React Native tarafında ise konu ağırlıkla geliştirici topluluğunun GitHub issue tracker'ında biriken somut hata raporları üzerinden ilerliyor. React Native deposunda "[iOS] CLIENT OF UIKIT REQUIRES UPDATE: This process does not adopt UIScene lifecycle. This will become an assert in a future version." başlıklı bir issue açık durumda. Expo tarafında da benzer bir rapor var: "[iOS][Xcode 27][SDK 56] Prebuild template fails to launch because UIScene lifecycle is required." React Native ekosistemi için net söylenebilecek şey, aynı Apple kısıtıyla karşı karşıya olduğu ve konunun şu an ağırlıkla GitHub issue'ları üzerinden takip edildiğidir.

Aynı Sürümdeki Alakasız Değişikliklerle Karıştırmamak

Flutter 3.47 duyurusu tek bir konuyu değil, birden fazla değişikliği aynı yazıda topluyor — bu da UIScene göçünü başka bir kararla karıştırma riski doğuruyor. Aynı sürüm notlarında dart fix --apply --code=migrate_design_widgets ile çalışan design widget migrasyonu ve material_ui/cupertino_ui gibi standalone paketlere modülerleşme de geçiyor. Bu ikisi UIScene ile tamamen ayrı eksenler: UIScene bir Apple/iOS SDK zorunluluğu, design paketlerinin ayrılması ise Flutter'ın kendi framework mimarisini küçük parçalara bölme kararı. Birini yapman diğerini yapman gerektiği anlamına gelmiyor — projeni Xcode 27'ye hazırlarken pubspec.yaml'ında design paket importlarını değiştirmen gerekmez, bu ayrı bir migrasyon adımı.

Benzer bir karışıklık riski de tarih konusunda var. 28 Nisan 2026'da yürürlüğe giren "App Store'un iOS 26 SDK ile derleme zorunluluğu" kuralı, UIScene mandate'ından tamamen farklı bir eşik ve farklı bir tarih. O kural, uygulamanın hangi SDK ile derlendiğini App Store submission aşamasında kontrol ediyordu; UIScene mandate'ı ise runtime'da, uygulama açılırken devreye giriyor. İki kuralı aynı checklist'e koyup "ikisini de Nisan 2026'da hallettim" diye düşünmek, Xcode 27 ile yeniden derleme yapıldığında sürpriz bir çökme riskiyle karşılaşmak demek.

Projede birden fazla hedef platform varsa (iOS + iPadOS + macOS Catalyst), her biri için ayrı deployment target kontrolü yapmayı unutma — flutter build ios, flutter build ipa ve flutter build macos komutlarının her biri kendi Info.plist/project.pbxproj ayarlarını okuyor, birini düzeltip diğerini atlamak yaygın bir hata.

Doğrulama Kontrol Listesi

Göçü tamamladıktan sonra aşağıdaki maddeleri sırayla işaretle. Bu liste, önceki bölümlerde geçen resmi kaynaklı gereksinimlerin bir özeti niteliğinde:

Kontrol
Nasıl doğrularsın
flutter build ios çıktısı
"Finished migration to UIScene lifecycle" mesajını gördün mü
Info.plist
UIApplicationSceneManifest girdisi ve UISceneDelegateClassName mevcut mu
AppDelegate.swift
FlutterImplicitEngineDelegate protokolüne uyuyor, plugin kaydı didInitializeImplicitFlutterEngine içinde mi
Eski lifecycle metodları
applicationDidBecomeActive gibi UI-durum event'lerine bağımlı kod kaldı mı
Native plugin'ler
Kullandığın paketlerin README/issue tracker'ında UIScene notu var mı
Minimum OS
project.pbxproj içindeki IPHONEOS_DEPLOYMENT_TARGET 15.0, macOS hedefi varsa MACOSX_DEPLOYMENT_TARGET 12.0
Deep link / push / state-restore
Beş senaryo da gerçek cihazda elle test edildi mi

ALTIN İPUCU

Bu yazının en değerli bilgisi

Bu ipucu, yazının en önemli çıkarımını içeriyor.

Easter Egg

Gizli bir bilgi buldun!

Bu bölümde gizli bir bilgi var. Keşfetmek ister misin?

Okuyucu Ödülü

Göç öncesi kendi projende hızlıca gözden geçirebileceğin, bu yazıdaki tüm adımların tek sayfalık özeti aşağıda. Yazdır, göç günü elinin altında tut.

SSS

Flutter uygulamasında UIScene lifecycle'a nasıl geçilir?

Flutter 3.41'den itibaren UIScene desteği varsayılan olarak açıktır; flutter run veya flutter build ios çalıştırdığında, AppDelegate'in özelleştirilmemişse Flutter CLI otomatik migrasyon yapar ve "Finished migration to UIScene lifecycle" çıktısını verir. Özel native kod veya eski lifecycle API'lerine bağımlı plugin kullanıyorsan, AppDelegate'i FlutterImplicitEngineDelegate protokolüne uydurup plugin kaydını yeni didInitializeImplicitFlutterEngine callback'ine taşıyarak manuel göç yapman gerekir.

Flutter 3.47 minimum iOS sürümü kaç?

Flutter 3.47, Xcode 27 desteği için minimum iOS sürümünü 13'ten 15'e, minimum macOS sürümünü ise 10.15'ten 12'ye yükseltti. Bu karar, flutter/flutter deposundaki 187741 numaralı GitHub kaydında kararlaştırılıp kapatıldı.

UIScene'e geçmezsem uygulamam açılmaz mı?

Evet — iOS 27 SDK ile derlenen ve UIScene lifecycle'ı benimsemeyen UIKit tabanlı uygulamalar açılışta çöküyor. Bu, Apple'ın WWDC25'te duyurduğu ve iOS 26'dan sonraki sürümde zorunlu hale gelen bir gereksinim; iOS 26'da yalnızca konsol uyarısı veriliyordu, iOS 27 SDK ile derlendiğinde artık çökme söz konusu.

AppDelegate'ten SceneDelegate'e geçiş Flutter'da nasıl yapılır?

Migrasyonla birlikte UISceneDelegate UI lifecycle'ını devralır; AppDelegate yalnızca process olayları ve genel uygulama yaşam döngüsünden sorumlu kalır. Önceden application:didFinishLaunchingWithOptions: içinde yapılan plugin kaydı artık didInitializeImplicitFlutterEngine callback'ine taşınmalı; ayrıca Info.plist'e bir UIApplicationSceneManifest girdisi eklenmesi gerekir.

Bu değişiklik App Store'daki mevcut uygulamamı hemen etkiler mi?

Hayır. Capacitor ekibinin de doğruladığı gibi, kural yalnızca Xcode 27 ile _yeniden derlenen_ uygulamaları etkiliyor — yayında olan, eski Xcode ile derlenmiş bir binary iOS 27'de çalışmaya devam eder. Sorun, bir sonraki güncellemeni Xcode 27 ile derlediğinde ortaya çıkar.

Sadece Flutter mı etkileniyor, yoksa tüm çapraz platform framework'leri mi?

Tüm UIKit tabanlı uygulamalar etkileniyor. Capacitor 8.5 sürümüyle bu göçü resmi olarak ele aldı; React Native ve Expo tarafında ise konu ağırlıkla GitHub issue tracker'ları üzerinden takip ediliyor; aynı hatayı bildiren açık kayıtlar mevcut.

Sonuç

UIScene göçü, çoğu Flutter projesinde tek bir flutter build ios komutuyla sessizce tamamlanan bir arka plan işlemi. Riskin tamamı, AppDelegate'i özelleştirmiş veya eski lifecycle event'lerine bağımlı bir plugin kullanan projelerde toplanıyor — bu durumda Info.plist ve AppDelegate'te elle yapman gereken birkaç değişiklik var, ve deep link/push/state-restore senaryolarını gerçek cihazda test etmeden "göç tamamlandı" deme.

Platform kararlarında native köprü kurmayı derinlemesine öğrenmek istersen Flutter ile iOS Entegrasyonu: Platform Channel ve Native Modüller yazısına bak. Performans tarafında yeni render motorunu merak ediyorsan Flutter 4 Impeller: Yeni Render Engine ve Performans Devrimi 2026 rehberini incele. Projeni büyük ölçekte yapılandırıyorsan Flutter Clean Architecture: Katmanlı Mimari Rehberi faydalı olacaktır. Çapraz platform kararı veriyorsan React Native vs Flutter 2026: Kapsamlı Karşılaştırma Rehberi ve Flutter vs SwiftUI: 3 Yıl + 60K LOC Production Karşılaştırması yazılarına göz at. iOS tarafındaki paralel platform değişikliklerini takip etmek istersen iOS 26 Liquid Glass: SwiftUI Adaptasyon Rehberi yazısı ilgini çekebilir.

Kaynaklar

Etiketler

#Flutter#iOS 27#Xcode 27#UIScene#AppDelegate#SceneDelegate#migrasyon
Muhittin Çamdalı

Muhittin Çamdalı

Lead Mobile Engineer

12+ yıllık deneyime sahip Lead Mobile Engineer. Swift, SwiftUI, Kotlin ve Flutter ile iOS, Android ve cross-platform mimarilerde uzman. Performanslı ve kullanıcı dostu mobil uygulamalar geliştiriyorum.

iOS Geliştirme Haberleri

Haftalık Swift tips, SwiftUI tricks ve iOS best practices. Spam yok, sadece değerli içerik.

Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.

Paylaş

İlgili İçerik