MacKuba

🍎 Kuba Suder's blog on Mac & iOS development

New stuff from WWDC 2018

Categories: Cocoa, Mac, WWDC, iPhone Comments: 0 comments

WWDC 2018

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.

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

If 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.

Previous editions are available here:


Quick links:

macOS 10.14 β€’ iOS 12 β€’ watchOS 5 β€’ tvOS 12

Foundation & Core Frameworks β€’ macOS 10.14 SDK β€’ iOS 12 SDK β€’ watchOS 5 SDK β€’ tvOS 12 SDK

Web APIs β€’ Developer Tools β€’ Safari 12


macOS 10.14 Mojave

πŸ—„οΈ https://www.apple.com/macos/mojave/

  • Dark Mode (more info: part1, part2)
  • 8 accent colors instead of just blue/graphite
  • Desktop:
    • dynamic wallpapers
    • desktop stacks
  • Screenshots:
    • thumbnail sliding in in the corner like on iOS that opens an edit view
    • options HUD while screenshot is being taken (Cmd+Shift+5)
    • recording screencasts from inside the screenshot tool
  • new redesigned Mac App Store
  • new apps ported from iOS with Marzipan:
    • Home
    • News
    • Stocks
    • Voice Memos
  • Books:
    • renamed from iBooks to Books
  • Finder:
    • gallery view replacing Cover Flow
    • right sidebar shows more file metadata (e.g. for photos)
      • the set of fields shown can be configured per file type with the “Show Preview Options” context menu action (source)
    • quick actions on files in the right sidebar and Touch Bar
    • new actions can be created in Automator (“Quick Action” template, replaces older “Service”)
    • markup editing and video trimming inside Quicklook
    • iCloud Drive has now its own section in the folder sidebar (source)
  • FaceTime:
    • group calls - up to 32 people (delayed)
  • Mail:
    • emoji picker button
    • suggests a folder to move a message?
    • stationery feature removed
  • Safari:
  • iCloud Keychain:
    • can automatically create strong passwords for you when signing up
    • highlights duplicated passwords
    • Siri can be asked to find saved passwords
  • Continuity Camera - use your iPhone as an external camera to take a photo for the Mac
  • forms will auto-suggest security codes from recent SMS
  • access to camera and microphone is now protected with privacy popups
  • access 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
  • OS updates have been moved from the App Store back to System Preferences
  • subpixel antialiasing option has been removed
  • option to show recently used apps in the Dock (like on iPad), between the main and folders/minimized sections
  • “Prefer External GPU” option in app properties (source)
  • DVD player app rewritten, but hidden in /System (source)
  • Grab utility app has been removed
  • APFS is now available for Fusion drives and HDDs
  • faster wake from sleep?
  • Siri has access to HomeKit (source)
  • removed social network accounts from “Internet Accounts” (Twitter, Facebook, LinkedIn, Vimeo, Flickr) (source)
  • drops support for 2009-2011 macs (source)
  • removed “Back to My Mac” feature (source)
  • Mojave 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)
    • Software > Legacy Software in System Report lists installed 32-bit software
  • NOT merging with iOS 😎

iOS 12

