New stuff from WWDC 2017

Kuba Suder 🇵🇱🇺🇦 July 5, 2017
Source

It’s that time of the year again - if you’re like me, you’ve probably spent a lot of time in the last few weeks following everything that’s been announced at WWDC, digging into release notes, watching WWDC talks and playing with some cool new stuff. And as usually, the amount of new things to process is pretty overwhelming.

So like in the last two years, I’ve prepared a nicely organized list for you of all the things I could find from various sources: all the user-facing features in macOS/iOS/watchOS/tvOS, and all new frameworks, APIs and improvements in their respective SDKs and Apple’s developer tools.

To get more info about any specific thing, follow the links above the sections to Apple’s developer site and the “What’s New” documentation, download the release notes from developer.apple.com, and of course use the freshly redesigned unofficial WWDC Mac app to watch the talks that you’re interested in.

If you want to catch up on last year’s notes (e.g. to see what you can use if you drop iOS 9 support in your app), check out these posts:

WWDC 2016 WWDC 2015

Quick links:

macOS 10.13 • iOS 11 • watchOS 4 • tvOS 11

Foundation & Core Frameworks • macOS 10.13 SDK • iOS 11 SDK • watchOS 4 SDK • tvOS 11 SDK

Developer Tools • Safari 11 • Other

macOS 10.13 High Sierra

🗄️ https://www.apple.com/macos/high-sierra/

Mail:

smart highlight of important emails split view for compose window uses less disk space

Messages: syncs conversations through iCloud between iOS/macOS (end-to-end encrypted) Notes:

pinning notes support for tables

Photos:

persistent sidebar shows all imports chronologically improved face recognition synchronizes people across devices curves and selective color edit tools more partners for printing photos more available topics for memories photos can be edited in 3rd party apps and are saved back into Photos app playing animated GIFs live photo effects

Safari:

video autoplay blocking intelligent tracking prevention per-site settings (e.g. enabling autoplay or disabling content blockers on some sites) automatic reader mode

Spotlight can find more kinds of web results, e.g. flight info, and can return multiple results from Wikipedia smoother, more natural sounding Siri voice window server (Mission Control etc.) is built on top of Metal 2 APFS is the new default filesystem for new installations H.265 (HEVC) video support, with hardware acceleration in newest Macs accessibility:

new on-screen accessibility keyboard Type to Siri (disables voice interface) voiceover descriptions of images will now include automatic description of the image contents and any detected text

iOS 11

🗄️ https://www.apple.com/ios/ios-11/

redesigned control center

single page, animations more controls shown with 3D Touch some areas can be customized allows you to toggle e.g. cellular data, hotspot, AirDrop

new design for app switcher:

new animation no longer shows the home screen as the first app

older notifications accessible from the lock screen (top notifications panel is now the same as lock screen) apps in the dock on the home screen no longer show their names updated design of passcode screen, phone app number entry screen and numeric keyboard tab bars now use slightly bolder text and filled glyphs in landscape mode, tab bars are narrower and show labels on the right new header design in various apps with large bold headings (like Music app in iOS 10) drag & drop with multi-touch support

in-app on iPhone, on iPad also between apps

Files app - like Finder on iOS, with tags, favorites, nested folders, cloud storage etc. (replaces iCloud Drive app) Apple Music:

shared “up next” showing what friends are listening to configuring your profile and what should be shared with others

App Store: completely redesigned app Calculator: new design Camera: QR code support Home: support for speakers (multi-room audio - AirPlay 2), sprinklers and faucets, pairing using NFC & QR codes Maps:

floor plans for malls and airports showing speed limit lane guidance one-handed zoom (like in Google Maps - double-tap + drag up/down) pseudo-AR flyover mode (source)

Messages:

redesigned app drawer Digital Touch moved to the app drawer automatically syncing conversations between iOS/macOS (end-to-end encrypted) Apple Pay for person-to-person payments new “Echo” and “Spotlight” screen effects option to automatically delete old conversations

Notes:

pinning notes locking notes from the list screen (swipe action) support for tables selecting lines/grid style (source) inline drawings

Photos:

more available topics for memories memories can play in portrait mode playing animated GIFs trimming live photos selecting key frame for live photos live photo effects: loops, bouncing, mute, long exposure live photos with loop or bounce can be shared as GIFs option to easily create a watch face (photo or kaleidoscope) from any photo on iOS videos are saved in HEVC format (up to 2x compression), photos in HEIF format based on HEVC (same) “Edit” button moved back to the top-right like on iOS 9

