Peter Steinberger

SwiftUI In Production

Can you ship SwiftUI in production while supporting iOS 12? See the clever workarounds and necessary 'hacks' that made it possible.

SwiftUI In Production
#1about 3 minutes

The state of SwiftUI and its production readiness

SwiftUI presents a new way to build UIs but is still new and risky, prompting an exploration of its use in a production SDK.

#2about 3 minutes

A first experiment rewriting settings with SwiftUI

The initial test involved rewriting an existing settings screen in a free app to gain experience and control before tackling a major feature.

#3about 4 minutes

Why SwiftUI was chosen for a new feature

SwiftUI was selected for a new electronic signature feature because it simplifies view updates, aligns with a UI-as-code philosophy, and integrates well with existing high-performance UIKit components.

#4about 4 minutes

Integrating SwiftUI into an existing Objective-C codebase

The new SwiftUI feature is encapsulated within a UIHostingController to maintain an Objective-C API and provide a fallback for older iOS versions.

#5about 7 minutes

Presenting a true popover on iPhone with UIKit

A custom anchor button embedding a UIView is used to access a view controller and present a UIKit popover, bypassing SwiftUI's default sheet presentation on iPhone.

#6about 3 minutes

Centering items in the navigation toolbar

The SwiftUIX library provides a solution for centering toolbar items on iOS 13, while the native .toolbar modifier is used for iOS 14 and newer.

#7about 3 minutes

Debugging and avoiding attributed graph crashes

Attributed graph crashes are difficult to debug, but one common cause is nested GeometryReaders, which can be avoided with conditional logic for specific OS versions.

#8about 1 minute

Fixing ObservableObject for NSObject subclasses

To support Objective-C compatibility on iOS 13, the objectWillChange publisher must be manually implemented for ObservableObject classes that inherit from NSObject.

#9about 4 minutes

Programmatically setting the first responder

View introspection is used to find the underlying UITextField within a SwiftUI view hierarchy to programmatically call becomeFirstResponder and show the keyboard.

#10about 3 minutes

Wrapping UIKit views and bridging to Combine

Custom UIKit views are wrapped using UIViewRepresentable, and legacy notification patterns like KVO and NotificationCenter are bridged to Combine publishers for seamless state management.

#11about 4 minutes

Implementing manual keyboard avoidance for iOS 13

A custom, invisible view is added to the layout, which resizes based on keyboard notifications to manually implement keyboard avoidance on older iOS versions.

#12about 1 minute

Key takeaways from shipping SwiftUI in production

The experiment was a success, providing a robust set of workarounds and increasing team confidence in using SwiftUI for future features despite the initial challenges.

Related jobs
Jobs that call for the skills explored in this talk.

test

Milly
Vienna, Austria

Intermediate

test

Milly
Vienna, Austria

Intermediate

Featured Partners

Related Articles

View all articles
CH
Chris Heilmann
WeAreDevelopers LIVE days are changing - get ready to take part
Starting with this week's Web Dev Day edition of WeAreDevelopers LIVE Days, we changed the the way we run these online conferences. The main differences are:Shorter talks (half an hour tops)More interaction in Q&AA tips and tricks "Did you know" sect...
WeAreDevelopers LIVE days are changing - get ready to take part
CH
Chris Heilmann
Dev Digest 134 - Where pixels sing?
News and ArticlesWeAreDevelopers LIVE Data and Security Day is on Wednesday, 25/09/2024. Learn about OPC UA Updates, Best Practices for Using GitHub Secrets, Passwordless Web 1.5, Emerging AI Security Risks, Data Privacy in LLMs and get a chance to t...
Dev Digest 134 - Where pixels sing?
CH
Chris Heilmann
Dev Digest 101 - the XXX edition
Last Friday’s Dev Digest edition had an XXX puzzle. That’s because we're coming to Amsterdam and that's the flag of the city. It was also full of links and things to learn from, so here’s what you missed. You can always sign up for the newsletter to ...
Dev Digest 101 - the XXX edition

From learning to earning

Jobs that call for the skills explored in this talk.

iOS Engineer

iOS Engineer

Pulselive

70K
UIKit
Kotlin
Core Data
Continuous Integration