πŸ—„οΈ https://www.apple.com/ios/ios-12/
πŸ—„οΈ https://www.apple.com/ios/ios-12/features/

  • massively improved performance: some common actions up to 2x as fast on some devices
  • Siri Shortcuts:
    • any app can expose quick actions to Siri, to which the user assigns their own phrase and can launch them by saying it
    • Siri 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)
    • shortcuts can also be run from HomePod, Apple Watch
  • Shortcuts app:
    • lets you create Siri shortcuts that execute whole workflows consisting of multiple chained actions
    • includes a gallery of pre-made shortcut examples
  • Do Not Disturb:
    • DND during bedtime
    • when turning on DND in control center, there’s an option to automatically turn it off later
  • Notifications:
    • notification tuning - turn off or silence notifications from notification center or lock screen (includes Siri suggestions)
    • grouped notifications
  • Screen Time:
    • new section in Settings with reports on how you use your device
    • weekly activity summary
    • app limits: limit how much time you can spend daily in a given app, or in what hours some apps should be blocked
    • parental controls: parents can get reports from their children’s devices and set time limits for them
  • Measure app - AR measurements
  • Animoji:
    • tongue detection
    • new faces: ghost, koala, tiger, t-rex
    • Memoji: personalized animoji with custom-built faces
    • animoji clips in messages can be up to 30s long
  • Books:
    • rebuilt with a new Apple Music-style design
    • renamed from iBooks to Books
    • new book & audiobook store
    • “Reading now” shows currently read book
  • Camera:
    • “apps” panel that lets you add text, shapes, stickers and animoji/memoji
  • FaceTime:
    • group calls - up to 32 people (delayed)
    • start a group call from a group chat
    • members can join and leave at any time
    • “roster” with people at the bottom, your face in the corner
    • automatically enlarges the view of the person who is speaking, but you can pick anyone manually
    • includes animoji and effects
  • News:
    • “Browse” tab - lists channels and topics
    • new sidebar on the iPad
  • Photos:
    • search moved to a new tab, includes search suggestions
    • much improved places search
    • searching for events that you’ve attended
    • searching with multiple search terms
    • memories tab becomes “For You” tab, includes featured photos, shared album activity, suggestions for effects, sharing
    • RAW file editing support
    • iCloud share links can be generated for specific photos (source)
    • improved import from an external camera?
    • redesigned Albums tab?
    • improved QR code reader?
    • improved Portrait Lighting?
  • Podcasts:
    • support for chapters in MP3 podcasts (source)
  • Safari:
  • Stocks:
    • rebuilt with a new design
    • includes sparklines, Apple News stories, interactive charts with after-hours prices
    • available on iPad
  • Wallet: supports student ID cards (6 US universities for now)
  • Voice Memos:
    • rebuilt with a new design
    • available on iPad
    • iCloud support
  • iCloud Keychain:
    • can automatically create strong passwords for you when signing up (on the web and in apps)
    • highlights duplicated passwords
    • Siri can be asked to find saved passwords
  • updated iPad navigation gestures
  • trackpad mode can now be activated through the space bar on non-force-touch devices (source)
  • picture-in-picture on iPad has rounded corners (source)
  • iPhone-only apps on iPad (*sigh*, Instagram…) now render on an iPhone6-sized screen (source)
  • prevents accidental screenshots on iPhone X when picking up the phone
  • easier closing of apps on iPhone X (source)
  • CarPlay now supports third-party navigation apps
  • you can add multiple faces to FaceID (source)
  • easier way to retry FaceID login (source)
  • in Settings > Cellular, the app list is now sorted by amount of data used (source)
  • secure sharing of saved passwords with Macs, Apple TVs and other iOS devices
  • USB restricted mode (source)
  • automatic updates? (source)
  • forms will auto-suggest security codes from recent SMS
  • new 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
  • more colors available in the markup editor (source)
  • Siri support for translation
  • battery usage stats in Settings shows data for 10 days
  • available on all the same devices as iOS 11

watchOS 5