Podcasts: new design Safari:

intelligent tracking prevention “Experimental Features” menu in settings that enables some unfinished new APIs option to disable tracking prevention and camera/microphone access

Settings:

Background App Refresh can be set to only work on WiFi connection new “Accounts and passwords” panel (extracted from “Mail” and “Safari”) redesigned “Storage and iCloud Usage” panel (as “iPhone Storage”) merged “General/Spotlight Search” into “Siri” panel reorganized “Notifications” section you can now always choose “While Using” location permission for any app “Shut Down” button in General menu removed system-level social network logins (Twitter, Facebook etc.)

Siri:

smoother, more natural sounding voice multiple results, follow-up questions translation (beta) - English to French, German, Italian, Spanish, Chinese

Siri Intelligence:

more kinds of suggestions in more places knowledge about you is synced across devices (end-to-end encrypted)

TV app: Amazon Prime will be added later this year accessibility:

“Smart Invert” mode “Type to Siri” option (disables the voice interface) option to automatically answer calls voiceover descriptions of images will now include automatic description of the image contents and any detected text in extra large text modes, long-pressing a tab in the tab bar shows a popup with enlarged tab image & label

Do Not Disturb while driving - automatically detects driving and turns off notifications Emergency SOS feature (press power button 5 times and slide a slider) automatic setup of new iPhones from an existing device configuring custom actions for AirPods requesting WiFi password from other devices nearby logging in to WiFi by scanning a QR code built-in document scanner screen recording (accessed from the control center) creating PDFs in apps that support printing markup (drawing) on PDFs, screenshots and scanned documents after taking a screenshot, a thumbnail appears in the corner and you can tap it to edit it, add markup and share it new video playback controls bars instead of dots for cell signal one-handed keyboard option (with more narrow keys, leaving some empty space on one side) option to automatically remove less used apps and restore when needed health data can be synced to iCloud FLAC audio support (?) new icons for App Store, iTunes Store, Calculator, Contacts, Reminders and Notes App Store shows info pages for iPad and Mac apps (might be a bug?) App Store shows an ApplePay-style sheet when buying paid apps different animation when launching an app from the home screen different animation when unlocking the device links highlighted in notification text? (source) easier opening of notifications on non-3D-Touch devices? (source) drops support for iPhone 5 & 5c and iPad 4 drops support for old 32-bit apps

iPad only

redesigned app dock

more Mac-like design you can slide it up while inside an app an app can be dragged from the dock to slide-over access to recently used files in an app shows handoff / suggested apps on the right (can be disabled)

new design for slide-over newer iPads can show 2 apps in split view and a third one in slide over (and fourth one in PiP?) PiP window is fluently scalable (source) new design for app switcher:

preserves split-view app pairings and looks kind of like Mission Control merged with the control center

swipe up on keys to access punctuation/digits taking screenshots with keyboard shortcuts (Cmd-Shift-3/Cmd-Shift-4) tapping the pencil on the screen opens Notes app with a new note, or a previously open note within some period of time handwriting recognition & indexing (not sure if iPad only?) flashlight in the control center (source)

watchOS 4

🗄️ https://www.apple.com/watchos/

Siri watch face Kaleidoscope watch face Toy Story watch faces News app dock improvements:

new vertical design you can choose between favorites mode (like before) or recents (like on iOS) automatically shows ‘Now Playing’ as the frontmost app when you play music on the iPhone

home screen can be displayed as an alphabetically sorted list of apps instead of the hex grid you can now scroll through configured watch faces using the crown while in edit mode flashlight / safety light in the control center new UI for pairing with the iPhone updated passcode screen (bolder digits, animation, clicks) enabling location services in Settings in some apps the screen will now autorotate upside down when you show the watch to someone else Activity: personalized notifications with challenges, goals, celebrations etc. Heartrate: history chart Mail: gestures (?) Maps: suggestions, recents Music:

redesigned UI automatically syncs music that you like shows the source of music (iPhone/watch) you can upload specific music to the watch

Phone: keypad for entering a number manually (also during the call) Timer: repeat button when a timer finishes Weather: air quality (?) Workouts:

new UI - simpler to start a workout each type of workout remembers the last goal settings easier to do multiple workouts in one session ability to control music from the app automatically turns on Do Not Disturb option to automatically start playing a playlist improved Pool Swim workout High Intensity Interval Training

integration with some gym equipment via NFC Core Bluetooth for communication with various sensors and sports devices, e.g. a glucose sensor Apple Pay for person-to-person payments more capable camera control (?)

tvOS 11

🗄️ http://www.apple.com/tvos/

Home Screen Sync - synchronizes installed apps and home screen layout across multiple Apple TVs automatic dark mode - switches mode automatically based on time of day AirPlay 2 - multi-room audio support AirPods now automatically pair with your Apple TV TV app: Amazon Prime will be added later this year

Foundation & Core Frameworks

https://developer.apple.com/library/content/releasenotes/Foundation/RN-Foundation/index.html

Core Data:

better integration with Core Spotlight (NSCoreDataSpotlightDelegate) new indexing API (NSFetchIndexDescription, NSFetchIndexElementDescription, R-tree indexes) the com.apple.CoreData.SQLDebug environment variable enables SQL query plan debugging when set to 4 NSURL and NSUUID attribute types persistent history API (NSPersistentHistoryTrackingKey) for tracking changes made in other processes (e.g. in app extensions)

Core Location:

CLGeocoder: integration with CNPostalAddress precise indoor location will now be available at some malls and airports more accurate heading calculation

NSArchiver and NSUnarchiver (the ancient unkeyed variants) are deprecated NSDistributedNotificationCenter: you don’t need to unsubscribe observers NSError: new NSLocalizedFailureErrorKey info key NSJSONSerialization: can print keys alphabetically sorted in the JSON dump (NSJSONWritingSortedKeys) NSLinguisticTagger: improved API, can detect dominant language NSURL: checking how much free space could be made available (volumeAvailableCapacityForImportant/OpportunisticUsage) NSURLSession:

adaptable connectivity API (waitsForConnectivity) scheduling API (earliestBeginDate) progress tracking (ProgressReporting), can be used by UIProgressView or NSProgressIndicator request size hints for improved scheduling: countOfBytesClientExpectsToSend/Receive support for Brotli content encoding

NSXPCConnection: support for NSProgress some random existing APIs now have variants with error handling or that take URLs instead of strings

macOS 10.13 SDK

🗄️ https://developer.apple.com/macos/ 🗄️ https://developer.apple.com/metal/ 🗄️ https://developer.apple.com/machine-learning/ https://developer.apple.com/library/content/releasenotes/MacOSX/WhatsNewInOSX/Articles/macOS_10_13_0.html https://developer.apple.com/library/content/releasenotes/AppKit/RN-AppKit/index.html http://codeworkshop.net/objc-diff/sdkdiffs/macos/10.13/

General:

API refinements for Swift compatibility:

some methods named print renamed to avoid conflict with global print(), e.g. printView, printWindow some global constants moved to strongly-typed class properties, e.g. NSSharingService.composeEmail nullability fixes in some classes ObjC class properties like NSApplication.shared some properties like contentView or firstResponder that were previously assign (unowned(unsafe) in Swift) are now weak

iCloud document sharing

comes for free for NSDocument apps NSDocument.share, allowsDocumentSharing

Touch Bar API improvements:

new color picker controls NSGroupTouchBarItem option to use the same button style as system alerts NSGroupTouchBarItem option to set compression preference for when there isn’t enough space support for RTL languages Touch Bar renders inside playgrounds

support for HEVC and HEIF

New frameworks:

Core ML framework - machine learning Core Spotlight from iOS now available on the Mac Photo Project extension (PHProjectExtensionController) - creating custom print projects or web galleries etc. Vision framework - image analysis and recognition

Framework updates:

AirPlay 2:

multi-room audio support

Core Image:

accessing depth map of captured images (kCIImageAuxiliaryDepth)

MapKit:

new “muted” map type MKAnnotationView.displayPriority for specifying which map annotations are more important annotation clustering (MKAnnotationView.clusteringIdentifier, .collisionMode, MKClusterAnnotation) MKMapView.dequeueReusableAnnotationView(withIdentifier:for:) - a variant that always returns an annotation, like in UITableView

Metal 2:

better performance and new APIs debugging and profiling tools support for machine learning APIs for accessing external graphics cards VR support (Steam, Unity and Unreal VR SDKs coming to the Mac)

