Splash Screen Nedir?
Splash screen uygulama acilirken kullanicinin gordugu ilk ekrandir. Bu ekran uygulamanin yuklenmesi sirasinda bos beyaz ekran gormesini engeller ve marka kimligini iletir. iOS ve Android'in splash screen gereksinimleri birbirinden oldukca farklidir ve bu farklari bilmek app rejection'dan kacinmak icin sart.
iOS Launch Screen
Apple'in Launch Screen kurallari katıdır:
Storyboard Zorunlulugu
- iOS'ta splash screen icin LaunchScreen.storyboard kullanmak zorunlu. Static bir PNG/JPG gorsel koyup "tamam" diyemezsin.
- Storyboard icinde UIImageView, UILabel ve Auto Layout ile responsive bir layout kurulur
- Dinamik API cagrisi, animasyon veya custom view KULLANILAMAZ
- Cihaz boyutlarina otomatik uyum saglamasi icin constraint'ler dogru ayarlanmali
Apple'in Yasaklari
- Splash screen'de reklam gosterme
- Yukleme cubugu veya spinner ekleme
- Yasal uyari metni gosterme
- Splash screen'i kasitli olarak geciktirme (minimum sure bekleme)
Onbellekleme Sorunu
iOS launch screen'i agresif sekilde onbellekler. Degisiklik yaptiginda gozukmuyorsa:
- Uygulamayi cihazdan tamamen sil
- Xcode'da Clean Build Folder yap
- Derived Data klasorunu temizle
Bu iOS'un bilinen bir davranisi ve gelistiricileri en cok zorlayan konulardan biri.
Android 12+ SplashScreen API
Android 12 ile birlikte sistem seviyesinde bir SplashScreen API geldi. Eski yontemler (tema ile splash, bos Activity) artik gereksiz.
Nasil Calisir?
- Sistem otomatik olarak uygulama ikonunu splash screen'de gosterir
- windowSplashScreenBackground ile arka plan rengi ayarlanir
- windowSplashScreenAnimatedIcon ile animasyonlu ikon kullanilabilir (max 1000ms)
- windowSplashScreenBrandingImage ile alt kisma marka gorseli eklenebilir
Önemli Detaylar
- Android 12 oncesi cihazlarda SplashScreen compat kutuphanesi kullanilmali (androidx.core.splashscreen)
- Splash screen suresi kontrol edilemez, sistem yukleme durumuna gore kapatir
- installSplashScreen() ile Activity'de baslangic kodu calisana kadar splash'i açık tutabilirsin
Animated Splash Screen
Statik splash screen'den sonra kisa bir animasyonlu gecis uygulamanin profesyonel gorunmesini saglar.
Lottie ile Animasyon
- Lottie (lottie-react-native veya lottie-ios/lottie-android) en yaygin cozum
- After Effects'te tasarla, JSON olarak export et
- Dosya boyutu küçük, performans yuksek
- 1-3 saniye araliginda tut, kullaniciyi bekleme
Uygulama Stratejisi
- Sistem splash screen'i gosterir (statik, hizli)
- Uygulama acilinca animasyonlu bir gecis ekrani gosterilir
- Bu sirada font'lar yuklenir, API cagrilari yapilir, auth kontrol edilir
- Hazir oldugunda ana ekrana gecis yapilir
Animasyonlu splash, kullaniciya "uygulama calisiyor" hissi verir. Ama 3 saniyeden uzun tutma, sabir tukenir.
Cold Start vs Warm Start
Cold Start
- Uygulama bellekte yok, sifirdan baslatiliyor
- Isletim sistemi process olusturur
- Tum initialization kodu calisir (dependency injection, DB baglantisi, vb.)
- En yavas baslangic tipi (1-5 saniye arasi normal)
Warm Start
- Uygulama arka planda duruyor, kullanici geri donuyor
- Process bellekte, sadece Activity/ViewController yeniden olusturuluyor
- Cok daha hizli (genellikle 0.5 saniyenin altinda)
Hot Start
- En hizli durum
- Activity/ViewController hala bellekte
- Sadece on plana getiriliyor
Algilanan Performans
Gerçek yukleme suresi kadar kullanicinin algiladigi sure de önemli:
- Splash screen'de marka gorseli gostermek beklemeyi "anlamli" kilar
- Skeleton screen kullanmak icerik yukleniyor hissi verir
- Progressive loading ile once yapi, sonra icerik yukle
- Animasyon kullanicinin dikkatini dagitiyor, bekleme hissi azaliyor
React Native / Expo Yapilandirmasi
Expo ile Splash Screen
- app.json veya app.config.js icinde splash alani ile ayarla
- splash.image: Gorsel dosya yolu (1284x2778 onerilir)
- splash.resizeMode: "contain" veya "cover"
- splash.backgroundColor: Arka plan rengi
- expo-splash-screen paketi ile SplashScreen.preventAutoHideAsync() cagir
- Veriler yuklenince SplashScreen.hideAsync() ile gizle
React Native (Bare)
- react-native-bootsplash onerilir (react-native-splash-screen artik bakimsiz)
- iOS'ta storyboard otomatik olusturur
- Android'de SplashScreen API uyumlu calisir
- npx react-native-bootsplash generate komutu ile gorsellerden otomatik uretim yapar
Yaygin Hatalar
| Hata | Sonuc |
|---|---|
| Splash screen'i 5+ saniye açık tutma | Kullanici uygulamayi kapatiyor |
| iOS'ta static image kullanma | App Store rejection |
| Android 12 SplashScreen API'yi ignore etme | Cift splash goruntuleniyor |
| Font/asset yuklemeyi splash'tan sonraya birakma | Icerik atlamalari oluyor |
| Splash'ta network istegi bekleme | Yavas baglantida uygulama kilitlenmis gorunuyor |
2026 Güncel Durum
- iOS'ta storyboard zorunlulugu devam ediyor
- Android 12+ SplashScreen API artik standart, eski yontemleri birak
- Expo SDK 52+ ile expo-splash-screen yapilandirmasi sadeleşti
- Animated splash icin Lottie hala en populer cozum
- Cold start optimizasyonu icin lazy initialization ve code splitting kritik
Splash screen bir bekleme ekrani degil, bir karsilama ekrani. Kisa tut, anlamli kilve kullaniciyi ana iceriklere hizla ulastir.