Proje: Okul B2B App · Hub: Okul B2B App — Incidents
iOS Background/Kilit Ekranı SecureStore Auth Failure
Semptom
iOS’ta uygulama background’a alındıktan veya ekran kilitlendikten sonra aktive edildiğinde kullanıcı otomatik logout oluyordu. Kullanıcılar her gün yeniden giriş yapmak zorunda kalıyordu.
Root Cause
_layout.tsx’de 30 saniyede bir AuthService.isAuthenticatedAsync() çağrılıyordu. iOS ekran kilitli/background durumunda expo-secure-store okuma işlemi hata fırlatıyordu. Bu hata logout tetikliyordu.
Çözüm
// Auth check sadece ACTIVE durumda çalışır
if (appStateRef.current !== 'active') {
logger.info('Skipping auth check - app not active');
return;
}AppState dinleyicisi ile 'active' olmayan durumlarda SecureStore kontrolü tamamen atlandı. Hata durumunda logout YAPILMAZ — sadece explicit API 401 cevabı logout tetiklemeli.
Ders
- SecureStore kilit ekranında / background’da geçici olarak erişilemez olabilir
- SecureStore okuma hatası ≠ token geçersiz → logout yapma
- Auth check interval’i sadece
AppState.currentState === 'active'iken çalıştır - Logout sadece: explicit 401 API yanıtı veya kullanıcı isteği
Related
- auth-akisi — auth lifecycle