WebKit:

WKWebView: new APIs for custom URL schemes, cookie management, snapshots and content filtering

AppKit updates:

NSAccessibilityCustomRotor - provides a list of things to select for the user, e.g. sections or links NSApplication:

new application(_:open:) callback for opening files and URLs (replaces old NSAppleEventManager based API)

NSButton:

contents can be animated through the animator proxy

NSColor:

a new set of system colors like systemBlue standard colors like NSColor.red now use the sRGB profile NSColor(named: …) for loading colors from asset catalogs

NSCollectionView:

prefetching like on iOS

NSDocumentController:

new “Share” submenu that you can show in the File menu (allowsAutomaticShareMenu, standardShareMenuItem)

NSFontAssetRequest for asynchonous downloading of missing system fonts NSLevelIndicator:

new look, styles and configuration options, value can be animated

NSMenuItem:

allowsKeyEquivalentWhenHidden

NSResponder:

encoding restorable state can be done asynchronously (encodeRestorableState(with:backgroundQueue:))

NSSegmentedControl:

alignment and distribution properties

NSTableView:

uses self-sizing rows by default (using AutoLayout)

NSWindowTab:

more options for customizing tabs like title, tooltip or accessory view

Deprecations:

NSDrawer 😢 (screenshot for the youngsters) system-level social network logins (Twitter, Facebook etc. - Accounts framework) are deprecated High Sierra is the last release with full support for 32-bit apps

new apps submitted to MAS will require 64-bit support since January 2018 since June 2018 all apps (new & updates) will have to be 64-bit only

iOS 11 SDK

🗄️ https://developer.apple.com/ios/ 🗄️ https://developer.apple.com/ipad/ 🗄️ https://developer.apple.com/ios/drag-and-drop/ 🗄️ https://developer.apple.com/document-based-apps/ 🗄️ https://developer.apple.com/machine-learning/ 🗄️ https://developer.apple.com/arkit/ 🗄️ https://developer.apple.com/ios/human-interface-guidelines/overview/whats-new/ https://developer.apple.com/library/archive/releasenotes/General/WhatsNewIniOS/Articles/iOS_11_0.html http://codeworkshop.net/objc-diff/sdkdiffs/ios/11.0/

General:

view controllers can now display a standard large title heading at the top with an optional search field

prefersLargeTitles, largeTitleDisplayMode to handle the headings searchController and hidesSearchBarWhenScrolling to handle the search field

layout system changes:

UIView:

views now have “safe area insets” (safeAreaInsets, safeAreaLayoutGuide, insetsLayoutMarginsFromSafeArea) added directionalLayoutMargins for RTL languages

UIViewController:

added safeAreaLayoutGuide and additionalSafeAreaInsets added systemMinimumLayoutMargins and viewRespectsSystemMinimumLayoutMargins preferredScreenEdgesDeferringSystemGestures defines from which edges user can swipe in system panels topLayoutGuide, bottomLayoutGuide and automaticallyAdjustsScrollViewInsets are deprecated

UIScrollView:

added adjustedContentInset and contentInsetAdjustmentBehavior added frameLayoutGuide and contentLayoutGuide layout guides

UITableView:

separatorInsetReference (.fromCellEdges or .fromAutomaticInsets)

Dynamic Type improvements:

UIFontMetrics allows you to scale custom fonts and e.g. button sizes depending on Dynamic Type settings constraintEqualToSystemSpacing(below/after:) for defining distance constraints that properly scale spacingBaselineToBaseline option for visual format language spacingUseSystem for UIStackView

new APIs for drag & drop iCloud Keychain password autofill for apps iCloud document sharing new NFC access permission (+ NFCReaderUsageDescription) support for HEVC and HEIF accessing depth map of captured images (kCIImageAuxiliaryDepth in CIImage) and video (AVDepthData)

New frameworks:

ARKit for easy building of AR-enabled apps (iPhone 6s or newer / iPad Pro or newer) Core ML framework - machine learning Core NFC - for reading NFC tags DeviceCheck framework - setting flags for a device that persist after system reinstall FileProvider framework - new API for file provider extensions IdentityLookup - for building Message Filter extensions that filter incoming SMS from unknown senders IOSurface - framebuffer framework from macOS MusicKit - for accessing user’s Apple Music library NSXPCConnection from macOS PDFKit for displaying PDFs inside apps Quick Look Preview extension (QLPreviewingController) Thumbnail extension (QLThumbnailProvider) Vision framework - image analysis and recognition

