{
"$type": "site.standard.document",
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreicqebh2qqb6aoog6rpprvnp5bn2hwotqlyc4tx5tpakevt23b7izu"
},
"mimeType": "image/jpeg",
"size": 58072
},
"description": "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.\n\nSo 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.\n\nTo 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.\n\nIf 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:\n\nWWDC 2016\nWWDC 2015\n\nQuick links:\n\nmacOS 10.13 • iOS 11 • watchOS 4 • tvOS 11\n\nFoundation & Core Frameworks • macOS 10.13 SDK • iOS 11 SDK • watchOS 4 SDK • tvOS 11 SDK\n\nDeveloper Tools • Safari 11 • Other\n\nmacOS 10.13 High Sierra\n\n🗄️ https://www.apple.com/macos/high-sierra/\n\nMail:\n\nsmart highlight of important emails\nsplit view for compose window\nuses less disk space\n\nMessages: syncs conversations through iCloud between iOS/macOS (end-to-end encrypted)\nNotes:\n\npinning notes\nsupport for tables\n\nPhotos:\n\npersistent sidebar\nshows all imports chronologically\nimproved face recognition\nsynchronizes people across devices\ncurves and selective color edit tools\nmore partners for printing photos\nmore available topics for memories\nphotos can be edited in 3rd party apps and are saved back into Photos app\nplaying animated GIFs\nlive photo effects\n\nSafari:\n\nvideo autoplay blocking\nintelligent tracking prevention\nper-site settings (e.g. enabling autoplay or disabling content blockers on some sites)\nautomatic reader mode\n\nSpotlight can find more kinds of web results, e.g. flight info, and can return multiple results from Wikipedia\nsmoother, more natural sounding Siri voice\nwindow server (Mission Control etc.) is built on top of Metal 2\nAPFS is the new default filesystem for new installations\nH.265 (HEVC) video support, with hardware acceleration in newest Macs\naccessibility:\n\nnew on-screen accessibility keyboard\nType to Siri (disables voice interface)\nvoiceover descriptions of images will now include automatic description of the image contents and any detected text\n\niOS 11\n\n🗄️ https://www.apple.com/ios/ios-11/\n\nredesigned control center\n\nsingle page, animations\nmore controls shown with 3D Touch\nsome areas can be customized\nallows you to toggle e.g. cellular data, hotspot, AirDrop\n\nnew design for app switcher:\n\nnew animation\nno longer shows the home screen as the first app\n\nolder notifications accessible from the lock screen…",
"path": "/2017/07/05/new-stuff-from-wwdc-2017/",
"publishedAt": "2017-07-05T14:05:25Z",
"site": "at://did:plc:oio4hkxaop4ao4wz2pp3f4cr/site.standard.publication/3mn5mackuba26",
"tags": [
"Cocoa",
"iPhone",
"Mac",
"WWDC"
],
"textContent": "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.\n\nSo 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.\n\nTo 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.\n\nIf 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:\n\nWWDC 2016\nWWDC 2015\n\nQuick links:\n\nmacOS 10.13 • iOS 11 • watchOS 4 • tvOS 11\n\nFoundation & Core Frameworks • macOS 10.13 SDK • iOS 11 SDK • watchOS 4 SDK • tvOS 11 SDK\n\nDeveloper Tools • Safari 11 • Other\n\nmacOS 10.13 High Sierra\n\n🗄️ https://www.apple.com/macos/high-sierra/\n\nMail:\n\nsmart highlight of important emails\nsplit view for compose window\nuses less disk space\n\nMessages: syncs conversations through iCloud between iOS/macOS (end-to-end encrypted)\nNotes:\n\npinning notes\nsupport for tables\n\nPhotos:\n\npersistent sidebar\nshows all imports chronologically\nimproved face recognition\nsynchronizes people across devices\ncurves and selective color edit tools\nmore partners for printing photos\nmore available topics for memories\nphotos can be edited in 3rd party apps and are saved back into Photos app\nplaying animated GIFs\nlive photo effects\n\nSafari:\n\nvideo autoplay blocking\nintelligent tracking prevention\nper-site settings (e.g. enabling autoplay or disabling content blockers on some sites)\nautomatic reader mode\n\nSpotlight can find more kinds of web results, e.g. flight info, and can return multiple results from Wikipedia\nsmoother, more natural sounding Siri voice\nwindow server (Mission Control etc.) is built on top of Metal 2\nAPFS is the new default filesystem for new installations\nH.265 (HEVC) video support, with hardware acceleration in newest Macs\naccessibility:\n\nnew on-screen accessibility keyboard\nType to Siri (disables voice interface)\nvoiceover descriptions of images will now include automatic description of the image contents and any detected text\n\niOS 11\n\n🗄️ https://www.apple.com/ios/ios-11/\n\nredesigned control center\n\nsingle page, animations\nmore controls shown with 3D Touch\nsome areas can be customized\nallows you to toggle e.g. cellular data, hotspot, AirDrop\n\nnew design for app switcher:\n\nnew animation\nno longer shows the home screen as the first app\n\nolder notifications accessible from the lock screen (top notifications panel is now the same as lock screen)\napps in the dock on the home screen no longer show their names\nupdated design of passcode screen, phone app number entry screen and numeric keyboard\ntab bars now use slightly bolder text and filled glyphs\nin landscape mode, tab bars are narrower and show labels on the right\nnew header design in various apps with large bold headings (like Music app in iOS 10)\ndrag & drop with multi-touch support\n\nin-app on iPhone, on iPad also between apps\n\nFiles app - like Finder on iOS, with tags, favorites, nested folders, cloud storage etc. (replaces iCloud Drive app)\nApple Music:\n\nshared “up next”\nshowing what friends are listening to\nconfiguring your profile and what should be shared with others\n\nApp Store: completely redesigned app\nCalculator: new design\nCamera: QR code support\nHome: support for speakers (multi-room audio - AirPlay 2), sprinklers and faucets, pairing using NFC & QR codes\nMaps:\n\nfloor plans for malls and airports\nshowing speed limit\nlane guidance\none-handed zoom (like in Google Maps - double-tap + drag up/down)\npseudo-AR flyover mode (source)\n\nMessages:\n\nredesigned app drawer\nDigital Touch moved to the app drawer\nautomatically syncing conversations between iOS/macOS (end-to-end encrypted)\nApple Pay for person-to-person payments\nnew “Echo” and “Spotlight” screen effects\noption to automatically delete old conversations\n\nNotes:\n\npinning notes\nlocking notes from the list screen (swipe action)\nsupport for tables\nselecting lines/grid style (source)\ninline drawings\n\nPhotos:\n\nmore available topics for memories\nmemories can play in portrait mode\nplaying animated GIFs\ntrimming live photos\nselecting key frame for live photos\nlive photo effects: loops, bouncing, mute, long exposure\nlive photos with loop or bounce can be shared as GIFs\noption to easily create a watch face (photo or kaleidoscope) from any photo on iOS\nvideos are saved in HEVC format (up to 2x compression), photos in HEIF format based on HEVC (same)\n“Edit” button moved back to the top-right like on iOS 9\n\nPodcasts: new design\nSafari:\n\nintelligent tracking prevention\n“Experimental Features” menu in settings that enables some unfinished new APIs\noption to disable tracking prevention and camera/microphone access\n\nSettings:\n\nBackground App Refresh can be set to only work on WiFi connection\nnew “Accounts and passwords” panel (extracted from “Mail” and “Safari”)\nredesigned “Storage and iCloud Usage” panel (as “iPhone Storage”)\nmerged “General/Spotlight Search” into “Siri” panel\nreorganized “Notifications” section\nyou can now always choose “While Using” location permission for any app\n“Shut Down” button in General menu\nremoved system-level social network logins (Twitter, Facebook etc.)\n\nSiri:\n\nsmoother, more natural sounding voice\nmultiple results, follow-up questions\ntranslation (beta) - English to French, German, Italian, Spanish, Chinese\n\nSiri Intelligence:\n\nmore kinds of suggestions in more places\nknowledge about you is synced across devices (end-to-end encrypted)\n\nTV app: Amazon Prime will be added later this year\naccessibility:\n\n“Smart Invert” mode\n“Type to Siri” option (disables the voice interface)\noption to automatically answer calls\nvoiceover descriptions of images will now include automatic description of the image contents and any detected text\nin extra large text modes, long-pressing a tab in the tab bar shows a popup with enlarged tab image & label\n\nDo Not Disturb while driving - automatically detects driving and turns off notifications\nEmergency SOS feature (press power button 5 times and slide a slider)\nautomatic setup of new iPhones from an existing device\nconfiguring custom actions for AirPods\nrequesting WiFi password from other devices nearby\nlogging in to WiFi by scanning a QR code\nbuilt-in document scanner\nscreen recording (accessed from the control center)\ncreating PDFs in apps that support printing\nmarkup (drawing) on PDFs, screenshots and scanned documents\nafter taking a screenshot, a thumbnail appears in the corner and you can tap it to edit it, add markup and share it\nnew video playback controls\nbars instead of dots for cell signal\none-handed keyboard option (with more narrow keys, leaving some empty space on one side)\noption to automatically remove less used apps and restore when needed\nhealth data can be synced to iCloud\nFLAC audio support (?)\nnew icons for App Store, iTunes Store, Calculator, Contacts, Reminders and Notes\nApp Store shows info pages for iPad and Mac apps (might be a bug?)\nApp Store shows an ApplePay-style sheet when buying paid apps\ndifferent animation when launching an app from the home screen\ndifferent animation when unlocking the device\nlinks highlighted in notification text? (source)\neasier opening of notifications on non-3D-Touch devices? (source)\ndrops support for iPhone 5 & 5c and iPad 4\ndrops support for old 32-bit apps\n\niPad only\n\nredesigned app dock\n\nmore Mac-like design\nyou can slide it up while inside an app\nan app can be dragged from the dock to slide-over\naccess to recently used files in an app\nshows handoff / suggested apps on the right (can be disabled)\n\nnew design for slide-over\nnewer iPads can show 2 apps in split view and a third one in slide over (and fourth one in PiP?)\nPiP window is fluently scalable (source)\nnew design for app switcher:\n\npreserves split-view app pairings and looks kind of like Mission Control\nmerged with the control center\n\nswipe up on keys to access punctuation/digits\ntaking screenshots with keyboard shortcuts (Cmd-Shift-3/Cmd-Shift-4)\ntapping the pencil on the screen opens Notes app with a new note, or a previously open note within some period of time\nhandwriting recognition & indexing (not sure if iPad only?)\nflashlight in the control center (source)\n\nwatchOS 4\n\n🗄️ https://www.apple.com/watchos/\n\nSiri watch face\nKaleidoscope watch face\nToy Story watch faces\nNews app\ndock improvements:\n\nnew vertical design\nyou can choose between favorites mode (like before) or recents (like on iOS)\nautomatically shows ‘Now Playing’ as the frontmost app when you play music on the iPhone\n\nhome screen can be displayed as an alphabetically sorted list of apps instead of the hex grid\nyou can now scroll through configured watch faces using the crown while in edit mode\nflashlight / safety light in the control center\nnew UI for pairing with the iPhone\nupdated passcode screen (bolder digits, animation, clicks)\nenabling location services in Settings\nin some apps the screen will now autorotate upside down when you show the watch to someone else\nActivity: personalized notifications with challenges, goals, celebrations etc.\nHeartrate: history chart\nMail: gestures (?)\nMaps: suggestions, recents\nMusic:\n\nredesigned UI\nautomatically syncs music that you like\nshows the source of music (iPhone/watch)\nyou can upload specific music to the watch\n\nPhone: keypad for entering a number manually (also during the call)\nTimer: repeat button when a timer finishes\nWeather: air quality (?)\nWorkouts:\n\nnew UI - simpler to start a workout\neach type of workout remembers the last goal settings\neasier to do multiple workouts in one session\nability to control music from the app\nautomatically turns on Do Not Disturb\noption to automatically start playing a playlist\nimproved Pool Swim workout\nHigh Intensity Interval Training\n\nintegration with some gym equipment via NFC\nCore Bluetooth for communication with various sensors and sports devices, e.g. a glucose sensor\nApple Pay for person-to-person payments\nmore capable camera control (?)\n\ntvOS 11\n\n🗄️ http://www.apple.com/tvos/\n\nHome Screen Sync - synchronizes installed apps and home screen layout across multiple Apple TVs\nautomatic dark mode - switches mode automatically based on time of day\nAirPlay 2 - multi-room audio support\nAirPods now automatically pair with your Apple TV\nTV app: Amazon Prime will be added later this year\n\nFoundation & Core Frameworks\n\nhttps://developer.apple.com/library/content/releasenotes/Foundation/RN-Foundation/index.html\n\nCore Data:\n\nbetter integration with Core Spotlight (NSCoreDataSpotlightDelegate)\nnew indexing API (NSFetchIndexDescription, NSFetchIndexElementDescription, R-tree indexes)\nthe com.apple.CoreData.SQLDebug environment variable enables SQL query plan debugging when set to 4\nNSURL and NSUUID attribute types\npersistent history API (NSPersistentHistoryTrackingKey) for tracking changes made in other processes (e.g. in app extensions)\n\nCore Location:\n\nCLGeocoder: integration with CNPostalAddress\nprecise indoor location will now be available at some malls and airports\nmore accurate heading calculation\n\nNSArchiver and NSUnarchiver (the ancient unkeyed variants) are deprecated\nNSDistributedNotificationCenter: you don’t need to unsubscribe observers\nNSError: new NSLocalizedFailureErrorKey info key\nNSJSONSerialization: can print keys alphabetically sorted in the JSON dump (NSJSONWritingSortedKeys)\nNSLinguisticTagger: improved API, can detect dominant language\nNSURL: checking how much free space could be made available (volumeAvailableCapacityForImportant/OpportunisticUsage)\nNSURLSession:\n\nadaptable connectivity API (waitsForConnectivity)\nscheduling API (earliestBeginDate)\nprogress tracking (ProgressReporting), can be used by UIProgressView or NSProgressIndicator\nrequest size hints for improved scheduling: countOfBytesClientExpectsToSend/Receive\nsupport for Brotli content encoding\n\nNSXPCConnection: support for NSProgress\nsome random existing APIs now have variants with error handling or that take URLs instead of strings\n\nmacOS 10.13 SDK\n\n🗄️ https://developer.apple.com/macos/ \n🗄️ https://developer.apple.com/metal/ \n🗄️ https://developer.apple.com/machine-learning/ \nhttps://developer.apple.com/library/content/releasenotes/MacOSX/WhatsNewInOSX/Articles/macOS_10_13_0.html \nhttps://developer.apple.com/library/content/releasenotes/AppKit/RN-AppKit/index.html \nhttp://codeworkshop.net/objc-diff/sdkdiffs/macos/10.13/\n\nGeneral:\n\nAPI refinements for Swift compatibility:\n\nsome methods named print renamed to avoid conflict with global print(), e.g. printView, printWindow\nsome global constants moved to strongly-typed class properties, e.g. NSSharingService.composeEmail\nnullability fixes in some classes\nObjC class properties like NSApplication.shared\nsome properties like contentView or firstResponder that were previously assign (unowned(unsafe) in Swift) are now weak\n\niCloud document sharing\n\ncomes for free for NSDocument apps\nNSDocument.share, allowsDocumentSharing\n\nTouch Bar API improvements:\n\nnew color picker controls\nNSGroupTouchBarItem option to use the same button style as system alerts\nNSGroupTouchBarItem option to set compression preference for when there isn’t enough space\nsupport for RTL languages\nTouch Bar renders inside playgrounds\n\nsupport for HEVC and HEIF\n\nNew frameworks:\n\nCore ML framework - machine learning\nCore Spotlight from iOS now available on the Mac\nPhoto Project extension (PHProjectExtensionController) - creating custom print projects or web galleries etc.\nVision framework - image analysis and recognition\n\nFramework updates:\n\nAirPlay 2:\n\nmulti-room audio support\n\nCore Image:\n\naccessing depth map of captured images (kCIImageAuxiliaryDepth)\n\nMapKit:\n\nnew “muted” map type\nMKAnnotationView.displayPriority for specifying which map annotations are more important\nannotation clustering (MKAnnotationView.clusteringIdentifier, .collisionMode, MKClusterAnnotation)\nMKMapView.dequeueReusableAnnotationView(withIdentifier:for:) - a variant that always returns an annotation, like in UITableView\n\nMetal 2:\n\nbetter performance and new APIs\ndebugging and profiling tools\nsupport for machine learning\nAPIs for accessing external graphics cards\nVR support (Steam, Unity and Unreal VR SDKs coming to the Mac)\n\nWebKit:\n\nWKWebView: new APIs for custom URL schemes, cookie management, snapshots and content filtering\n\nAppKit updates:\n\nNSAccessibilityCustomRotor - provides a list of things to select for the user, e.g. sections or links\nNSApplication:\n\nnew application(_:open:) callback for opening files and URLs (replaces old NSAppleEventManager based API)\n\nNSButton:\n\ncontents can be animated through the animator proxy\n\nNSColor:\n\na new set of system colors like systemBlue\nstandard colors like NSColor.red now use the sRGB profile\nNSColor(named: …) for loading colors from asset catalogs\n\nNSCollectionView:\n\nprefetching like on iOS\n\nNSDocumentController:\n\nnew “Share” submenu that you can show in the File menu (allowsAutomaticShareMenu, standardShareMenuItem)\n\nNSFontAssetRequest for asynchonous downloading of missing system fonts\nNSLevelIndicator:\n\nnew look, styles and configuration options, value can be animated\n\nNSMenuItem:\n\nallowsKeyEquivalentWhenHidden\n\nNSResponder:\n\nencoding restorable state can be done asynchronously (encodeRestorableState(with:backgroundQueue:))\n\nNSSegmentedControl:\n\nalignment and distribution properties\n\nNSTableView:\n\nuses self-sizing rows by default (using AutoLayout)\n\nNSWindowTab:\n\nmore options for customizing tabs like title, tooltip or accessory view\n\nDeprecations:\n\nNSDrawer 😢 (screenshot for the youngsters)\nsystem-level social network logins (Twitter, Facebook etc. - Accounts framework) are deprecated\nHigh Sierra is the last release with full support for 32-bit apps\n\nnew apps submitted to MAS will require 64-bit support since January 2018\nsince June 2018 all apps (new & updates) will have to be 64-bit only\n\niOS 11 SDK\n\n🗄️ https://developer.apple.com/ios/ \n🗄️ https://developer.apple.com/ipad/ \n🗄️ https://developer.apple.com/ios/drag-and-drop/ \n🗄️ https://developer.apple.com/document-based-apps/ \n🗄️ https://developer.apple.com/machine-learning/ \n🗄️ https://developer.apple.com/arkit/ \n🗄️ https://developer.apple.com/ios/human-interface-guidelines/overview/whats-new/ \nhttps://developer.apple.com/library/archive/releasenotes/General/WhatsNewIniOS/Articles/iOS_11_0.html \nhttp://codeworkshop.net/objc-diff/sdkdiffs/ios/11.0/\n\nGeneral:\n\nview controllers can now display a standard large title heading at the top with an optional search field\n\nprefersLargeTitles, largeTitleDisplayMode to handle the headings\nsearchController and hidesSearchBarWhenScrolling to handle the search field\n\nlayout system changes:\n\nUIView:\n\nviews now have “safe area insets” (safeAreaInsets, safeAreaLayoutGuide, insetsLayoutMarginsFromSafeArea)\nadded directionalLayoutMargins for RTL languages\n\nUIViewController:\n\nadded safeAreaLayoutGuide and additionalSafeAreaInsets\nadded systemMinimumLayoutMargins and viewRespectsSystemMinimumLayoutMargins\npreferredScreenEdgesDeferringSystemGestures defines from which edges user can swipe in system panels\ntopLayoutGuide, bottomLayoutGuide and automaticallyAdjustsScrollViewInsets are deprecated\n\nUIScrollView:\n\nadded adjustedContentInset and contentInsetAdjustmentBehavior\nadded frameLayoutGuide and contentLayoutGuide layout guides\n\nUITableView:\n\nseparatorInsetReference (.fromCellEdges or .fromAutomaticInsets)\n\nDynamic Type improvements:\n\nUIFontMetrics allows you to scale custom fonts and e.g. button sizes depending on Dynamic Type settings\nconstraintEqualToSystemSpacing(below/after:) for defining distance constraints that properly scale\nspacingBaselineToBaseline option for visual format language\nspacingUseSystem for UIStackView\n\nnew APIs for drag & drop\niCloud Keychain password autofill for apps\niCloud document sharing\nnew NFC access permission (+ NFCReaderUsageDescription)\nsupport for HEVC and HEIF\naccessing depth map of captured images (kCIImageAuxiliaryDepth in CIImage) and video (AVDepthData)\n\nNew frameworks:\n\nARKit for easy building of AR-enabled apps (iPhone 6s or newer / iPad Pro or newer)\nCore ML framework - machine learning\nCore NFC - for reading NFC tags\nDeviceCheck framework - setting flags for a device that persist after system reinstall\nFileProvider framework - new API for file provider extensions\nIdentityLookup - for building Message Filter extensions that filter incoming SMS from unknown senders\nIOSurface - framebuffer framework from macOS\nMusicKit - for accessing user’s Apple Music library\nNSXPCConnection from macOS\nPDFKit for displaying PDFs inside apps\nQuick Look Preview extension (QLPreviewingController)\nThumbnail extension (QLThumbnailProvider)\nVision framework - image analysis and recognition\n\nFramework updates:\n\nAirPlay 2:\n\nmulti-room audio support\n\nHealthKit:\n\nnew health data types like waist circumference or insulin levels (HKQuantityTypeIdentifier)\nnew workout types like tai chi or mixed cardio (HKWorkoutActivityType)\nworkout apps can mark workout segments (HKWorkoutEventType.segment)\nworkout apps can read and write user’s workout routes (HKWorkoutRoute)\n\nMapKit:\n\nnew “muted” map type\nmap controls can now be used separately from the map as normal views, and are RTL-aware\nMKMarkerAnnotationView: new default annotation view with a “marker” shape\nMKAnnotationView.displayPriority for specifying which map annotations are more important\nannotation clustering (MKAnnotationView.clusteringIdentifier, .collisionMode, MKClusterAnnotation)\nMKMapView.dequeueReusableAnnotationView(withIdentifier:for:) - a variant that always returns an annotation, like in UITableView\n\nMetal 2:\n\nbetter performance, machine learning support, debugging & profiling tools, more unified API\n\nSafariServices:\n\nSFAuthenticationSession - a simplified browser made specifically for OAuth-style authentication\nSFSafariViewController:\n\nsome additional configuration options\nSafari and other apps now get separate containers for cookies and website data\nclearing website data in Safari also clears it in apps\n\nSiriKit:\n\nnew Lists and Notes domain (creating and managing todo lists, notes and reminders)\nnew Visual Codes domain (displaying QR codes for payments or exchanging contact info)\nsome additions to Ride Booking and Payments\n\nWebKit:\n\nWKWebView: new APIs for custom URL schemes, cookie management, snapshots and content filtering\n\nlocation access:\n\nsome changes in how location access is displayed to the user (the arrow icon and the blue bar)\nusers can now always choose “While Using”, you need to be able to handle that\napps must include NSLocationWhenInUseUsageDescription and optionally NSLocationAlwaysAndWhenInUseUsageDescription\n\nphoto access:\n\nyou can ask for write-only support to only save photos (NSPhotoLibraryAddUsageDescription)\nyou can use UIImagePickerController to ask the user to choose a single photo without getting access to the whole library\n\nUIKit updates:\n\nProcessInfo.ThermalState API from macOS\nUIBarButtonItem:\n\ncustomView can now determine its size using AutoLayout\n\nUIBarItem:\n\nlargeContentSizeImage - image to be shown in an accessibility HUD when long-pressing a tab bar icon\n\nUIDocumentBrowserViewController - a new UI for browsing app files (local and in the cloud)\nUINavigationItem:\n\ntitleView can now determine its size using AutoLayout\n\nUIScreen:\n\nmaximumFramesPerSecond to support ProMotion on new iPads\n\nUIStackView:\n\nsetCustomSpacing(after:)\n\nUITabBar:\n\ntab bars now use slightly bolder text and filled glyphs\nin landscape mode, tab bars are narrower and show labels on the right\nin 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)\n\nUITableView:\n\nconfigurable leading/trailing swipe actions (UISwipeActionsConfiguration, UIContextualAction)\nuses AutoLayout self-sizing for cells and header/footer views by default\nperformBatchUpdates(_:completion:) like in UICollectionView\n\nDeprecations:\n\nsystem-level social network logins (Twitter, Facebook etc. - Accounts framework) are deprecated\ndropped support for 32-bit apps (apps with iOS 11 deployment target should be 64-bit only)\n\nwatchOS 4 SDK\n\n🗄️ https://developer.apple.com/watchos/ \nhttps://developer.apple.com/library/archive/releasenotes/General/WhatsNewInwatchOS/Articles/watchOS_4_0.html \nhttp://codeworkshop.net/objc-diff/sdkdiffs/watchos/4.0/\n\nGeneral:\n\nsingle-process runtime - the UI and the app code will now run in a single process, improving performance\napps that use location can now ask for location access directly on the watch\nSpriteKit and SceneKit views can be shown in full screen mode (though the time will still be shown in the corner)\ninline audio recording - using your custom controls, not a system dialog\nbackground audio recording mode (shows a microphone indicator)\nbackground location tracking mode for non-workout apps (shows a location icon)\n\nNew frameworks:\n\nCore Bluetooth\nCore ML framework - machine learning\nProcessInfo.ThermalState API from macOS\nNSXPCConnection from macOS\n\nFramework updates:\n\nHealthKit:\n\nnew health data types like waist circumference or insulin levels (HKQuantityTypeIdentifier)\nnew workout types like tai chi or mixed cardio (HKWorkoutActivityType)\nworkout apps can mark workout segments (HKWorkoutEventType.segment)\nworkout apps can read and write user’s workout routes (HKWorkoutRoute)\nworkout apps can respond to a new “hardware pause” gesture triggered by pressing crown + side button together (HKWorkoutEventType.pauseOrResumeRequest)\n\nSiriKit:\n\nnew Lists and Notes domain (creating and managing todo lists, notes and reminders)\nnew Visual Codes domain (displaying QR codes for payments or exchanging contact info)\nsome additions to Ride Booking and Payments\n\nWatchKit updates:\n\nWKExtension:\n\nenableWaterLock - for implementing in-app water lock buttons (only workout apps and location tracking apps)\nisAutorotating - auto-rotate feature for when the user turns the wrist away from themselves\nisFrontmostTimeoutExtended - 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)\n\nWKInterfaceController:\n\nsupport for vertically scrolled pages (WKPageOrientation.vertical)\nstarting a paged interface on a selected page (pageIndex parameter)\nscrolling the list to a specific position (scroll(to:at:animated:))\ncallbacks on scrolling events (interfaceOffsetDidScrollToTop/Bottom, interfaceDidScrollToTop)\n\nWKInterfaceGroup:\n\ngroups can now have an ‘overlap’ layout\n\nWKSnapshotRefreshBackgroundTask:\n\nreasonForSnapshot - tells you why a snapshot was requested\n\ntvOS 11 SDK\n\n🗄️ https://developer.apple.com/tvos/ \nhttps://developer.apple.com/library/archive/releasenotes/General/WhatsNewinTVOS/Articles/tvOS_11_0.html\n\nGeneral:\n\napps can be woken up in the background using silent notifications\non-demand resource bundle size limit increased to 4 GB\nsupport for HEVC and HEIF\n\nNew frameworks:\n\nCore ML framework - machine learning\nIOSurface - framebuffer framework from macOS\nNSXPCConnection from macOS\nProcessInfo.ThermalState API from macOS\nVision framework - image analysis and recognition\n\nFramework updates:\n\nAirPlay 2 - multi-room audio support\nCore Image: accessing depth map of captured images (kCIImageAuxiliaryDepth)\nMapKit:\n\nnew “muted” map type\nmap scale control can now be used separately from the map as a normal view\nMKMarkerAnnotationView: new default annotation view with a “marker” shape\nMKAnnotationView.displayPriority for specifying which map annotations are more important\nannotation clustering (MKAnnotationView.clusteringIdentifier, .collisionMode, MKClusterAnnotation)\nMKMapView.dequeueReusableAnnotationView(withIdentifier:for:) - a variant that always returns an annotation, like in UITableView\n\nMetal 2 - better performance, machine learning support, debugging & profiling tools, more unified API\n\nUI updates:\n\nUIFontMetrics and autolayout additions for better font scaling (see iOS)\nTVML templates\nTVML support in Web Inspector\nRTL language support\n\nDeveloper tools\n\nXcode 9\n\n🗄️ https://developer.apple.com/xcode/ \nhttps://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/WhatsNewXcode/xcode_9/xcode_9.html\n\ncompletely rewritten source editor\n\nwritten in Swift\nmuch faster\nmore options for font configuration\nchoose one of 3 cursors (vertical, horizontal and block)\nCmd-+ enlarges text\nfloating issue bubbles that don’t push down your code, can apply multiple fix-its with one click\n\nbrand new refactoring system:\n\nsupports C, ObjC, C++ and Swift\nhovering over code highlights a fragment, clicking lets you apply transformations/refactoring like various extractions\nmass rename in all files\nyou can assign keyboard shortcuts\nengine will be open sourced, Xcode will automatically import transformations built by you\n\nmuch faster indexer\n\n“open quickly” up to 35x faster\nsearch up to 50x faster\n\na new build system (opt-in preview)\n\nwritten in Swift\nup to 2.5x faster incremental builds\nfaster building of mixed ObjC/Swift projects\nfaster code coverage testing\ncan keep indexing during a build\n\nincludes Swift 3.2 and 4.0\n\nSwift version can be chosen per target, a single app can include modules built with both versions\n\nintegrated Markdown editor\nintegration with GitHub:\n\nrepo search & cloning workflow\npushing projects to create a new repo\n“open in Xcode” on the github.com\nnew source control navigator\n\nthe Accounts panel in Preferences no longer shows a list of known git repositories\nsimulator improvements:\n\nmultiple simulators can run in parallel\nsimulator now has a device bezel again (removed in Xcode 6?)\nyou can press hardware buttons like the power button\nsupport for edge swipes\nfluently rescalable (changes the scale, not the resolution)\nrecording videos of simulators (?)\nsystem-wide share extension for sending things to the simulator (e.g. photos/videos, map locations, URLs, apps)\n\nwireless debugging - running apps on devices remotely through WiFi or Ethernet\n\nalso supported in Quicktime, Safari Inspector, Console etc.\n\nXcode will now keep folder-group sync when moving files\nruntime sanitizers:\n\nMain Thread Checker detects UI access from background threads\nUndefined Behavior Sanitizer detects undefined behavior bugs in C/ObjC\nimprovements to Address and Thread Sanitizer\n\nview debugger improvements:\n\nshows view controllers as part of the hierarchy\nunderstands SceneKit and SpriteKit scenes\n\nthe Crashes Organizer will symbolicate unsymbolicated logs when selected using local .dSYMs indexed by Spotlight\nimproved search in the documentation browser\nXcode server (CI) is now built into Xcode\nmultiple copies of Xcode can run in parallel (but only >= 9)\ntest improvements:\n\nUI tests can now branch into multiple apps\n3-10x faster UI tests\nnew UI testing APIs (e.g. XCUIScreen.screenshot())\ntest builds can run on multiple devices in parallel (using xcodebuild)\n\nsigning for distribution: automatic signing and more customizable manual signing\nasset catalogs:\n\ncolors can be added to asset catalogs\napp thinning for app icons\nasset 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\nsupport for HEVC and HEIF assets\n\nfix-it for Swift that adds all methods required by a protocol\n300+ new diagnostics, analyzers and fixits\nnew “Strip Swift Symbols” build setting that strips Swift symbols from the binary, reducing its size (enabled by default)\nwhen a constraint is selected in IB, you can change the elements it’s pointing to and the constant will be updated\nimproved template macro system (?)\n\nSwift 4\n\n🗄️ https://developer.apple.com/swift/\n\nreduced binary size\nbetter, more predictable performance\nneeds some migration, but very little\nString improvements:\n\neasier to use (e.g. it’s a collection again - no need to call .characters, simpler slicing)\nbetter performance\nmore correct unicode support (e.g. handling emoji)\nmulti-line string literals (\"\"\"...\"\"\")\nCharacter has unicodeScalars\nstring slices now have a new type Substring (shares most functionality with String via StringProtocol)\n\nDictionary and Set improvements:\n\ncreating a dictionary from a sequence of key-value pairs\nfiltering dictionaries and sets into a value of the same type\nmapping dictionary values into a new dictionary\ngrouping sequences into a dictionary\nDictionary subscript with a default value (that can be assigned through)\n\nCodable - new API for encoding/decoding e.g. from JSON\n\\Person.name - new strongly typed key paths\nNSRange to/from Swift.Range conversion\nobserve(keyPath) { observed, change in ... } - block-based KVO\nprivate properties/methods are accessible from extensions in the same file\nwhere constraints for associatedtype\n@objc now needs to be added explicitly in most cases\nMutableCollection.swapAt(x, y)\npartial ranges (5..., ...5)\ngeneric subscripts (both parameters and return value can be generic)\ncombining class and protocol requirements: var x: UIView & Animatable\nexclusive access to memory - compiler and runtime checks for incorrectly accessing a value that is being modified in another place\nvarious improvements to Swift Package Manager\n\nObjC\n\ndetecting usage of APIs newer than the deployment target like in Swift (@available)\n\nApp Store & iTunes Connect\n\n🗄️ https://developer.apple.com/app-store/ \n🗄️ https://developer.apple.com/app-store/whats-new/ \n🗄️ https://developer.apple.com/app-store/product-page/\n\napplication icon for App Store will now be distributed in the asset catalog in the binary\napplication name limited to 30 characters\nnew subtitle field below the app name (also 30 chars)\ndescription will now be only be editable when submitting a new version\nnew promotional text field (170 chars) - shown at the beginning of description, can be edited at any time\nup to 3 app preview videos, previews will autoplay (but without audio)\nphased releases - users with automatic downloads will get the app gradually over one week\nin-app purchases can be promoted on the App Store separately from the app\nratings are no longer automatically reset after every update (though you can reset them manually)\nit’s strongly recommended (though not strictly required yet) to only use SKStoreReviewController to ask for reviews (1.1.7)\nprogramming IDEs that download executable code are now allowed on the App Store with some conditions (2.5.2)\nTestFlight external tester limit will be raised to 10K\n\nSafari\n\nhttps://developer.apple.com/library/archive/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_0.html\n\nMedia Capture API (camera and microphone access)\nWebAssembly\nWebRTC\nsupport for CSS stroke\nsupport for variable fonts\ndrag & drop events\nWebCrypto API updates\nif-top-url and unless-top-url rules in content blockers\nsupport for Brotli content encoding\n\nOther\n\nSwift Playgrounds 2.0:\n\nhosted feeds of playground content with a subscription model\nsupports Swift 4 and iOS 11 SDK, camera and AR APIs\nintegrated documentation\n8 new localizations\n\nBusiness Chat (preview) - a service for companies to let your customers contact you via iMessage\nHomeKit protocol is now open to everyone for free (for non-commercial purposes)\nan iCloud storage plan can be shared with the whole family",
"title": "New stuff from WWDC 2017",
"updatedAt": "2025-08-20T01:05:55Z"
}