14 Developer Guide
What's New for Developers
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
Jay Ang and Beemo Lee from Carousell's iOS team shipped their first iOS 14 widget in 2020. Their biggest challenge? Two singleton instances fighting each other across app targets.
Building iOS 14 Widgets for Carousell - Part 1
Julia Maurer and Ha Pham from Carousell reveal how they shipped their iOS 14 widget in one sprint. Their secret? Starting with power users who open the app 300 times daily.
Recent Releases
All releases →
26.4
Feb 24, 2026
Release Notes →
26.3
Dec 17, 2025
Release Notes →
26.2
Oct 29, 2025
Release Notes →
26.1
Sep 29, 2025
Release Notes →
26
Sep 22, 2025
Release Notes →
18.6
Jul 21, 2025
Release Notes →
18.5
May 12, 2025
Release Notes →
18.4
Mar 31, 2025
Release Notes →
18.3
Jan 27, 2025
Release Notes →
18.2
Dec 11, 2024
Release Notes →
18.1
Oct 28, 2024
Release Notes →