Overview
The iOS & iPadOS 14 SDK provides support to develop apps for iPhone, iPad, and iPod touch devices running iOS & iPadOS 14. The SDK comes bundled with Xcode 12, available from Beta Software Downloads. For information on the compatibility requirements for Xcode 12, see doc://com.apple.documentation/documentation/xcode-release-notes/xcode-12-beta-release-notes.
General
Known Issues
macOS Big Sur 11 beta 6 or Xcode 12 might be required to sync or update devices running iOS & iPadOS 14 or later.
macOS Big Sur 11 beta 6 is required to use the restore images for iOS & iPadOS 14 or later.
App Clips
New Features
You can now use Settings > Developer Settings to test an App Clip card. (64787288)
App Store
Known Issues
Avoid calling the
present
API until you’re able to create supported codes. (59351258)Code Redemption Sheet()
New Features
SKOverlay
enables downloading an app without having to leave the current app. The overlay can also be tapped to view the app in the App Store. In an App Clip,SKOverlay
enables users to download the corresponding full app from within the App Clip. (56886149)You can now manage subscriptions, test upgrades, downgrades, and cancellations, as well as reset the introductory offer eligibility for a test account, by tapping on your sandbox account in Settings. (57248908)
The
user
parameter can now be passed to Account Authentication Modification Extensions during in-app upgrades. (64128404)Info
AVFoundation
New Features
A new feature in
AVAudio
allows clients to request stereo polar patterns from the built-in mic. Clients choosing a stereo polar pattern must call a new method ofSession AVAudio
to specify the stereo input orientation. For more information, seeSession AVAudio
(58584572)Session
Core Haptics
Known Issues
CHHaptic
vended through the Game Controller framework (Engine GCDevice
) don’t supportHaptics CHHaptic
and an error is returned on advanced player creation.Advanced Pattern Player audio
andCustom audio
events sent toContinuous CHHaptic
vended through the Game Controller framework (Engine GCDevice
) are silently ignored. (65163373)Haptics The creation of
CHHaptic
via class initializers is available only in iOS. For other platforms, access these engines viaEngine GCController
. (65481931)
Core ML
Deprecations
The default initializer on the auto-generated model interface has been deprecated in favor of
init(configuration:)
. Useinit(configuration:)
or the newly introduced.load()
method and handle model load errors as appropriate. (64432588)
Fonts
Known Issues
Beginning in iOS & iPadOS 14, fonts installed using configuration profiles are only available to apps supporting the font APIs and entitlements introduced in iOS & iPadOS 13. If your app provides a custom font-selection interface, it can no longer access fonts installed via configuration profiles. For reference, see the WWDC 2019 Session Font Management and Text Scaling (55317428)
HealthKit
New Features
New data types are available to track mobility metrics including walking speed, step length, double-support percentage, and more. (56387364)
HKElectrocardiogram
enables reading electrocardiogram voltage data and classifications recorded by Apple Watch. (56396806)
Home Screen
Known Issues
Spotlight might not appear as expected. (64121178)
Workaround: Restart your device.
Key-Value Observing
New Features
Key-Value Observation removal facilities now employ deterministic bookkeeping methods. Cases that would have produced hard-to-diagnose crashes, especially those where KVO signals problems accessing deallocated observer pointers or observers associated with incorrect objects, now produce an exception that pinpoints which observed object needs a missed
remove
call, and by which observers. This exception was previously thrown as ‘best effort’ when KVO could detect the problem; the new deterministic bookkeeping allows it to be thrown for all cases whereObserver(_:) remove
is needed.Observer(_:) The improved determinism also allows improved Swift API handling. Instances of
NSKey
, produced by the SwiftValue Observation NSObject
method, take advantage of integration with this bookkeeping so they now invalidate automatically when the observed object is released, regardless of how the object implements its KVO behavior. This applies to all usage of this API in macOS 11 Big Sur beta, including on processes built with previous versions of the SDK, and eliminates certain classes of crashes that sometimes required using the legacy API instead. (65051563).observe(_: change Handler:)
Localization
New Features
Three Simplified Chinese Wubi input methods are now supported: Wubi 86, Wubi 98, and Wubi New Century. (56277474)
QuickPath now supports swiping English words on the Simplified Chinese Pinyin keyboard. (56314466)
Typing numbers using the Japanese Kana keyboard has been significantly enhanced. (56285976)
CarPlay keyboard support has been added for over 100 additional languages. (56791047)
Irish Gaelic and Norwegian Nynorsk keyboards now support Auto-Correction. (53156919, 48183197)
Logging
New Features
New APIs are available for using
os
from Swift as part of the framework_log os
:A new type,
Logger
, can be instantiated using a subsystem and category and provides methods for logging at different levels (Logger
,.debug Logger
,.error Logger
)..fault The
Logger
APIs support specifying most formatting and privacy options supported by legacy Logging APIs.The new APIs provide significant performance improvements over the legacy APIs.
You can now pass Swift string interpolation to the
os
function._log
Note: The new APIs can’t be back deployed; however, the existing
os
API remains available for back deployment. (22539144)_log
Maps
Known Issues
After updating to iOS & iPadOS 14 beta 2 or later, user data, such as Favorites, Collections, and Recents no longer syncs with devices running earlier versions of iOS & iPadOS. (65005848)
Networking
New Features
Experimental HTTP/3 support can be enabled in Safari Settings > Advanced > Experimental Features, and enabled system-wide in Developer settings. (62969220)
RealityKit
New Features
To properly render an augmented reality
Scene
with the post-processing effects available in RealityKit, the pipeline now writes depth information when rendering translucent materials. This makes the order that meshes are drawn more impactful for the final image. To properly author content for this pipeline, break up big meshes into smaller parts, especially when the meshes are intertwined. (66535399)
Siri
New Features
You can use INMedia
, Core Spotlight, and Intents to improve media interactions and App Selection. For more information, see Improving Siri Media Interactions and App Selection. (67026608)
Safari and WebKit
New Features
Webpage Translation is now available in the U.S. and Canada. Supported languages include English, Spanish, Simplified Chinese, French, German, Russian, and Brazilian Portuguese. Safari will automatically detect if translation is available based on your Preferred Languages list. (64437861)
SwiftUI
Known Issues
The
Keyboard
modifier andShortcut commands(content:)
aren’t currently functional. (65704705)Rebuilding against the iOS 14 SDK will modify instances of
custom(_:
to scale with dynamic type. To create a font which doesn’t scale with dynamic type, usesize:) custom(_:
. (51463566)fixed Size:) The
Sign
view expands to fill its container. (64136568)In With Apple Button Workaround: Apply a frame modifier.
New Features
body
is now implicitly aView
andBuilder body
is now implicitly aScene
. (63606493)Builder Color
can be converted to and fromCGColor
. TheColor
can also now be configured with a binding to aPicker CGColor
. (56939085)Introduced
Toolbar
as a convenient way to place multiple items in a specific location of non-customizable toolbars. (64178863)Item Group Progress
now supports adding a secondary “current value label” that describes the current progress level of the task. Use theView label
to describe the overall task, and theProgress
to provide more specific details about the progress of the task. (63580200)View Style Configuration .Current Value Label File
andDocument Reference
have updated protocol requirements:File Document Their initializer requirement now has a single
File
parameter that theDocument Read Configuration file
andWrapper content
can be read from.Type Their
write()
functions that were expected to write to an inoutFile
parameter are nowWrapper file
functions that return aWrapper() File
instead.Wrapper The document-based app templates in Xcode have been updated to reflect this change in API.
Source compatibility with the previous requirements will eventually be removed. (65146043)
Keyboard
andShortcut Commands
are now available on iOS & iPadOS. (62614998)Image
is now redacted when theredacted(reason:)
modifier is applied. (65047189)Inline
is now available and allows aPicker Style Picker
to appear in-line with the rest of the content in its surrounding container. The style will adapt its appearance for different containers and platforms, such as individual menu items in a menu. (59868844)Menu
is now available and allows aPicker Style Picker
to present its options within a menu. This style will display its options within a submenu when thePicker
is nested within aMenu
,Context
, orMenu Command
. (65515392)Menu List
may now be used withScroll
. (35471164)View Reader Text
gains a new initializer accepting aFormatter
. (63641785)Menu
is now supported on iOS & iPadOS and can be used to create a button that shows a menu as its primary action. (59725999)A new redaction reason API for applying placeholder
Text
treatment is now available. (63288447)The
Import
andFiles Action Export
APIs have been replaced with a collection of new view modifiers.Files Action Use the new
.file
modifier to present a system interface for importing one or more files into your app, and the newImporter() .file
modifier to move one or more existing files to a new location. The following is an example of a simple UI for importing and moving files:Mover() struct FileMover : View { @Binding var selectedFiles: [URL] var includeDirectories: Bool = false @State private var isImporting: Bool = false @State private var isMovingSelection: Bool = false var body: some View { List(selectedFiles, id: \.self) { url in Text(url.absoluteString) } .toolbar { Button("Import", action: { isImporting = true }) Button("Move", action: { isMovingSelection = true }) } .fileImporter( isPresented: $isImporting, allowedContentTypes: includeDirectories ? [.item, .directory] : [.item], allowsMultipleSelection: true ) { result in do { selectedFiles = try result.get() } catch { // Handle failure. } } .fileMover(isPresented: $isMovingSelection, files: selectedFiles) { if case .success = $0 { selectedFiles = [] } else { // Handle failure. } } } }
Use the new
.file
modifier to present a system interface for exporting one or more documents from your app. In this example, an app provides a simple note-taking interface for quickly jotting down some text and then exporting it to disk:Exporter() struct QuickNote : View { @Binding var draft: QuickNoteDocument @State private var isExporting: Bool = false var body: some View { TextEditor(text: $draft.text) .toolbar { Button("Save", action: { isExporting = true }) } .fileExporter( isPresented: $isExporting, document: draft, contentType: .plainText, defaultFilename: "MyNote" ) { result in // Clear the draft now that it's saved. if case .success = result { draft.text = "" } else { // Handle failure. } } } } struct QuickNoteDocument : FileDocument { static var readableContentTypes: [UTType] { [.plainText] } var text: String init(text: String) { self.text = text } init(configuration: ReadConfiguration) throws { // Deserialize the document. } func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper { // Serialize the document. } }
Use the new
.file
modifier to present a system interface for moving one or more existing files to a new location. (66182201)Mover()
Resolved Issues
Rebuilding against the iOS 14 SDK will change uses of
Geometry
to reliably top-leading align the views inside theReader Geometry
. This was the previous behavior, except when it was not possible to detect a single static view inside theReader Geometry
. (59722992)Reader
Third-Party Apps
Known Issues
Apps using JSONKit might quit unexpectedly on launch. Some forks of JSONKit hardcode private, pointer-representation details, which are subject to change. (60290929)
Workaround: Use
NSJSONSerialization
instead.fstab
has been removed. You can no longer use Filesystem contents outside of an app’s sandbox for validation. (61098152)Apps using the NativeScript framework might quit unexpectedly on launch. NativeScript performs an unsafe operation to determine if an arbitrary pointer is an Objective-C object pointer. You can temporarily resolve this issue by using
object
instead of reading the_get Class(_:) isa
directly; however, update this code to avoid checking whether arbitrary pointers are Objective-C object pointers. (62913064)
Vision
Deprecations
The
VNIdentified
class is deprecated. UsePoints Observation VNRecognized
instances instead. (63690311)Points Observation
Voice Control
New Features
Voice Control is now available in English (United Kingdom) and English (India). (55904557)
Wallet
Known Issues
is
doesn’t ensure uniform availability of pass library functionality between platforms and devices. (60697880)Pass Library Available() Workaround: Call a more specific API to check available functionality, such as
can
.Add Passes()
New Features
Apple Pay support is now available to Mac Catalyst apps. Two methods have been added to existing delegate protocols. No changes are required for iPad apps, but one or both of these methods must be implemented when building for Catalyst. (64187739)
The first method is an addition to the
PKPayment
protocol:Authorization Controller Delegate presentation
. This method is required for Catalyst when usingWindow For Payment Authorization Controller: PKPayment
, becauseAuthorization Controller PKPayment
, unlikeAuthorization Controller PKPayment
, doesn’t have knowledge of the window requesting presentation of the payment sheet. Pass back theAuthorization View Controller UIWindow
instance displaying the UI requesting the payment, for example,My
. This method is marked as required when building for Catalyst, but is otherwise optional.View Controller .view .window The second method depends on whether you’re using
PKPayment
orAuthorization Controller PKPayment
. ForAuthorization View Controller PKPayment
, useAuthorization Controller Delegate payment
. ForAuthorization Controller(_: did Request Merchant Session Update:) PKPayment
, useAuthorization View Controller Delegate payment
.Authorization View Controller(_: did Request Merchant Session Update:)
This method must be implemented to request a merchant session via your server, and return it via the handler. This mirrors the security model used in WebKit, and replaces listing merchant IDs in the app’s Apple Pay entitlements. This method in turn uses the following class to send back results:
API_AVAILABLE(macos(10.16), ios(14.0), watchos(7.0)) @interface PKPaymentRequestMerchantSessionUpdate : NSObject - (instancetype)initWithStatus:(PKPaymentAuthorizationStatus)status merchantSession:(nullable PKPaymentMerchantSession *)session; @property (nonatomic, assign) PKPaymentAuthorizationStatus status; @property (nullable, nonatomic, strong) PKPaymentMerchantSession *session; @end
Weather
New Features
Government alerts about certain severe weather events including tornados, winter storms, flash floods, and more are now available in the U.S., Europe, Japan, Canada, and Australia. (58931042)
Widgets
Known Issues
When the parent app of a widget has been granted Selected Photos access, an alert might appear each time the widget runs. (66398732)
Workaround: Add
PHPhoto
to the Info.plist of the widget extension.Library Prevent Automatic Limited Access Alert = YES All widgets must be rebuilt using the iOS & iPadOS 14 beta 4 SDK or later, and won’t run on previous versions of iOS & iPadOS 14 beta. (65290210)
Some widgets might disappear from your Home Screen after updating to iOS & iPadOS 14 beta 2 or later. (64823469)
Workaround: Add the missing widgets back to your Home Screen.
You can’t resize an existing widget. (63500799)
Workaround: Remove the widget and re-add it at the desired size.
You might need to reconfigure your widgets after updating to iOS & iPadOS 14 Beta 3 or later. (65485709)
The Weather widget might appear blank after updating to iOS 14 beta 6 or later. (66782070)
Workaround: Tap the widget to open the Weather app, then return to the widget on the Home screen.