Framework updates:

AirPlay 2:

multi-room audio support

HealthKit:

new health data types like waist circumference or insulin levels (HKQuantityTypeIdentifier) new workout types like tai chi or mixed cardio (HKWorkoutActivityType) workout apps can mark workout segments (HKWorkoutEventType.segment) workout apps can read and write user’s workout routes (HKWorkoutRoute)

MapKit:

new “muted” map type map controls can now be used separately from the map as normal views, and are RTL-aware MKMarkerAnnotationView: new default annotation view with a “marker” shape MKAnnotationView.displayPriority for specifying which map annotations are more important annotation clustering (MKAnnotationView.clusteringIdentifier, .collisionMode, MKClusterAnnotation) MKMapView.dequeueReusableAnnotationView(withIdentifier:for:) - a variant that always returns an annotation, like in UITableView

Metal 2:

better performance, machine learning support, debugging & profiling tools, more unified API

SafariServices:

SFAuthenticationSession - a simplified browser made specifically for OAuth-style authentication SFSafariViewController:

some additional configuration options Safari and other apps now get separate containers for cookies and website data clearing website data in Safari also clears it in apps

SiriKit:

new Lists and Notes domain (creating and managing todo lists, notes and reminders) new Visual Codes domain (displaying QR codes for payments or exchanging contact info) some additions to Ride Booking and Payments

WebKit:

WKWebView: new APIs for custom URL schemes, cookie management, snapshots and content filtering

location access:

some changes in how location access is displayed to the user (the arrow icon and the blue bar) users can now always choose “While Using”, you need to be able to handle that apps must include NSLocationWhenInUseUsageDescription and optionally NSLocationAlwaysAndWhenInUseUsageDescription

photo access:

you can ask for write-only support to only save photos (NSPhotoLibraryAddUsageDescription) you can use UIImagePickerController to ask the user to choose a single photo without getting access to the whole library

UIKit updates:

ProcessInfo.ThermalState API from macOS UIBarButtonItem:

customView can now determine its size using AutoLayout

UIBarItem:

largeContentSizeImage - image to be shown in an accessibility HUD when long-pressing a tab bar icon

UIDocumentBrowserViewController - a new UI for browsing app files (local and in the cloud) UINavigationItem:

titleView can now determine its size using AutoLayout

UIScreen:

maximumFramesPerSecond to support ProMotion on new iPads

UIStackView:

setCustomSpacing(after:)

UITabBar:

tab bars now use slightly bolder text and filled glyphs in landscape mode, tab bars are narrower and show labels on the right in extra large text modes, long-pressing a tab shows a popup with enlarged tab image & label (it’s recommended to provide a large version of the icon or a vector image)

UITableView:

configurable leading/trailing swipe actions (UISwipeActionsConfiguration, UIContextualAction) uses AutoLayout self-sizing for cells and header/footer views by default performBatchUpdates(_:completion:) like in UICollectionView

Deprecations:

system-level social network logins (Twitter, Facebook etc. - Accounts framework) are deprecated dropped support for 32-bit apps (apps with iOS 11 deployment target should be 64-bit only)

watchOS 4 SDK

🗄️ https://developer.apple.com/watchos/ https://developer.apple.com/library/archive/releasenotes/General/WhatsNewInwatchOS/Articles/watchOS_4_0.html http://codeworkshop.net/objc-diff/sdkdiffs/watchos/4.0/

General:

single-process runtime - the UI and the app code will now run in a single process, improving performance apps that use location can now ask for location access directly on the watch SpriteKit and SceneKit views can be shown in full screen mode (though the time will still be shown in the corner) inline audio recording - using your custom controls, not a system dialog background audio recording mode (shows a microphone indicator) background location tracking mode for non-workout apps (shows a location icon)

New frameworks:

Core Bluetooth Core ML framework - machine learning ProcessInfo.ThermalState API from macOS NSXPCConnection from macOS

Framework updates:

HealthKit:

new health data types like waist circumference or insulin levels (HKQuantityTypeIdentifier) new workout types like tai chi or mixed cardio (HKWorkoutActivityType) workout apps can mark workout segments (HKWorkoutEventType.segment) workout apps can read and write user’s workout routes (HKWorkoutRoute) workout apps can respond to a new “hardware pause” gesture triggered by pressing crown + side button together (HKWorkoutEventType.pauseOrResumeRequest)