πŸ—„οΈ https://www.apple.com/watchos/watchos-5

  • Notifications:
    • notification grouping
    • interactive notifications
  • Podcasts app
  • Walkie-Talkie app
  • new watch faces: Breathe, Fire & Water, Liquid Metal, Vapor
  • Activity:
    • challenging a friend to a multi-day competition
    • improved precision of tracking based on tons of real-life data
  • FaceTime:
    • supports group calls (voice) (delayed)
  • Siri watch face:
    • new content: sports scores, navigation info, heart rate
    • Siri shortcut suggestions
  • Stocks:
    • stocks can be added and removed on the watch (source)
  • Timer:
    • shows a list of recently used custom timers (source)
  • Wallet: supports student ID cards (6 US universities for now)
  • Weather:
    • cities can be added and removed on the watch (source)
    • easy switching between weather conditions / temperature / rain (source)
    • shows UV index, air quality, wind speed and a 10-day forecast
  • Workouts:
    • Yoga and Hiking workout types
    • rolling mile pace (previous mile)
    • pace alerts when you’re below or above some pace
    • cadence (steps per minute)
    • automatic detection of a started workout (retroactively counts from the start) and finished workout
  • World Clock:
    • cities can be added and removed on the watch (source)
  • launching Siri by raising the wrist and speaking (“Hey Siri” not required anymore)
  • when turning on DND in control center, there’s an option to automatically turn it off later
  • control center buttons can be rearranged (source)
  • you can connect to unknown WiFi networks, entering the password on the watch (source)
  • control center and notifications panel accessible from apps (source)
  • WebKit web content in mail and messages
  • memories in Photo face?
  • new emoji picker?
  • removed Time Travel feature (source)
  • removed “Prominent Haptic” option (source)
  • drops support for series 0 (source)

tvOS 12

  • Zero Sign-on - automatically logs you in if you’re on the TV provider’s internet
  • titles for screensaver locations, swiping between locations
  • new screensaver location with views from ISS
  • Dolby Atmos support
  • secure password sharing with iOS devices (including other people’s iPhones)
  • support for VPP (Volume Purchase Program)

Foundation & Core Frameworks

https://developer.apple.com/documentation/ios_release_notes/ios_12_release_notes/foundation_release_notes

  • Core ML 2: faster execution, new batching API, model quantization (much smaller models), custom models
  • Natural Language - new easy to use Swift-focused API for natural language parsing, supports several languages
  • Network - new low level network framework used by URLSession, like BSD sockets (Swift and C API)
  • os_log: added os_signpost and pointsOfInterest log category for tracing and measuring execution time in Instruments
  • NSCoding: insecure coding is deprecated:
    • new initializers and encode/decode methods in NSKeyedArchiver and NSKeyedUnarchiver that use secure coding and return/throw NSErrors instead of exceptions
    • old initializers and encode/decode methods are deprecated
    • NSValueTransformer: unarchiveFromDataTransformerName and keyedUnarchiveFromDataTransformerName are deprecated, replaced by secureUnarchiveFromDataTransformerName
    • a couple of Foundation classes have adopted secure coding
  • NSUserDefaults: synchronize doesn’t do anything anymore, shouldn’t be used when targetting only latest OSes, will be deprecated (source)

macOS 10.14 SDK

πŸ—„οΈ https://developer.apple.com/macos/
πŸ—„οΈ https://developer.apple.com/macos/whats-new/
πŸ—„οΈ https://developer.apple.com/app-store/mac/
πŸ—„οΈ https://developer.apple.com/developer-id/
πŸ—„οΈ https://developer.apple.com/machine-learning/
πŸ—„οΈ https://developer.apple.com/metal/
https://developer.apple.com/documentation/appkit/appkit_release_notes_for_macos_10_14
http://codeworkshop.net/objc-diff/sdkdiffs/macos/10.14/

General:

  • new enhanced runtime (opt-in): SIP protection for your apps, code validation, protection from debugging and code injection
  • Notary 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
  • some 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 πŸ’€)
  • added new restrictions and APIs for sending Apple Events between apps (article by Felix Schwarz)
  • Finder quick actions can be provided by apps - this is not documented yet, but here’s a guide by Daniel Jalkut
  • continued swiftification of existing APIs
    • NSImage.Name and other similar types are now a String typealias
    • some more formal protocols

New frameworks and targets:

  • Create ML - a Swift-based tool for training ML models on your Mac
  • Instruments Package target type for creating Instruments plugins
  • Marzipan (codename) - a way to run iOS apps on macOS, coming officially in 2019
  • UserNotifications framework from iOS brought to the Mac, including some of the new parts (?)

