WWDC 2019 was definitely the biggest event in the last few years. I was in the audience when Swift was announced in 2014, but I can say that this year is probably bigger than WWDC 2014. Given the many changes across frameworks, OSes, developers tools and web services that Apple offers, many interesting minor long-awaited improvements may have gone unnoticed. I tried to collect some of the announcements that may have been shadowed by the bigger announcements in a single and short post. Every item has an associated source or link where you can learn more about it.
I am planning to keep this list up to date over the next few weeks as a personal reference, so feel free to send me anything you discover. I hope you enjoy the list!
New Frameworks
PencilKit
is a new framework that allows capturing touch input as an opaque drawing and display that content from your app. Apple DocumentationRealityKit
is a new framework that allows simulation and rendering of 3D content for use in your augmented reality apps. Apple DocumentationBackgroundTasks
is a new framework that can be used to request the system to launch your app in the background to run tasks. Apple DocumentationQuickLookThumbnailing
is a new framework that can be used to provide quick look thumbnails for custom file types provided by your app. Apple DocumentationCombine
is a new framework for handling of asynchronous events by combining event-processing operators. Apple DocumentationCore Audio Types
is a new framework that uses specialized data types to interact with audio streams, complex buffers, and audiovisual timestamps. Apple DocumentationCore Haptics
is a new framework that allows composing and playing haptic patterns to customize your iOS app’s haptic feedback. Apple DocumentationSoundAnalysis
is a new framework that allows the analysis of streamed and file-based audio to classify it as a particular type. Apple DocumentationVisionKit
is a new framework that allows developers to implement a camera scanning documents feature like the one available in the stock Notes app. Apple DocumentationMaps Web Snapshots
is a new web service that allows the creation of a static image of a map from a URL. Apple Documentation, @vickimurleyCryptoKit
is a new framework that performs cryptographic operations securely and efficiently. Apple DocumentationMD5
andSHA1
are classified as insecure and are only provided for backward compatibility services that require them. @vixentael
MetricKit
is a new framework that allows aggregation and analysis per-device reports on power and performance metrics. Apple DocumentationDriverKit
is a new framework that allows developing device drivers that run in user space. Apple DocumentationEndpointSecurity
is a new framework that allows developing system extensions that enhance user security. Apple DocumentationSystemExtensions
is a new framework that allows to install and manage user-space code that extends the capabilities of macOS. Apple DocumentationUSBDriverKit
is a new framework that allows to develop drivers for USB-based devices. Apple DocumentationUSBSerialDriverKit
is a new framework that allows to develop drivers for serial IO devices connected to your Mac. Apple DocumentationHIDDriverKit
is a new framework that allows to develop drivers for devices that users interact with. Apple Documentation- There are some more new frameworks without documentation: LinkPresentation, IOUSBHost, Logging, NetworkingDriverKit, ExecutionPolicy and WiFi.
iOS
- The default presentation modal animation is a card-like design. Modals are dismissable interactively by default (which may break some apps), but you can set
isModalInPresentation
to false to disable this behavior. @hansemannnn UISegmentedControl
andUIStepper
have an updated design. @hansemannnn- Apps are to request “Always” access to the device location but users will see an alert when an app tries to access the location from the background that prompts them to “Always Allow” or to “Change to Only While Using”. Users are also presented with a map clearly showing that the app was tracking the location. In this way, users are not forced to take a decision upfront when installing the app for example. quicklywilliam
- Apple sign-in is going to be mandatory for apps that support third-party sign-in when it is commercially available later this year (presumably after both macOS 10.15 Catalina and iOS 13 ship publicly). Apple Documentation
- Safari now has a download manager. Users can specify the destination in the Settings (even USB drives are supported!). @stroughtonsmith
- Starting next spring, it will be an App Store requirement for apps to adopt to different screen sizes (such as supporting Multitasking on the iPad). @steipete
- The share sheet has been completely redesigned and seems to be smarted and have more context about what the user wants to do based on the content type it is presented with. @Swanros
UIImage
has a new initializer,UIImage(systemName:)
that takes a string and returns one of over 1500 different system icons. @twostraws- The 3D Touch APIs such as peek & pop have been updated with a new
UIContextMenuInteraction
API. This is in contrast with previous rumours about 3D Touch not being present on future iOS devices. @bhansmeyer - iOS 13 has some major updated APIs to manage and diff datasource. A new block-based APIs has also been added if you don’t like delegates. @smileyborg
- A new “Low Data” mode has been added to avoid running out of data when you’re on a roaming plan for example. This feature is also available under Wi-Fi. @daytonlowell
- iOS 13 raises the limit of apps downloadable via cellular to 200 MB, but this limit can be removed by the user in the Settings. @steipete
UIViewController
subclasses can now be initialized from a Storyboard and be passed additional context and arguments (required for dependency injection). @kharrison- Similar improvements have been made to
UIStoryboardSegue
with the new@IBSegueAction
modifier. You can pass additional context and parameters directly to the next segue view controller that should be initialized. @jnadeau - Sharing photos on iOS 13 has the option to include the original info such as depth map and other sensitive data. @_HarshilShah
- A new
UICollectionViewDiffableDataSource
class has been added to UIKit to make it easier to manage diffable data sources inUICollectionView
(insert, update and remove actions). @_ryannystrom - A new
UICollectionViewCompositionalLayout
class has been added to UIKit to make it easier to create compositional layouts without requiring a customUICollectionViewLayout
. @MarvinNazari - iOS 13 supports scroll view scrubbing. Simply drag the scrolling indicator to to fly through a long document. @bzamayo
- The mute indicator on iOS 13 has been completely redesigned to match the Apple Pencil charging indicator seen previously on the iPad. @MikeBeas
- Users can now change each app’s language independently from the system language in the Settings app, no change is required by developers. @frederikRiedel
- iOS now supports multiple windows of your app running simultaneously, and there are new APIs such as
UIScene
andUISceneConfiguration
in order to coordinate them. @stroughtonsmith - NFC is getting a lot more powerful in iOS 13, allowing developers to read new type of NFC tags and many new features. @imlxgr, gototags
- iOS 13 has a new
_visualRecursiveDescription
private API that can construct a visual representation of a view hierarchy. Very useful for debugging in LLDB. @steipete - iOS apps using the File Management APIs can now be granted read/write access to an entire folder, rather than just a file. @stroughtonsmith
- iOS 13 now supports strictly silencing unknown callers. @JuanArreguin
- Apps can now be removed from the App Store Updates page by simply swiping left on an app. @chrisvega
- iOS 13 allows apps to take full content screenshots in a PDF format. @qdoug
- iMessage will have full blown App Store managed through App Store Connect with full TestFlight capabilities. @ott_max
- iOS 13 now shows a map of where apps have been tracking you when requesting permission. @9to5mac
- In iOS 13, a new method on
UIImageAsset
namedregisterImage:withTraitCollection
can be used to create dynamic images (that switch in light/dark mode) programmatically. @timonus - The
UITableViewStyle
enum gained a new publicUITableViewStyleInsetGrouped
case that can be used to create grouped style table views as seen in some of Apple’s stock apps. @ian_mcdowell - iOS 13 has new toast-bar-like tips integrated into apps like iMessage to teach users new actions. @kylebshr
- Safari can now auto-close tabs based on when you last viewed them (one day, one week or one month). @MacRumors
Xcode
XCFrameworks
make it possible to bundle a binary framework or library for multiple platforms —including iOS devices, iOS simulators, and UIKit for Mac — into a single distributable.xcframework
bundle that your developers can use within their own applications. This should remove the need to uselipo
to create a fat binary. @KamilPyc- Xcode added a new minimap to get an overview of a source code file. Holding command (⌘) reveals more details and allows to navigate source files easily. @_eliperkins
- You can now manage much of the Swift Package Manager workflow directly in Xcode, such as adding Swift packages to an existing iOS project. @cocoawithlove
- SwiftUI in Xcode 11 and macOS 10.15 uses a new feature of Swift called “dynamic replacement”. This is similar to how swizzling works in Objective-C, and is needed to avoid recompiling the whole app when changing just one color or font size for example. @jckarter
- SwiftUI is currently missing an implementation for
UISplitViewController
which is coming in a later seed. An API to build forms is also rumored to be released in a later beta. @OhItsShaun - With Xcode 11, you can share and open result bundles (.xcresult files) which contain things like tests, code coverage and logs. You can also fully parse them with the new
xcresulttool
from custom tooling. @czechboy0 - watchOS 6 and Xcode 11 still don’t have
XCTest
support. @simjp - Clang has a new mode -Oz that optimizes your code for size. It reduces code size by identifying identical code sequences across functions. @steipete
XCTUnwrap
is a new API inXCTest
that is equivalent to asserting that an object is not nil and doesn’t throw an error. @zntfdr- In Xcode 11, Interface Builder has some great new icons, especially for NSView and NSControl objects. @thequinntaylor
- You can command-click on Swift operators to use Quick Help and Jump to Definition. @olebegemann
- Xcode 11 has a new “Environment Override” in Storyboard files that allow much faster live accessibility testing. @alexiscreuzot
- Application Loader is no longer bundled with Xcode 11. A new native app called Transporter for submission of .itmsp, .ipa and .pkg files is going to be available. @ott_max
- Xcode now shows an inline diff for all your changes. A new redesigned panel workflow is also present, alogn with some new major features like XCTestPlans, live previews for Stooryboards and UIKit components, the Simulator running on GPU with Metal and condition inducers to test your apps in extreme temperature conditions. @edwardsanchez
macOS
- Holding down option when mousing over the full-screen button reveals some interesting options. @BalestraPatrick
- AppKit got some love this year by adding a new
NSSwitch
UI element. @jnadeau - In the 10.15 SDK, all of AppKit’s ivars were removed from headers. The ivars that were previously @public have linker symbols exported for compatibility, but you’ll hit build errors with the new SDK if you reference them. @jnadeau
- Signing documents with Preview now supports using an iOS device to draw a signature. This is a great improvement since the experience of drawing on a trackpad has always been suboptimal compared to an iOS device touch screen. @MacRumors
Swift
- GitHub already announced that they will be adding support for Swift packages to the GitHub Package Registry. What this means for our everyday use is still unclear, but possibly it could be help with indexing all Swift packages in a better way. @github
- Some of the new features in SwiftUI required changes in the language that did not go through the normal review process. This may be suprising at first but an explanation can be found in the following Swift Forums post.
SwiftUI
usesSwiftSyntax
when you command + click to inspect and modify an element. If you’ve contributed to its open-source version, you can probably brag about your code running inside Xcode now. High five! @akyrtzi
Other
- The developer portal used to manage certificates, identifiers and profiles has been updated with a fresh design that matches App Store Connect. @BalestraPatrick
- An update to the App Store Review Guidelines has been published with two important changes:
- Apps intended for kids cannot include third-party advertising or analytics software and may not transmit data to third parties.
- Because MDM provides access to sensitive data, MDM apps must request the mobile device management capability, and may only be offered by commercial enterprises, such as business organizations, educational institutions, or government agencies, and, in limited cases, companies utilizing MDM for parental controls. MDM apps may not sell, use, or disclose to third parties any data for any purpose, and must commit to this in their privacy policy. (referring to apps that abused MDM for Screen Time-like features)
- Sign In with Apple will be available for beta testing this summer. It will be required as an option for users in apps that support third-party sign-in when it is commercially available later this year.
- TestFlight users are automatically presented with a “What’s New” screen when updating to a newer build. No change is required from developers. @MikeBeas
- When a user takes a screenshot in an app being tested via TestFlight, a new composer will automatically pop up and allow to send a quick feedback to the developer (Instabug sherlocked). @_eliperkins
- iPadOS is just a marketing name to make everything more confusing. It’s still iOS, and even the docs don’t mention iPadOS has a separate platform at the moment. @_inside
- Radar is now Feedback Assistant for external developers. Apple seem to have listened the many complaints about the closeness and the black hole that radar is for external developers, and it has moved its feedback system to a brand new tool (all existing radars have been migrated to the new system). Feedback numbers have a different format too and they look like FB12345678. Apple now tells you how and why a radar was closed. Duplicates are now referred to as similar issues, and it will actually tell you if a fix has been shipped. @steipete, @kylesethgray
- macOS 10.15 uses zsh as the default shell. Some of your scripts may be completely broken on macOS Catalina when creating new users with zsh as the default shell, so keep that in mind. The reason for this change is rumoured to be related to the fact that Apple is trying to remove all GPL-licensed code from macOS. @davedelong
- The public App Store Connect API announced at WWDC 2019 to manage provisioning has been finally released. You can create Bundle IDs, Capabilities, Certificates, Devices and Profiles. @BalestraPatrick
- Two new classes that should make it easier to convert dates have been added to Foundation:
ListFormatter
andRelativeTimeFormatter
. @olebegemann - SF Symbols is a new framework that contains over 1,500 consistent, highly configurable symbols you can use in your iOS app. You can also create your own symbols by providing SVG files. A companion app to test all symbols on various devices is also available for download. @kevgski
- IMDF (Indoor Mapping Data Format) is a new concept introduced by Apple that provides a generalized, yet comprehensive model for any indoor location, providing a basis for orientation, navigation and discovery. @ortwingentz
- Apple decreased the number of legal text an app that provides subscriptions has to show to the user. Only the title, length and price of the subscription is required to be shown on every paywall. @jeiting, @macguru17
- App Store Connect will soon get a near real time sales view showing you the last 24 hours. @lesmond
- App deletions statistics will also be available as part of App Analytics in App Store Connect. @ilyakuh
- The
Photos
framework on the Mac has now pretty much the same feature availability as iOS. @toco91 NSListFormatter
is a new API in Foundation that makes it easier to format a list of items for the user’s locale. @qdoug
Funny
- iOS 9999 is not a thing unfortunately. @slava_pestov