iOS App Lifecycle Standards
Priority: P0
Implementation Guidelines
App & Scene Delegate
- SceneDelegate: Use for UI windows and scene-specific state in iOS 13+.
- AppDelegate: Focus on app-wide setup (DI, Analytics, Push notification registration).
- Slim Delegates: Move initialization logic to dedicated
BootstrapperorAppCoordinator.
Deep Linking
- Universal Links: Prefer over custom URL schemes. Handle via
scene(_:continue:userActivity:). - Handling logic: Routing should be handled by the Root Coordinator to navigate to specific screens.
Background Tasks
- Background Fetch: Use
BGTaskSchedulerfor periodically refreshing data. - Expiration: Handle
expirationHandlerto avoid app kill by the system.
Anti-Patterns
- No complex logic in didFinishLaunching: Use a Bootstrapper service.
- No UIWindow setup in AppDelegate: Use SceneDelegate for iOS 13+.
- No synchronous network calls in launch: Move to background thread.
References
- Lifecycle & Background Tasks