Framework updates:

  • AVFoundation:
    • updated Portrait Segmentation API and Depth API
  • Metal:
    • GPU-Driven Command Encoding
    • new performance shaders for machine learning
    • fast ray tracing (MPSRayIntersector)
  • StoreKit:
    • SKStoreReviewController from iOS (for requesting reviews) now also works with Mac App Store
  • Vision:
    • some new APIs that I don’t understand enough to comment on :)

AppKit updates:

  • NSAppearance:
    • bestMatch(from:), thread-local current variable
  • NSAppearance.Name:
    • added darkAqua and accessibility* appearances
  • NSApplication:
    • registerForRemoteNotifications() and other new methods for UserNotifications integration, old API is deprecated
  • NSApplication:
    • now conforms to NSAppearanceCustomization
  • NSButton:
    • added contentTintColor
  • NSColor:
    • added withSystemEffect to create sets of related colors
    • added new semantic colors, deprecated some older colors
    • added controlAccentColor
    • deprecated APIs related to old blue/graphite tint color
  • NSImageView:
    • added contentTintColor
  • NSMenu:
    • items now has a setter
  • NSRequiresAquaSystemAppearance Info.plist key for controlling app behavior in Dark Mode
  • NSResponder:
    • Continuity Camera: implement validRequestor(forSendType:returnType:)
  • NSTableView:
    • changed behavior of setting backgroundStyle on descendant views
  • NSTabView:
    • tabViewItems now has a setter
  • NSTextView:
    • fieldEditor()
    • scrollable(...)TextView - creates a text view wrapped in a scroll view
    • performValidatedReplacement(in:with:) - replaces text as if the user edited it (matching style)
  • NSToolbar:
    • centeredItemIdentifier - lets you put an item in the center
    • uses AutoLayout to do measurements of items (unless they’re set explicitly)
  • NSView:
    • added viewDidChangeEffectiveAppearance callback
    • all views now automatically use layers (own or shared) - no need to set wantsLayer
  • NSView.BackgroundStyle:
    • renamed light, dark to normal, emphasized
  • NSVisualEffectView:
    • automatically chooses the right vibrant appearance, don’t set it explicitly now
  • NSVisualEffectView.Material:
    • added several new semantic materials and deprecated old color-based ones
  • NSWindow:
    • added appearanceSource
  • some AppKit classes have adopted NSSecureCoding

Deprecations:

  • OpenGL & OpenCL (soft-deprecated)
  • NSUserNotification & NSUserNotificationCenter
  • NSEnableScreenUpdates() & NSDisableScreenUpdates()
  • old WebView (comment)
  • NSDraggingInfo.draggedImage
  • using instance variables of Cocoa classes directly

iOS 12 SDK

πŸ—„οΈ https://developer.apple.com/ios/
πŸ—„οΈ https://developer.apple.com/ios/whats-new/
πŸ—„οΈ https://developer.apple.com/arkit/
πŸ—„οΈ https://developer.apple.com/sirikit/
πŸ—„οΈ https://developer.apple.com/machine-learning/
πŸ—„οΈ https://developer.apple.com/metal/
https://developer.apple.com/documentation/ios_release_notes/ios_12_release_notes
http://codeworkshop.net/objc-diff/sdkdiffs/ios/12.0/

General:

  • performance improvements across the system:
    • smarter scheduling of prefetch in table/collection views, so that it doesn’t slow down loading current row
    • improved scrolling performance in general
    • automatic backing store: OS automatically chooses a backing store for views with less bits per pixel if full color is not needed
    • AutoLayout improvements - some methods that had exponential complexity are now O(n)
  • continued swiftification of existing APIs
    • some types and constants became subtypes of others (e.g. UIApplication.State, notification names)
    • some global functions became methods (e.g. UIEdgeInsetsInsetRect)
    • NSStringFrom* / NS*FromString replaced with Codable and debug printing support, old behavior is available in new NSCoder methods like string(for:)

