WWDC 2017 State of the Union TL;DR

Here is a quick recap of everything we’ve learrned from Apple during the “State of the Union” talk in WWDC 2017. Have fun!

Source Editor

  • Rewritten in Swift from scratch
  • Built-in markdown editor
  • Better fix-its (inline and don’t break formatting)
  • 300+ new diagnostics, analyzers and fix-its
  • 3x quicker file opening, 60 fps scrolling, 50x line jump
  • Tokenizing in code editor from Playgrounds (Hold Cmd while hovering)
  • Contextual menu for actions (Tap while tokenizing structure)
  • Brand new refactoring system
  • Cmd +/- to resize code text
  • SDK version availability Fix-it
  • Protocol implementation stub fix-its
  • “Extract” moves implementation to its own method/let
  • Rename/edit in scope
  • Global rename/refactor across source code — live update across all slices
  • Open Source transformations / actions — new stuff will probably come in from devs

Swift 4

  • Strings Are now a Character Collection, act like arrays
  • Multi-line string literals with """
  • One-side ranges and string slicing using subscripting
  • Unicode 9 Grapheme Breaking — Unicode support is better (and actually correct as opposed to older versions)
  • Codable protocol: Super-super simple way to encode/decode JSON/plist: try JSONEncoder().encode(Codable) vs try JSONDecoder.decode(Type.self, from: payload)
  • Xcode 9 Swift language Version (3.2 / 4.0) — allows to gradually upgrade to Swift 4
  • Build times:Mix and match Swift/Objective-C should be 40% faster
  • Whole-Module Optimization should have bettter build time (about 2x) (in theory since Xcode 8.3.2)

Core Technologies

Indexer

  • Completely Rearchitectured
  • Open quickly x35 faster
  • Larget Proejct Search is x50 faster
  • Indexing will occur simultaneously while building

Build System — New Build System

  • Build operations are x2.5 faster so should be even better with incremental builds
  • Opt-in via Workspace Settings
  • Will be the default build system soon

Source Control

  • Tight integration between GitHub/Github Enterprise with Xcode
  • You can see branches/tags/push PRs stragithf rom Xcode to GitHub
  • Commit history built in to Xcode
  • New “Source Control” tab (second from left after project structure)
  • Moving files between groups ACTUALLY FREAKING MOVES THEM
  • Create new Remote / New GitHub repo directly from Xcode
  • New “Open in Xcode” straight from GitHub.com

Debugging and Analysis

  • View Debugger improved for ViewControllers, SpriteKit, SceneKit
  • Runtime Sanitizers — Undefined Behaviour & Main Thread Sanitizer
  • Enabled from Diagnostics Panel in Run/Test panels (Scheme Editor)

Testing & Continuous Integration

  • No need to install Xcode Server, It’s built in to Xcode itself
  • UI Testing x3 times faster (or up to x10 faster with new First Match API)
  • xcodebuild now runs test on multiple destinations simultaneously
  • Simulator supports multiple booted devices
  • Redesigned Simulator to look like physical device — so you can actually interact with the physical controls (switches / volume controls)
  • Fully resizable Simulator

Wireless Development

  • iOS & tvOS devices
  • Works with Xcode, Accessibillity Inspector, Instruments and much more

General APIs

Drag & Drop

  • Automatic for Text and Web
  • Standard API for implementing non-standard drag & drop behaviours
  • Generate custom preview for dragged content
  • Custom badge for dragged content
  • Can work with any type of Data
  • In-app Multi Touch (you can perform more actions while dragging / collect more items)
  • Completely rewritten app-reordering on Home Screen using the Drag & Drop API
  • Collection View and Table View come with built in support using UICollectionViewDragDelegate/UICollectionViewDropDelegate etc

UI Changes

  • Large navigation bar with integrated Search Bar (UINavigationBar.prefersLargeTitles, UINavigationBar.searchController)
  • Automatic Cell Sizing for Dynamic Type size

Files

  • Access from new Files App
  • New Document Browser can be presented from within your own app with custom actions, type filtering, creating new documents. Also possible to customize appearance of the Document Browser.
  • In-app document sharing

Multi-tasking

  • Size classes, Auto layout & Default storyboards — If you have those, you are probably already set for the new Multi-tasking APIs

iMessage

  • App strip
  • Apps inline with transcript

SiriKit

  • New domains: Payment accounts, lists, notes, qr codes
  • New Simulator Support for iOS & watchOS

MusicKit

  • Users can play audio from Apple Music from within your app

Photo and Imaging APIs

  • Photos Project Extensions: External provider support built in to Photos.app — Print/Web/etc
  • Camera detects QR codes by default — Link ito apps via Universal Links
  • HEVC — 2x Compression, hardware accelerated, supports images & videos
  • HEIF — Asset container supporting Compound Assets, rich meta data, an ISO standard
  • Standard API supports both new formats: ImageIO, Core Image, AVFoundation, PhotoKit
  • new AVAsset.isPlayable to determine specific device can playback asset
  • Access to Depth APIs so you can get access to different depth layers and create various layers etc
  • Streaming Depth API is similar to the regualr Depth API for a live camera stream

Vision APIs

  • Face and Landmark Detection
  • Rectangle Detection
  • Text detection
  • Barcode detection
  • Live Object tracking
  • Integration between Vision and CoreML allows bringing in your own Machine Learning Models/Classifiers
  • Powered by Accelerate and Metal shaders

Core ML

  • Converter tool takes model and converst to a MLModel, then can be dropped into Xcode
  • Graph optimizations increase performance along other optimizations

Metal

  • Many system frameworks are built on top of Metal
  • Almost 2 million apps are using Metal through the System Frameworks
  • Over 900 million apple products supporting metal
  • Metal 2 — Next generation
  • GPU Driven Rendering — Reduce load from CPU and handover to GPU for rendering frames
  • Platform Feature Alignment — Unified API across macOS, iOS and tvOS that maintains compatibility where possible
  • Much much more :)

VR

  • With Metal 2 and macOS High Sierra
  • Low latency support for Head mounted displays
  • SteamVR runtime and SDK for macOS (HTC Vive headset and control supported)
  • Unreal Engine & Unity will add macOS VR Support (Early access in September via GitHub for Unreal)
  • VR renders at 90 fps, about 10ms per frame available time (need to target 100 FPS)
  • Metal 2 will also be supported with an External GPU on MacBook Pro
  • Advanced Optimization Tools

--

--

--

iOS Tech Lead @ Gett 🚕 RxSwift & RxSwiftCommunity core contributor. International speaker and worldwide hackathon winner. Fiddling with tech for a living. 🤓

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Google Coding Competitions

How to save many development hours in Angular [NgRx/data]

How to use version control (GitHub) in RStudio within DSX?

Postgres Database with AWS and Python

Introducing Affirm’s Career Framework for Engineering

Yield in Yield in Ruby ‘.erb’ Templates for Sinatra Web App

GitLab: The project you were looking for could not be found issue

How to Correctly Install CuDF for Python

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Shai Mishali

Shai Mishali

iOS Tech Lead @ Gett 🚕 RxSwift & RxSwiftCommunity core contributor. International speaker and worldwide hackathon winner. Fiddling with tech for a living. 🤓

More from Medium

Getting your code crashed inside a Swift loop

How To Use UIView as NavigationBar Which Allow You to change NavigationBar Size

BigNav

Solving “FriendFace” 100DaysOfSwiftUI Challenge (Day 60, 61)

Solving FriendFace Challenge

[Server-Side Swift] Summarize information/articles for iOS with Vapor