14
What's New
iOS 14 significantly expands SwiftUI capabilities with Menu, Commands, and improved file handling, while enhancing health tracking with mobility metrics and ECG data. Critical breaking changes affect configuration profile fonts, widget compatibility, and KVO behavior, requiring developer attention for proper migration and testing.
Highlights
- SwiftUI gains Menu, KeyboardShortcut, Commands support on iOS with improved file import/export modifiers
- StoreKit adds SKOverlay for in-app app downloads and enhanced subscription management in sandbox
- HealthKit introduces mobility metrics tracking and HKElectrocardiogram voltage data reading from Apple Watch
- AVAudioSession enables stereo polar pattern requests from built-in microphone with orientation specification
- Core ML model initialization deprecated in favor of init(configuration:) and new .load() method
- Key-Value Observation now provides deterministic error detection with automatic NSKeyValueObservation invalidation
- Safari adds experimental HTTP/3 support and webpage translation for 7 languages in US and Canada
Breaking Changes
- Fonts installed via configuration profiles only accessible to apps supporting iOS 13+ font APIs and entitlements
- fstab removed; filesystem contents outside app sandbox no longer available for validation
- All widgets must rebuild using iOS 14 beta 4 SDK or later; incompatible with previous beta versions
- SKPaymentQueue.presentCodeRedemptionSheet() should not be called until supported codes can be created
- CHHapticEngine via GameController framework does not support CHHapticAdvancedPatternPlayer; audio events silently ignored
- User data sync (Favorites, Collections, Recents) discontinued between iOS 14 beta 2+ and earlier versions
- GeometryReader now reliably top-leading aligns views; rebuilding against iOS 14 SDK changes previous behavior
Deprecations
- VNIdentifiedPointsObservation class deprecated; use VNRecognizedPointsObservation instead
- Core ML default initializer deprecated; use init(configuration:) or .load() method
- Font.custom(_:size:) now scales with dynamic type; use Font.custom(_:fixedSize:) for fixed sizing
Related Articles
Building iOS 14 Widgets for Carousell - Part 2
Continuation of iOS 14 widget implementation, covering advanced development techniques and optimization.
Building iOS 14 Widgets for Carousell - Part 1
Technical guide on implementing iOS 14 widgets, covering mobile development best practices and architecture.