New frameworks and targets:

  • AuthenticationServices - a framework for integrating third-party password managers like 1Password with the OS
    • ASWebAuthenticationSession - lets you automatically log in users to apps using Safari sessions
  • Autofill Credential Provider extension type - for third-party password managers
  • CarPlay framework - for implementing navigation apps for CarPlay
  • Unwanted Communication extension type (see IdentityLookup)

Framework updates:

  • ARKit 2:
    • improved face tracking (tracking eye movement and tongue)
    • environment texturing - reflecting the real environment on AR objects (not visible parts simulated using ML)
    • 2D image tracking
    • 3D object detection
    • persistent scenes and multi-user AR (sharing maps between sessions and devices)
  • AVFoundation:
    • updated Portrait Segmentation API and Depth API
  • Core Motion:
    • added some APIs for apps helping people with Parkinson’s disease
  • HealthKit:
    • access to user’s medical history (HKClinicalType)
    • rewritten workout APIs
  • IdentityLookup:
    • new APIs for writing extensions that let users report spam calls and messages
  • Metal:
    • GPU-Driven Command Encoding
    • new performance shaders for machine learning
    • fast ray tracing (MPSRayIntersector)
  • SiriKit:
    • new APIs for working with Siri Shortcuts
  • UserNotifications: APIs for handling new notification features:
    • UNAuthorizationOptions:
      • provisional to request “provisional authorization” (notifications in quiet mode)
      • criticalAlert to request access to critical alerts
      • providesAppNotificationSettings to provide a link to notification settings screen
    • UNUserNotificationCenterDelegate: userNotificationCenter(_:openSettingsFor:) callback to open the notification settings screen
    • UNNotificationExtensionUserInteractionEnabled option to enable interaction with the Notification Content extension UI
    • UNNotificationCategory: categorySummaryFormat for customizing the notification group summary
    • UNNotificationContent: summaryArgument and summaryArgumentCount
    • UNNotificationSound: methods for creating critical alert sounds
    • NSExtensionContext:
      • notificationActions lets you update actions while the Notification Content extension is open
      • performNotificationDefaultAction() launches your app
      • dismissNotificationContextExtension() hides the extension
  • Vision:
    • some new APIs

UIKit updates:

  • NSUserActivity:
    • isEligibleForPrediction, suggestedInvocationPhrase for Siri Shortcuts integration
    • methods for deleting user activities
  • UITextInputPasswordRules - for defining requirements for generated passwords in a “password rules language”
  • UITextContentType:
    • newPassword and oneTimeCode types
  • UIUserInterfaceStyle (light/dark) from tvOS - only for CarPlay (for now :)

Deprecations:

  • OpenGL & OpenCL (soft-deprecated)
  • UIWebView (comment)

watchOS 5 SDK

πŸ—„οΈ https://developer.apple.com/watchos/
πŸ—„οΈ https://developer.apple.com/watchos/whats-new/
πŸ—„οΈ https://developer.apple.com/sirikit/
https://developer.apple.com/documentation/watchos_release_notes/watchos_5_release_notes
http://codeworkshop.net/objc-diff/sdkdiffs/watchos/5.0/

General:

  • Audio 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?)
  • assets added only in 38mm version will be used as fallback for 42mm if that variant is missing

