watchOS Code Review
Quick Reference
Issue Type Reference
App lifecycle, scenes, background modes, extended runtime references/lifecycle.md
ClockKit, WidgetKit, timeline providers, Smart Stack references/complications.md
WCSession, message passing, file transfer, reachability references/connectivity.md
Memory limits, background refresh, battery optimization references/performance.md
Review Checklist
-
SwiftUI App protocol used with @WKApplicationDelegateAdaptor for lifecycle events
-
scenePhase read from root view (not sheets/modals where it's always .active )
-
WKExtendedRuntimeSession started only while app is active (not from background)
-
Workout sessions recovered in applicationDidFinishLaunching (not just delegate)
-
Background tasks scheduled at least 5 minutes apart; next scheduled before completing current
-
URLSessionDownloadTask (not DataTask ) used for background network requests
-
WidgetKit used instead of ClockKit for watchOS 9+ complications
-
Timeline includes future entries (not just current state); gaps avoided
-
TimelineEntryRelevance implemented for Smart Stack prioritization
-
WCSession delegate set before activate() ; singleton pattern used
-
isReachable checked before sendMessage ; transferUserInfo for critical data
-
Received files moved synchronously before delegate callback returns
When to Load References
-
Reviewing app lifecycle, background modes, or extended sessions -> lifecycle.md
-
Reviewing complications, widgets, or timeline providers -> complications.md
-
Reviewing WCSession, iPhone-Watch communication -> connectivity.md
-
Reviewing memory, battery, or performance issues -> performance.md
Review Questions
-
Is the app using modern SwiftUI lifecycle with delegate adaptor?
-
Are background tasks completing properly (calling setTaskCompletedWithSnapshot )?
-
Is UI update frequency reduced when isLuminanceReduced is true?
-
Are WatchConnectivity delegate callbacks dispatching to main thread?
-
Is TabView nested within another TabView ? (Memory leak on watchOS)