SiriKit:

new Lists and Notes domain (creating and managing todo lists, notes and reminders) new Visual Codes domain (displaying QR codes for payments or exchanging contact info) some additions to Ride Booking and Payments

WatchKit updates:

WKExtension:

enableWaterLock - for implementing in-app water lock buttons (only workout apps and location tracking apps) isAutorotating - auto-rotate feature for when the user turns the wrist away from themselves isFrontmostTimeoutExtended - lets you ask the system to extend the time during which the app is kept on the screen to 8 minutes (in watchOS 3.2 the default timeout was changed to 2 minutes)

WKInterfaceController:

support for vertically scrolled pages (WKPageOrientation.vertical) starting a paged interface on a selected page (pageIndex parameter) scrolling the list to a specific position (scroll(to:at:animated:)) callbacks on scrolling events (interfaceOffsetDidScrollToTop/Bottom, interfaceDidScrollToTop)

WKInterfaceGroup:

groups can now have an ‘overlap’ layout

WKSnapshotRefreshBackgroundTask:

reasonForSnapshot - tells you why a snapshot was requested

tvOS 11 SDK

🗄️ https://developer.apple.com/tvos/ https://developer.apple.com/library/archive/releasenotes/General/WhatsNewinTVOS/Articles/tvOS_11_0.html

General:

apps can be woken up in the background using silent notifications on-demand resource bundle size limit increased to 4 GB support for HEVC and HEIF

New frameworks:

Core ML framework - machine learning IOSurface - framebuffer framework from macOS NSXPCConnection from macOS ProcessInfo.ThermalState API from macOS Vision framework - image analysis and recognition

Framework updates:

AirPlay 2 - multi-room audio support Core Image: accessing depth map of captured images (kCIImageAuxiliaryDepth) MapKit:

new “muted” map type map scale control can now be used separately from the map as a normal view MKMarkerAnnotationView: new default annotation view with a “marker” shape MKAnnotationView.displayPriority for specifying which map annotations are more important annotation clustering (MKAnnotationView.clusteringIdentifier, .collisionMode, MKClusterAnnotation) MKMapView.dequeueReusableAnnotationView(withIdentifier:for:) - a variant that always returns an annotation, like in UITableView

Metal 2 - better performance, machine learning support, debugging & profiling tools, more unified API

UI updates:

UIFontMetrics and autolayout additions for better font scaling (see iOS) TVML templates TVML support in Web Inspector RTL language support

Developer tools

Xcode 9

🗄️ https://developer.apple.com/xcode/ https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/WhatsNewXcode/xcode_9/xcode_9.html

completely rewritten source editor

written in Swift much faster more options for font configuration choose one of 3 cursors (vertical, horizontal and block) Cmd-+ enlarges text floating issue bubbles that don’t push down your code, can apply multiple fix-its with one click

brand new refactoring system:

supports C, ObjC, C++ and Swift hovering over code highlights a fragment, clicking lets you apply transformations/refactoring like various extractions mass rename in all files you can assign keyboard shortcuts engine will be open sourced, Xcode will automatically import transformations built by you

much faster indexer

“open quickly” up to 35x faster search up to 50x faster

a new build system (opt-in preview)

written in Swift up to 2.5x faster incremental builds faster building of mixed ObjC/Swift projects faster code coverage testing can keep indexing during a build

includes Swift 3.2 and 4.0

Swift version can be chosen per target, a single app can include modules built with both versions

integrated Markdown editor integration with GitHub:

repo search & cloning workflow pushing projects to create a new repo “open in Xcode” on the github.com new source control navigator

the Accounts panel in Preferences no longer shows a list of known git repositories simulator improvements:

multiple simulators can run in parallel simulator now has a device bezel again (removed in Xcode 6?) you can press hardware buttons like the power button support for edge swipes fluently rescalable (changes the scale, not the resolution) recording videos of simulators (?) system-wide share extension for sending things to the simulator (e.g. photos/videos, map locations, URLs, apps)

wireless debugging - running apps on devices remotely through WiFi or Ethernet

also supported in Quicktime, Safari Inspector, Console etc.

Xcode will now keep folder-group sync when moving files runtime sanitizers:

Main Thread Checker detects UI access from background threads Undefined Behavior Sanitizer detects undefined behavior bugs in C/ObjC improvements to Address and Thread Sanitizer

view debugger improvements:

shows view controllers as part of the hierarchy understands SceneKit and SpriteKit scenes

the Crashes Organizer will symbolicate unsymbolicated logs when selected using local .dSYMs indexed by Spotlight improved search in the documentation browser Xcode server (CI) is now built into Xcode multiple copies of Xcode can run in parallel (but only >= 9) test improvements:

UI tests can now branch into multiple apps 3-10x faster UI tests new UI testing APIs (e.g. XCUIScreen.screenshot()) test builds can run on multiple devices in parallel (using xcodebuild)

signing for distribution: automatic signing and more customizable manual signing asset catalogs:

colors can be added to asset catalogs app thinning for app icons asset catalogs can contain images in PDF format with a “preserve vector data” option which ships the vector form with the app, which can be used for scaling the icon to larger sizes in various contexts support for HEVC and HEIF assets

fix-it for Swift that adds all methods required by a protocol 300+ new diagnostics, analyzers and fixits new “Strip Swift Symbols” build setting that strips Swift symbols from the binary, reducing its size (enabled by default) when a constraint is selected in IB, you can change the elements it’s pointing to and the constant will be updated improved template macro system (?)

Swift 4

🗄️ https://developer.apple.com/swift/

reduced binary size better, more predictable performance needs some migration, but very little String improvements:

easier to use (e.g. it’s a collection again - no need to call .characters, simpler slicing) better performance more correct unicode support (e.g. handling emoji) multi-line string literals ("""...""") Character has unicodeScalars string slices now have a new type Substring (shares most functionality with String via StringProtocol)

Dictionary and Set improvements:

creating a dictionary from a sequence of key-value pairs filtering dictionaries and sets into a value of the same type mapping dictionary values into a new dictionary grouping sequences into a dictionary Dictionary subscript with a default value (that can be assigned through)

Codable - new API for encoding/decoding e.g. from JSON \Person.name - new strongly typed key paths NSRange to/from Swift.Range conversion observe(keyPath) { observed, change in ... } - block-based KVO private properties/methods are accessible from extensions in the same file where constraints for associatedtype @objc now needs to be added explicitly in most cases MutableCollection.swapAt(x, y) partial ranges (5..., ...5) generic subscripts (both parameters and return value can be generic) combining class and protocol requirements: var x: UIView & Animatable exclusive access to memory - compiler and runtime checks for incorrectly accessing a value that is being modified in another place various improvements to Swift Package Manager

ObjC

detecting usage of APIs newer than the deployment target like in Swift (@available)

App Store & iTunes Connect

🗄️ https://developer.apple.com/app-store/ 🗄️ https://developer.apple.com/app-store/whats-new/ 🗄️ https://developer.apple.com/app-store/product-page/

application icon for App Store will now be distributed in the asset catalog in the binary application name limited to 30 characters new subtitle field below the app name (also 30 chars) description will now be only be editable when submitting a new version new promotional text field (170 chars) - shown at the beginning of description, can be edited at any time up to 3 app preview videos, previews will autoplay (but without audio) phased releases - users with automatic downloads will get the app gradually over one week in-app purchases can be promoted on the App Store separately from the app ratings are no longer automatically reset after every update (though you can reset them manually) it’s strongly recommended (though not strictly required yet) to only use SKStoreReviewController to ask for reviews (1.1.7) programming IDEs that download executable code are now allowed on the App Store with some conditions (2.5.2) TestFlight external tester limit will be raised to 10K

Safari

https://developer.apple.com/library/archive/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_0.html

Media Capture API (camera and microphone access) WebAssembly WebRTC support for CSS stroke support for variable fonts drag & drop events WebCrypto API updates if-top-url and unless-top-url rules in content blockers support for Brotli content encoding

Other

Swift Playgrounds 2.0:

hosted feeds of playground content with a subscription model supports Swift 4 and iOS 11 SDK, camera and AR APIs integrated documentation 8 new localizations

Business Chat (preview) - a service for companies to let your customers contact you via iMessage HomeKit protocol is now open to everyone for free (for non-commercial purposes) an iCloud storage plan can be shared with the whole family

Discussion in the ATmosphere

Loading comments...