Framework updates:

  • AVFoundation:
    • direct access to AVAudioPlayer and AVAudioEngine (though they seem to have been available before?…)
  • Core Motion:
    • added some APIs for apps helping people with Parkinson’s disease
  • HealthKit:
    • access to user’s medical history (HKClinicalType)
    • rewritten workout APIs:
      • updated HKWorkoutSession, added HKWorkoutBuilder and HKLiveWorkoutBuilder
      • if a workout app crashes during a workout, it’s relaunched automatically
      • HKHealthStore.recoverActiveWorkoutSession(completion:) can be used to recover a lost workout
  • Media Player - parts of the framework now available on watchOS, including:
    • MPNowPlayingInfoCenter for telling the OS about the media being played
    • MPRemoteCommandCenter for reacting to actions like play/pause etc. in the Now Playing system view
  • SiriKit:
    • new APIs for working with Siri Shortcuts
  • UserNotifications: APIs for handling new notification features:
    • UNAuthorizationOptions:
      • provisional to request “provisional authorization” (notifications in quiet mode)
      • criticalAlert to request access to critical alerts
      • providesAppNotificationSettings to provide a link to notification settings screen
    • UNNotificationSound: methods for creating critical alert sounds
    • “Handles Grouping” option in the notification scene to route new incoming notifications to an open notification view
    • “Has Interactive Interface” option in the notification scene to create a new “Dynamic Interactive Interface” notification view
    • notifications opened from the notification center will now show the dynamic version if possible
    • WKUserNotificationInterfaceController:
      • notificationActions lets you update actions while the notification view is open
      • performNotificationDefaultAction() launches your app
      • performDismissAction() hides the notification
      • unified didReceive() for local and remote notifications
  • WatchConnectivity:
    • WCSessionFileTransfer: added progress (which apparently has something to do with transferring audio content, but documentation is missing)

WatchKit updates:

  • NSUserActivity:
    • isEligibleForPrediction, suggestedInvocationPhrase for Siri Shortcuts integration
    • methods for deleting user activities
  • UIFont.TextStyle: title styles (largeTitle, title1, title2, title3) are available for use in IB and largeTitle also in code (preferredFont(forTextStyle:))
  • WKInterfaceNowPlayingView - a “now playing” view like in the system panel, which you can embed inside apps like Workouts app does (only available in IB)
  • WKInterfaceVolumeControlView - a separate control just for setting volume (only available in IB)
  • WKRelevantShortcutRefreshBackgroundTask - a background task that lets you set up Siri shortcuts
  • WKIntentDidRunRefreshBackgroundTask - a background task that runs when SiriKit launches your app

tvOS 12 SDK

πŸ—„οΈ https://developer.apple.com/tvos/
https://developer.apple.com/documentation/tvos_release_notes/tvos_12_release_notes

New frameworks:

  • TVUIKit framework - a set of TVML controls ported to UIKit:
    • TVCaptionButtonView - a caption button that performs some action
    • TVCardView - a card view with an arbitrarily composed hierarchy of parts inside
    • TVPosterView - a poster control
    • TVMonogramView - a person’s avatar view
    • TVLockupView - base class for all of the above, handles animation on focus

Framework updates:

  • AVFoundation: updated Portrait Segmentation API and Depth API
  • Metal:
    • GPU-Driven Command Encoding
    • new performance shaders for machine learning
    • fast ray tracing (MPSRayIntersector)
  • Vision: some new APIs

UI updates:

  • UILabel:
    • added enablesMarqueeWhenAncestorFocused option that animates the text when it’s too long to fit
  • UITextContentType:
    • newPassword and oneTimeCode types
  • UITextInputPasswordRules - for defining requirements for generated passwords
  • TVDigitEntryViewController - a view controller that shows a screen for entering digits, e.g. passcode
  • the focus engine now supports apps other than UIKit/SpriteKit/SceneKit apps, e.g. games written in Metal:
    • UIFocusSystem: init(for:) to get it from the environment, focusedItem to get currently focused item
    • UIFocusEnvironment: parentFocusEnvironment, focusItemContainer
    • UIFocusItem: didHintFocusMovement
    • UIFocusItemContainer and UIFocusItemScrollableContainer protocols
    • UIFocusMovementHint

Deprecations:

  • OpenGL & OpenCL are soft-deprecated

Web APIs

  • MapKit JS for embedding Apple Maps on websites
  • MusicKit JS for embedding Apple Music and building custom music players using it

Developer Tools

Xcode 10

