{
  "$type": "site.standard.document",
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreihouwzcyczsvszunlob7dvgncgeghqz7zdn2x3yngj6npdnqeojpy"
    },
    "mimeType": "image/jpeg",
    "size": 116742
  },
  "description": "For the last 3 WWDC’s I’ve been collecting ordered lists of all new features and APIs added in the new releases of Apple’s OSes, either announced in the keynote or one of the talks, or in release notes, or just discovered by some API diff spelunkers :) I’m pretty late with that this year, because I spent some time instead on a couple of longer posts about notifications and Dark Mode, but here it is, just in time for the final launch and the September event.\n\nIn general, there seems to be noticeably less changes this year, which is good in a way - it should be easier for us to learn the new things and update our apps. For a moment it even looked like the “macOS SDK” section could be longer than the “iOS SDK” this time with all the Dark Mode changes, but iOS got a boost from the notification APIs and finally finished 3 lines ahead of macOS :)\n\nIf you want to learn more about any given topic, the best way is probably either to look it up in the shiny new Apple Developer Documentation (redesigned last year), or watch the recorded WWDC talk videos - either on Apple’s site, or using the great unofficial WWDC Mac app.\n\nPrevious editions are available here:\n\nWWDC 2017\nWWDC 2016\nWWDC 2015\n\nQuick links:\n\nmacOS 10.14 • iOS 12 • watchOS 5 • tvOS 12\n\nFoundation & Core Frameworks • macOS 10.14 SDK • iOS 12 SDK • watchOS 5 SDK • tvOS 12 SDK\n\nWeb APIs • Developer Tools • Safari 12\n\nmacOS 10.14 Mojave\n\n🗄️ https://www.apple.com/macos/mojave/\n\nDark Mode (more info: part1, part2)\n8 accent colors instead of just blue/graphite\nDesktop:\n\ndynamic wallpapers\ndesktop stacks\n\nScreenshots:\n\nthumbnail sliding in in the corner like on iOS that opens an edit view\noptions HUD while screenshot is being taken (Cmd+Shift+5)\nrecording screencasts from inside the screenshot tool\n\nnew redesigned Mac App Store\nnew apps ported from iOS with Marzipan:\n\nHome\nNews\nStocks\nVoice Memos\n\nBooks:\n\nrenamed from iBooks to Books\n\nFinder:\n\ngallery view replacing Cover Flow\nright sidebar shows more file metadata (e.g. for photos)\n\nthe set of fields shown can be configured per file type with the “Show Preview Options” context menu action (source)\n\nquick actions on files in the right sidebar and Touch Bar\nnew actions can be created in Automator (“Quick Action” template, replaces older “Service”)\nmarkup editing and video trimming inside Quicklook\niCloud Drive has now its own section in the folder sidebar (source)\n\nFaceTime:\n\ngroup calls - up to 32 people (delayed)\n\nMail:\n\nemoji picker button\nsuggests a folder to move a message?\nstationery feature removed\n\nSafari:\n\nfavicons in tabs\nprevents tracking through commenting systems and share buttons (loads on demand)\nmakes fingerprinting harder - lists only built-in fonts, no legacy browser plugins\n\niCloud Keychain:\n\ncan automatically create strong passwords for you when signing up\nhighlights duplicated passwords\nSiri can be asked to find saved passwords\n\nContinuity Camera - use your iPhone as an external camera to take a photo for the Mac\nforms will auto-su…",
  "path": "/2018/09/07/new-stuff-from-wwdc-2018/",
  "publishedAt": "2018-09-07T01:05:00Z",
  "site": "at://did:plc:oio4hkxaop4ao4wz2pp3f4cr/site.standard.publication/3mn5mackuba26",
  "tags": [
    "Cocoa",
    "iPhone",
    "Mac",
    "WWDC"
  ],
  "textContent": "For the last 3 WWDC’s I’ve been collecting ordered lists of all new features and APIs added in the new releases of Apple’s OSes, either announced in the keynote or one of the talks, or in release notes, or just discovered by some API diff spelunkers :) I’m pretty late with that this year, because I spent some time instead on a couple of longer posts about notifications and Dark Mode, but here it is, just in time for the final launch and the September event.\n\nIn general, there seems to be noticeably less changes this year, which is good in a way - it should be easier for us to learn the new things and update our apps. For a moment it even looked like the “macOS SDK” section could be longer than the “iOS SDK” this time with all the Dark Mode changes, but iOS got a boost from the notification APIs and finally finished 3 lines ahead of macOS :)\n\nIf you want to learn more about any given topic, the best way is probably either to look it up in the shiny new Apple Developer Documentation (redesigned last year), or watch the recorded WWDC talk videos - either on Apple’s site, or using the great unofficial WWDC Mac app.\n\nPrevious editions are available here:\n\nWWDC 2017\nWWDC 2016\nWWDC 2015\n\nQuick links:\n\nmacOS 10.14 • iOS 12 • watchOS 5 • tvOS 12\n\nFoundation & Core Frameworks • macOS 10.14 SDK • iOS 12 SDK • watchOS 5 SDK • tvOS 12 SDK\n\nWeb APIs • Developer Tools • Safari 12\n\nmacOS 10.14 Mojave\n\n🗄️ https://www.apple.com/macos/mojave/\n\nDark Mode (more info: part1, part2)\n8 accent colors instead of just blue/graphite\nDesktop:\n\ndynamic wallpapers\ndesktop stacks\n\nScreenshots:\n\nthumbnail sliding in in the corner like on iOS that opens an edit view\noptions HUD while screenshot is being taken (Cmd+Shift+5)\nrecording screencasts from inside the screenshot tool\n\nnew redesigned Mac App Store\nnew apps ported from iOS with Marzipan:\n\nHome\nNews\nStocks\nVoice Memos\n\nBooks:\n\nrenamed from iBooks to Books\n\nFinder:\n\ngallery view replacing Cover Flow\nright sidebar shows more file metadata (e.g. for photos)\n\nthe set of fields shown can be configured per file type with the “Show Preview Options” context menu action (source)\n\nquick actions on files in the right sidebar and Touch Bar\nnew actions can be created in Automator (“Quick Action” template, replaces older “Service”)\nmarkup editing and video trimming inside Quicklook\niCloud Drive has now its own section in the folder sidebar (source)\n\nFaceTime:\n\ngroup calls - up to 32 people (delayed)\n\nMail:\n\nemoji picker button\nsuggests a folder to move a message?\nstationery feature removed\n\nSafari:\n\nfavicons in tabs\nprevents tracking through commenting systems and share buttons (loads on demand)\nmakes fingerprinting harder - lists only built-in fonts, no legacy browser plugins\n\niCloud Keychain:\n\ncan automatically create strong passwords for you when signing up\nhighlights duplicated passwords\nSiri can be asked to find saved passwords\n\nContinuity Camera - use your iPhone as an external camera to take a photo for the Mac\nforms will auto-suggest security codes from recent SMS\naccess to camera and microphone is now protected with privacy popups\naccess to various locations on the disk e.g. Mail & iMessage databases, Safari data, backups is also protected and must be manually granted in the System Preferences\nOS updates have been moved from the App Store back to System Preferences\nsubpixel antialiasing option has been removed\noption to show recently used apps in the Dock (like on iPad), between the main and folders/minimized sections\n“Prefer External GPU” option in app properties (source)\nDVD player app rewritten, but hidden in /System (source)\nGrab utility app has been removed\nAPFS is now available for Fusion drives and HDDs\nfaster wake from sleep?\nSiri has access to HomeKit (source)\nremoved social network accounts from “Internet Accounts” (Twitter, Facebook, LinkedIn, Vimeo, Flickr) (source)\ndrops support for 2009-2011 macs (source)\nremoved “Back to My Mac” feature (source)\nMojave is the last version to support 32-bit code at all (32-bit-only frameworks like QuickTime and Java 1.6 will also be removed next year)\n\nSoftware > Legacy Software in System Report lists installed 32-bit software\n\nNOT merging with iOS 😎\n\niOS 12\n\n🗄️ https://www.apple.com/ios/ios-12/ \n🗄️ https://www.apple.com/ios/ios-12/features/\n\nmassively improved performance: some common actions up to 2x as fast on some devices\nSiri Shortcuts:\n\nany app can expose quick actions to Siri, to which the user assigns their own phrase and can launch them by saying it\nSiri will automatically suggest some shortcut actions that it thinks you might want to run at a given time (e.g. on lock screen and search screen)\nshortcuts can also be run from HomePod, Apple Watch\n\nShortcuts app:\n\nlets you create Siri shortcuts that execute whole workflows consisting of multiple chained actions\nincludes a gallery of pre-made shortcut examples\n\nDo Not Disturb:\n\nDND during bedtime\nwhen turning on DND in control center, there’s an option to automatically turn it off later\n\nNotifications:\n\nnotification tuning - turn off or silence notifications from notification center or lock screen (includes Siri suggestions)\ngrouped notifications\n\nScreen Time:\n\nnew section in Settings with reports on how you use your device\nweekly activity summary\napp limits: limit how much time you can spend daily in a given app, or in what hours some apps should be blocked\nparental controls: parents can get reports from their children’s devices and set time limits for them\n\nMeasure app - AR measurements\nAnimoji:\n\ntongue detection\nnew faces: ghost, koala, tiger, t-rex\nMemoji: personalized animoji with custom-built faces\nanimoji clips in messages can be up to 30s long\n\nBooks:\n\nrebuilt with a new Apple Music-style design\nrenamed from iBooks to Books\nnew book & audiobook store\n“Reading now” shows currently read book\n\nCamera:\n\n“apps” panel that lets you add text, shapes, stickers and animoji/memoji\n\nFaceTime:\n\ngroup calls - up to 32 people (delayed)\nstart a group call from a group chat\nmembers can join and leave at any time\n“roster” with people at the bottom, your face in the corner\nautomatically enlarges the view of the person who is speaking, but you can pick anyone manually\nincludes animoji and effects\n\nNews:\n\n“Browse” tab - lists channels and topics\nnew sidebar on the iPad\n\nPhotos:\n\nsearch moved to a new tab, includes search suggestions\nmuch improved places search\nsearching for events that you’ve attended\nsearching with multiple search terms\nmemories tab becomes “For You” tab, includes featured photos, shared album activity, suggestions for effects, sharing\nRAW file editing support\niCloud share links can be generated for specific photos (source)\nimproved import from an external camera?\nredesigned Albums tab?\nimproved QR code reader?\nimproved Portrait Lighting?\n\nPodcasts:\n\nsupport for chapters in MP3 podcasts (source)\n\nSafari:\n\nfavicons in tabs\nprevents tracking through commenting systems and share buttons\nmakes fingerprinting harder\nSafari on iPhone X now has tabs in landscape mode (source)\n\nStocks:\n\nrebuilt with a new design\nincludes sparklines, Apple News stories, interactive charts with after-hours prices\navailable on iPad\n\nWallet: supports student ID cards (6 US universities for now)\nVoice Memos:\n\nrebuilt with a new design\navailable on iPad\niCloud support\n\niCloud Keychain:\n\ncan automatically create strong passwords for you when signing up (on the web and in apps)\nhighlights duplicated passwords\nSiri can be asked to find saved passwords\n\nupdated iPad navigation gestures\ntrackpad mode can now be activated through the space bar on non-force-touch devices (source)\npicture-in-picture on iPad has rounded corners (source)\niPhone-only apps on iPad (*sigh*, Instagram…) now render on an iPhone6-sized screen (source)\nprevents accidental screenshots on iPhone X when picking up the phone\neasier closing of apps on iPhone X (source)\nCarPlay now supports third-party navigation apps\nyou can add multiple faces to FaceID (source)\neasier way to retry FaceID login (source)\nin Settings > Cellular, the app list is now sorted by amount of data used (source)\nsecure sharing of saved passwords with Macs, Apple TVs and other iOS devices\nUSB restricted mode (source)\nautomatic updates? (source)\nforms will auto-suggest security codes from recent SMS\nnew file format for AR: USDZ - open file format supported by multiple companies, allows sharing of scene descriptions with animations through Messages/Mail/News/etc. and on websites\nmore colors available in the markup editor (source)\nSiri support for translation\nbattery usage stats in Settings shows data for 10 days\navailable on all the same devices as iOS 11\n\nwatchOS 5\n\n🗄️ https://www.apple.com/watchos/watchos-5\n\nNotifications:\n\nnotification grouping\ninteractive notifications\n\nPodcasts app\nWalkie-Talkie app\nnew watch faces: Breathe, Fire & Water, Liquid Metal, Vapor\nActivity:\n\nchallenging a friend to a multi-day competition\nimproved precision of tracking based on tons of real-life data\n\nFaceTime:\n\nsupports group calls (voice) (delayed)\n\nSiri watch face:\n\nnew content: sports scores, navigation info, heart rate\nSiri shortcut suggestions\n\nStocks:\n\nstocks can be added and removed on the watch (source)\n\nTimer:\n\nshows a list of recently used custom timers (source)\n\nWallet: supports student ID cards (6 US universities for now)\nWeather:\n\ncities can be added and removed on the watch (source)\neasy switching between weather conditions / temperature / rain (source)\nshows UV index, air quality, wind speed and a 10-day forecast\n\nWorkouts:\n\nYoga and Hiking workout types\nrolling mile pace (previous mile)\npace alerts when you’re below or above some pace\ncadence (steps per minute)\nautomatic detection of a started workout (retroactively counts from the start) and finished workout\n\nWorld Clock:\n\ncities can be added and removed on the watch (source)\n\nlaunching Siri by raising the wrist and speaking (“Hey Siri” not required anymore)\nwhen turning on DND in control center, there’s an option to automatically turn it off later\ncontrol center buttons can be rearranged (source)\nyou can connect to unknown WiFi networks, entering the password on the watch (source)\ncontrol center and notifications panel accessible from apps (source)\nWebKit web content in mail and messages\nmemories in Photo face?\nnew emoji picker?\nremoved Time Travel feature (source)\nremoved “Prominent Haptic” option (source)\ndrops support for series 0 (source)\n\ntvOS 12\n\nZero Sign-on - automatically logs you in if you’re on the TV provider’s internet\ntitles for screensaver locations, swiping between locations\nnew screensaver location with views from ISS\nDolby Atmos support\nsecure password sharing with iOS devices (including other people’s iPhones)\nsupport for VPP (Volume Purchase Program)\n\nFoundation & Core Frameworks\n\nhttps://developer.apple.com/documentation/ios_release_notes/ios_12_release_notes/foundation_release_notes\n\nCore ML 2: faster execution, new batching API, model quantization (much smaller models), custom models\nNatural Language - new easy to use Swift-focused API for natural language parsing, supports several languages\nNetwork - new low level network framework used by URLSession, like BSD sockets (Swift and C API)\nos_log: added os_signpost and pointsOfInterest log category for tracing and measuring execution time in Instruments\nNSCoding: insecure coding is deprecated:\n\nnew initializers and encode/decode methods in NSKeyedArchiver and NSKeyedUnarchiver that use secure coding and return/throw NSErrors instead of exceptions\nold initializers and encode/decode methods are deprecated\nNSValueTransformer: unarchiveFromDataTransformerName and keyedUnarchiveFromDataTransformerName are deprecated, replaced by secureUnarchiveFromDataTransformerName\na couple of Foundation classes have adopted secure coding\n\nNSUserDefaults: synchronize doesn’t do anything anymore, shouldn’t be used when targetting only latest OSes, will be deprecated (source)\n\nmacOS 10.14 SDK\n\n🗄️ https://developer.apple.com/macos/ \n🗄️ https://developer.apple.com/macos/whats-new/ \n🗄️ https://developer.apple.com/app-store/mac/ \n🗄️ https://developer.apple.com/developer-id/ \n🗄️ https://developer.apple.com/machine-learning/ \n🗄️ https://developer.apple.com/metal/ \nhttps://developer.apple.com/documentation/appkit/appkit_release_notes_for_macos_10_14 \nhttp://codeworkshop.net/objc-diff/sdkdiffs/macos/10.14/\n\nGeneral:\n\nnew enhanced runtime (opt-in): SIP protection for your apps, code validation, protection from debugging and code injection\nNotary Service (opt-in for now, requires enhanced runtime): extension to the Developer ID program, every binary is submitted to the service where it’s automatically checked for malware and re-signed\nsome mysterious changes to the app sandbox that allowed some indie apps to come back to the Mac App Store (sadly, we still don’t know any details) (source, still waiting for that blog post 💀)\nadded new restrictions and APIs for sending Apple Events between apps (article by Felix Schwarz)\nFinder quick actions can be provided by apps - this is not documented yet, but here’s a guide by Daniel Jalkut\ncontinued swiftification of existing APIs\n\nNSImage.Name and other similar types are now a String typealias\nsome more formal protocols\n\nNew frameworks and targets:\n\nCreate ML - a Swift-based tool for training ML models on your Mac\nInstruments Package target type for creating Instruments plugins\nMarzipan (codename) - a way to run iOS apps on macOS, coming officially in 2019\nUserNotifications framework from iOS brought to the Mac, including some of the new parts (?)\n\nFramework updates:\n\nAVFoundation:\n\nupdated Portrait Segmentation API and Depth API\n\nMetal:\n\nGPU-Driven Command Encoding\nnew performance shaders for machine learning\nfast ray tracing (MPSRayIntersector)\n\nStoreKit:\n\nSKStoreReviewController from iOS (for requesting reviews) now also works with Mac App Store\n\nVision:\n\nsome new APIs that I don’t understand enough to comment on :)\n\nAppKit updates:\n\nNSAppearance:\n\nbestMatch(from:), thread-local current variable\n\nNSAppearance.Name:\n\nadded darkAqua and accessibility* appearances\n\nNSApplication:\n\nregisterForRemoteNotifications() and other new methods for UserNotifications integration, old API is deprecated\n\nNSApplication:\n\nnow conforms to NSAppearanceCustomization\n\nNSButton:\n\nadded contentTintColor\n\nNSColor:\n\nadded withSystemEffect to create sets of related colors\nadded new semantic colors, deprecated some older colors\nadded controlAccentColor\ndeprecated APIs related to old blue/graphite tint color\n\nNSImageView:\n\nadded contentTintColor\n\nNSMenu:\n\nitems now has a setter\n\nNSRequiresAquaSystemAppearance Info.plist key for controlling app behavior in Dark Mode\nNSResponder:\n\nContinuity Camera: implement validRequestor(forSendType:returnType:)\n\nNSTableView:\n\nchanged behavior of setting backgroundStyle on descendant views\n\nNSTabView:\n\ntabViewItems now has a setter\n\nNSTextView:\n\nfieldEditor()\nscrollable(...)TextView - creates a text view wrapped in a scroll view\nperformValidatedReplacement(in:with:) - replaces text as if the user edited it (matching style)\n\nNSToolbar:\n\ncenteredItemIdentifier - lets you put an item in the center\nuses AutoLayout to do measurements of items (unless they’re set explicitly)\n\nNSView:\n\nadded viewDidChangeEffectiveAppearance callback\nall views now automatically use layers (own or shared) - no need to set wantsLayer\n\nNSView.BackgroundStyle:\n\nrenamed light, dark to normal, emphasized\n\nNSVisualEffectView:\n\nautomatically chooses the right vibrant appearance, don’t set it explicitly now\n\nNSVisualEffectView.Material:\n\nadded several new semantic materials and deprecated old color-based ones\n\nNSWindow:\n\nadded appearanceSource\n\nsome AppKit classes have adopted NSSecureCoding\n\nDeprecations:\n\nOpenGL & OpenCL (soft-deprecated)\nNSUserNotification & NSUserNotificationCenter\nNSEnableScreenUpdates() & NSDisableScreenUpdates()\nold WebView (comment)\nNSDraggingInfo.draggedImage\nusing instance variables of Cocoa classes directly\n\niOS 12 SDK\n\n🗄️ https://developer.apple.com/ios/ \n🗄️ https://developer.apple.com/ios/whats-new/ \n🗄️ https://developer.apple.com/arkit/ \n🗄️ https://developer.apple.com/sirikit/ \n🗄️ https://developer.apple.com/machine-learning/ \n🗄️ https://developer.apple.com/metal/ \nhttps://developer.apple.com/documentation/ios_release_notes/ios_12_release_notes \nhttp://codeworkshop.net/objc-diff/sdkdiffs/ios/12.0/\n\nGeneral:\n\nperformance improvements across the system:\n\nsmarter scheduling of prefetch in table/collection views, so that it doesn’t slow down loading current row\nimproved scrolling performance in general\nautomatic backing store: OS automatically chooses a backing store for views with less bits per pixel if full color is not needed\nAutoLayout improvements - some methods that had exponential complexity are now O(n)\n\ncontinued swiftification of existing APIs\n\nsome types and constants became subtypes of others (e.g. UIApplication.State, notification names)\nsome global functions became methods (e.g. UIEdgeInsetsInsetRect)\nNSStringFrom* / NS*FromString replaced with Codable and debug printing support, old behavior is available in new NSCoder methods like string(for:)\n\nNew frameworks and targets:\n\nAuthenticationServices - a framework for integrating third-party password managers like 1Password with the OS\n\nASWebAuthenticationSession - lets you automatically log in users to apps using Safari sessions\n\nAutofill Credential Provider extension type - for third-party password managers\nCarPlay framework - for implementing navigation apps for CarPlay\nUnwanted Communication extension type (see IdentityLookup)\n\nFramework updates:\n\nARKit 2:\n\nimproved face tracking (tracking eye movement and tongue)\nenvironment texturing - reflecting the real environment on AR objects (not visible parts simulated using ML)\n2D image tracking\n3D object detection\npersistent scenes and multi-user AR (sharing maps between sessions and devices)\n\nAVFoundation:\n\nupdated Portrait Segmentation API and Depth API\n\nCore Motion:\n\nadded some APIs for apps helping people with Parkinson’s disease\n\nHealthKit:\n\naccess to user’s medical history (HKClinicalType)\nrewritten workout APIs\n\nIdentityLookup:\n\nnew APIs for writing extensions that let users report spam calls and messages\n\nMetal:\n\nGPU-Driven Command Encoding\nnew performance shaders for machine learning\nfast ray tracing (MPSRayIntersector)\n\nSiriKit:\n\nnew APIs for working with Siri Shortcuts\n\nUserNotifications: APIs for handling new notification features:\n\nUNAuthorizationOptions:\n\nprovisional to request “provisional authorization” (notifications in quiet mode)\ncriticalAlert to request access to critical alerts\nprovidesAppNotificationSettings to provide a link to notification settings screen\n\nUNUserNotificationCenterDelegate: userNotificationCenter(_:openSettingsFor:) callback to open the notification settings screen\nUNNotificationExtensionUserInteractionEnabled option to enable interaction with the Notification Content extension UI\nUNNotificationCategory: categorySummaryFormat for customizing the notification group summary\nUNNotificationContent: summaryArgument and summaryArgumentCount\nUNNotificationSound: methods for creating critical alert sounds\nNSExtensionContext:\n\nnotificationActions lets you update actions while the Notification Content extension is open\nperformNotificationDefaultAction() launches your app\ndismissNotificationContextExtension() hides the extension\n\nVision:\n\nsome new APIs\n\nUIKit updates:\n\nNSUserActivity:\n\nisEligibleForPrediction, suggestedInvocationPhrase for Siri Shortcuts integration\nmethods for deleting user activities\n\nUITextInputPasswordRules - for defining requirements for generated passwords in a “password rules language”\n\nfor web forms, use the passwordrules attribute and Apple’s Password Rules Validation Tool\n\nUITextContentType:\n\nnewPassword and oneTimeCode types\n\nUIUserInterfaceStyle (light/dark) from tvOS - only for CarPlay (for now :)\n\nDeprecations:\n\nOpenGL & OpenCL (soft-deprecated)\nUIWebView (comment)\n\nwatchOS 5 SDK\n\n🗄️ https://developer.apple.com/watchos/ \n🗄️ https://developer.apple.com/watchos/whats-new/ \n🗄️ https://developer.apple.com/sirikit/ \nhttps://developer.apple.com/documentation/watchos_release_notes/watchos_5_release_notes \nhttp://codeworkshop.net/objc-diff/sdkdiffs/watchos/5.0/\n\nGeneral:\n\nAudio background mode, which lets non-workout apps (e.g. podcasts) play in the background (which was sort of mentioned as available in 2015, but then somehow wasn’t?)\nassets added only in 38mm version will be used as fallback for 42mm if that variant is missing\n\nFramework updates:\n\nAVFoundation:\n\ndirect access to AVAudioPlayer and AVAudioEngine (though they seem to have been available before?…)\n\nCore Motion:\n\nadded some APIs for apps helping people with Parkinson’s disease\n\nHealthKit:\n\naccess to user’s medical history (HKClinicalType)\nrewritten workout APIs:\n\nupdated HKWorkoutSession, added HKWorkoutBuilder and HKLiveWorkoutBuilder\nif a workout app crashes during a workout, it’s relaunched automatically\nHKHealthStore.recoverActiveWorkoutSession(completion:) can be used to recover a lost workout\n\nMedia Player - parts of the framework now available on watchOS, including:\n\nMPNowPlayingInfoCenter for telling the OS about the media being played\nMPRemoteCommandCenter for reacting to actions like play/pause etc. in the Now Playing system view\n\nSiriKit:\n\nnew APIs for working with Siri Shortcuts\n\nUserNotifications: APIs for handling new notification features:\n\nUNAuthorizationOptions:\n\nprovisional to request “provisional authorization” (notifications in quiet mode)\ncriticalAlert to request access to critical alerts\nprovidesAppNotificationSettings to provide a link to notification settings screen\n\nUNNotificationSound: methods for creating critical alert sounds\n“Handles Grouping” option in the notification scene to route new incoming notifications to an open notification view\n“Has Interactive Interface” option in the notification scene to create a new “Dynamic Interactive Interface” notification view\nnotifications opened from the notification center will now show the dynamic version if possible\nWKUserNotificationInterfaceController:\n\nnotificationActions lets you update actions while the notification view is open\nperformNotificationDefaultAction() launches your app\nperformDismissAction() hides the notification\nunified didReceive() for local and remote notifications\n\nWatchConnectivity:\n\nWCSessionFileTransfer: added progress (which apparently has something to do with transferring audio content, but documentation is missing)\n\nWatchKit updates:\n\nNSUserActivity:\n\nisEligibleForPrediction, suggestedInvocationPhrase for Siri Shortcuts integration\nmethods for deleting user activities\n\nUIFont.TextStyle: title styles (largeTitle, title1, title2, title3) are available for use in IB and largeTitle also in code (preferredFont(forTextStyle:))\nWKInterfaceNowPlayingView - a “now playing” view like in the system panel, which you can embed inside apps like Workouts app does (only available in IB)\nWKInterfaceVolumeControlView - a separate control just for setting volume (only available in IB)\nWKRelevantShortcutRefreshBackgroundTask - a background task that lets you set up Siri shortcuts\nWKIntentDidRunRefreshBackgroundTask - a background task that runs when SiriKit launches your app\n\ntvOS 12 SDK\n\n🗄️ https://developer.apple.com/tvos/ \nhttps://developer.apple.com/documentation/tvos_release_notes/tvos_12_release_notes\n\nNew frameworks:\n\nTVUIKit framework - a set of TVML controls ported to UIKit:\n\nTVCaptionButtonView - a caption button that performs some action\nTVCardView - a card view with an arbitrarily composed hierarchy of parts inside\nTVPosterView - a poster control\nTVMonogramView - a person’s avatar view\nTVLockupView - base class for all of the above, handles animation on focus\n\nFramework updates:\n\nAVFoundation: updated Portrait Segmentation API and Depth API\nMetal:\n\nGPU-Driven Command Encoding\nnew performance shaders for machine learning\nfast ray tracing (MPSRayIntersector)\n\nVision: some new APIs\n\nUI updates:\n\nUILabel:\n\nadded enablesMarqueeWhenAncestorFocused option that animates the text when it’s too long to fit\n\nUITextContentType:\n\nnewPassword and oneTimeCode types\n\nUITextInputPasswordRules - for defining requirements for generated passwords\nTVDigitEntryViewController - a view controller that shows a screen for entering digits, e.g. passcode\nthe focus engine now supports apps other than UIKit/SpriteKit/SceneKit apps, e.g. games written in Metal:\n\nUIFocusSystem: init(for:) to get it from the environment, focusedItem to get currently focused item\nUIFocusEnvironment: parentFocusEnvironment, focusItemContainer\nUIFocusItem: didHintFocusMovement\nUIFocusItemContainer and UIFocusItemScrollableContainer protocols\nUIFocusMovementHint\n\nDeprecations:\n\nOpenGL & OpenCL are soft-deprecated\n\nWeb APIs\n\nMapKit JS for embedding Apple Maps on websites\nMusicKit JS for embedding Apple Music and building custom music players using it\n\nDeveloper Tools\n\nXcode 10\n\n🗄️ https://developer.apple.com/xcode/ \n🗄️ https://developer.apple.com/xcode/whats-new/ \nhttps://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes\n\ntools for working with Dark Mode:\n\nsupport for Dark Mode in asset catalogs (images and colors)\nswitching dark/light mode in storyboards and in a running app\n\neditor:\n\nmulti-cursor editing and column selection\njump to definition shows a list of implementations you can pick from\nsome new actions for finding and selecting code in the menu\nimproved code completion accuracy\nsupports scrolling beyond last line\nrestored code folding ribbon from Xcode 8 and earlier\nObject Library is now a floating popover, accessed from a button on the right side of the toolbar\nsupport for NSGridView designing in Interface Builder\ndocumentation popups that include code are syntax highlighted (source)\n\nversion control:\n\nsource control change bar - displays changes on the left next to line numbers\ntracks upstream changes in the repo and highlights unmerged changes and conflicts\ngit pull action supports rebase\nhelps you create SSH keys and uploads public keys to service accounts\nadded support for Bitbucket and GitLab\nremoved support for SVN (source)\n\ntesting:\n\ntests (unit and UI) can be executed in parallel on multiple copies of your Mac app or multiple simulators (“ludicrously fast” ;)\ntest order can be randomized\nyou can automatically include new tests in test bundles\n\nperformance improvements:\n\nIB: up to 40% faster document opening, up to 3x faster canvas interaction\neditor loads large documents up to 2.5x faster\ndownloading symbols from devices is 5x faster\nfaster LLDB startup\nfaster loading of memory debugger\n\nnew build system is on by default, is faster and uses less memory, and has better diagnostics for your project configuration\nnew compact layout for memory debugger\nView Hierarchy debugger shows color names and appearance info\ncustom Instruments packages\nplaygrounds have a REPL-like mode, evaluating each new entered line\nschemes are now created as shared by default\nMetal Dependency Viewer and Metal Shader Debugger\nXcode no longer compiles 32-bit Mac apps? (source)\n\nSwift\n\nhttps://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes/swift_4_2_release_notes_for_xcode_10\n\nSwift 4.2: see this summary by Paul Hudson\nSwift 5: coming early next year, will have binary ABI compatibility\n-Osize optimization - tries to minimize the binary size\n\nObjC\n\nARC support for object pointers in C structs (source)\n\nApp Store & iTunes Connect\n\niTunes Connect is renamed as App Store Connect, same for iTunes Connect app for iOS (source)\nfree trials for apps are allowed in the form of IAPs (source, but see also: Ersatz Free Trials)\napps can give users access to IAP-protected content that was acquired on another platform (source)\napps must mention new features in “What’s New” (source)\nApp Review will now pay closer attention to access purpose strings (they should explain specifically how the data you request will be used)\nall apps will be required to have a privacy policy since Oct 3 (source)\nApp Store apps have been removed from the iTunes Affiliate Program (source)\nadded some restrictions on how private data from users' phones can be used (source)\nmore info about App Store guidelines changes here: https://www.macrumors.com/2018/06/04/apple-revamps-app-store-guidelines-ios-12/\n\nSafari 12\n\n🗄️ https://developer.apple.com/safari/whats-new/ \nhttps://developer.apple.com/safari/technology-preview/release-notes/\n\nsupport for viewing USDZ models\nFullscreen API on iOS for iPad\nsupport for font collections in WOFF2 and TTC files\nsupport for font-display CSS property\nsupport for SVG in OpenType fonts\nsupport for cross-origin-window-policy and cross-origin-resource-policy\nWebGL Shader Debugging\ndeprecated .safariextz extensions, removed support for .safariextz extensions not from the Gallery\nsome content-blocking extensions using old APIs (e.g. Ghostery) are disabled on first launch (can be reenabled)\nremoved support for legacy plugins except Flash\n\nA couple more links if you want to go deeper :)\n\ncomplete SDK diffs\ndiffs in Apple’s documentation\ncleaned up iOS 12 diffs by Paul Hudson",
  "title": "New stuff from WWDC 2018",
  "updatedAt": "2025-08-20T01:05:55Z"
}