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:

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

and (the ancient unkeyed variants) are deprecated NSDistributedNotificationCenter : you don’t need to unsubscribe observers

: you don’t need to unsubscribe observers NSError : new NSLocalizedFailureErrorKey info key

: new info key NSJSONSerialization : can print keys alphabetically sorted in the JSON dump ( NSJSONWritingSortedKeys )

: can print keys alphabetically sorted in the JSON dump ( ) NSLinguisticTagger : improved API, can detect dominant language

: improved API, can detect dominant language NSURL : checking how much free space could be made available ( volumeAvailableCapacityForImportant/OpportunisticUsage )

: checking how much free space could be made available ( ) 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

: support for 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.

) – 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

– 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

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)

😢 (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

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

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)

– 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

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

from macOS ProcessInfo.ThermalState API from macOS

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 )

improvements: 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)

and improvements: Codable – new API for encoding/decoding e.g. from JSON

– new API for encoding/decoding e.g. from JSON \Person.name – new strongly typed key paths

– new strongly typed key paths NSRange to/from Swift.Range conversion

to/from conversion observe(keyPath) { observed, change in ... } – block-based KVO

– block-based KVO private properties/methods are accessible from extensions in the same file

properties/methods are accessible from extensions in the same file where constraints for associatedtype

constraints for @objc now needs to be added explicitly in most cases

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)

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

and rules in content blockers support for Brotli content encoding

Other