πŸ—„οΈ https://developer.apple.com/xcode/
πŸ—„οΈ https://developer.apple.com/xcode/whats-new/
https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes

  • tools for working with Dark Mode:
    • support for Dark Mode in asset catalogs (images and colors)
    • switching dark/light mode in storyboards and in a running app
  • editor:
    • multi-cursor editing and column selection
    • jump to definition shows a list of implementations you can pick from
    • some new actions for finding and selecting code in the menu
    • improved code completion accuracy
    • supports scrolling beyond last line
    • restored code folding ribbon from Xcode 8 and earlier
    • Object Library is now a floating popover, accessed from a button on the right side of the toolbar
    • support for NSGridView designing in Interface Builder
    • documentation popups that include code are syntax highlighted (source)
  • version control:
    • source control change bar - displays changes on the left next to line numbers
    • tracks upstream changes in the repo and highlights unmerged changes and conflicts
    • git pull action supports rebase
    • helps you create SSH keys and uploads public keys to service accounts
    • added support for Bitbucket and GitLab
    • removed support for SVN (source)
  • testing:
    • tests (unit and UI) can be executed in parallel on multiple copies of your Mac app or multiple simulators (“ludicrously fast” ;)
    • test order can be randomized
    • you can automatically include new tests in test bundles
  • performance improvements:
    • IB: up to 40% faster document opening, up to 3x faster canvas interaction
    • editor loads large documents up to 2.5x faster
    • downloading symbols from devices is 5x faster
    • faster LLDB startup
    • faster loading of memory debugger
  • new build system is on by default, is faster and uses less memory, and has better diagnostics for your project configuration
  • new compact layout for memory debugger
  • View Hierarchy debugger shows color names and appearance info
  • custom Instruments packages
  • playgrounds have a REPL-like mode, evaluating each new entered line
  • schemes are now created as shared by default
  • Metal Dependency Viewer and Metal Shader Debugger
  • Xcode no longer compiles 32-bit Mac apps? (source)

Swift

https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes/swift_4_2_release_notes_for_xcode_10

  • Swift 4.2: see this summary by Paul Hudson
  • Swift 5: coming early next year, will have binary ABI compatibility
  • -Osize optimization - tries to minimize the binary size

ObjC

  • ARC support for object pointers in C structs (source)

App Store & iTunes Connect

  • iTunes Connect is renamed as App Store Connect, same for iTunes Connect app for iOS (source)
  • free trials for apps are allowed in the form of IAPs (source, but see also: Ersatz Free Trials)
  • apps can give users access to IAP-protected content that was acquired on another platform (source)
  • apps must mention new features in “What’s New” (source)
  • App Review will now pay closer attention to access purpose strings (they should explain specifically how the data you request will be used)
  • all apps will be required to have a privacy policy since Oct 3 (source)
  • App Store apps have been removed from the iTunes Affiliate Program (source)
  • added some restrictions on how private data from users' phones can be used (source)
  • more info about App Store guidelines changes here: https://www.macrumors.com/2018/06/04/apple-revamps-app-store-guidelines-ios-12/

Safari 12

πŸ—„οΈ https://developer.apple.com/safari/whats-new/
https://developer.apple.com/safari/technology-preview/release-notes/

  • support for viewing USDZ models
  • Fullscreen API on iOS for iPad
  • support for font collections in WOFF2 and TTC files
  • support for font-display CSS property
  • support for SVG in OpenType fonts
  • support for cross-origin-window-policy and cross-origin-resource-policy
  • WebGL Shader Debugging
  • deprecated .safariextz extensions, removed support for .safariextz extensions not from the Gallery
  • some content-blocking extensions using old APIs (e.g. Ghostery) are disabled on first launch (can be reenabled)
  • removed support for legacy plugins except Flash

A couple more links if you want to go deeper :)


Leave a comment

*

*
This will only be used to display your Gravatar image.

*

What's the name of the base class of all AppKit and UIKit classes?

*