Learn more about SwiftUI

Adding custom keys to the SwiftUI environment

Updated on: September 6, 2024

In Xcode 16, it’s possible to add custom keys using the convenient @Entry macro. Sometimes you’ll find yourself in a situation where you want to conveniently pass some object down via the SwiftUI environment. An easy way to do this is through the .environmentObject view modifier. The one downside of this view modifier and corresponding […]

Read post

Understanding how and when SwiftUI decides to redraw views

Updated on: May 16, 2025

There’s a good chance that you’re using SwiftUI and that you’re not quite sure how and when SwiftUI determines which views should redraw. And arguably, that’s a good thing. SwiftUI is clearly smart enough to make decent decisions without any negative consequences. In fact, you might even have set up your app in a way […]

Read post

Using UISheetPresentationController in SwiftUI 3

Updated on: June 6, 2022

This post applies to the version of SwiftUI that shipped with iOS 15, also known as Swift 3. To learn how you can present a bottom sheet on iOS 16 and newer, take a look at this post. With iOS 15, Apple introduced the ability to easily implement a bottom sheet with UISheetPresentationController in UIKit. […]

Read post

Fetching objects from Core Data in a SwiftUI project

Updated on: August 18, 2020

When you’ve added Core Data to your SwiftUI project and you have some data stored in your database, the next hurdle is to somehow fetch that data from your Core Data store and present it to the user. In this week’s post, I will present two different ways that you can use to retrieve data […]

Read post

Using Core Data with SwiftUI 2.0 and Xcode 12

Updated on: September 30, 2020

In Xcode 12 you can create projects that no longer use an AppDelegate and SceneDelegate to manage the application lifecycle. Instead, we can use Swift’s new @main annotation to turn a struct that conforms to the App protocol into the main entry point for our applications. When you create a new project in Xcode 12, […]

Read post

Handling deeplinks in a SwiftUI app

Updated on: July 7, 2025

Handling deeplinks is an essential feature for lots of apps. Deeplinks help with sharing contents and they allow you to help users jump right to any pages they might be interested in without tapping through your app. In this post we’ll explore how you can set up deeplinks and handle them with SwiftUI’s onOpenURL.

Read post

Using multi-colored icons in iOS 14 with SF Symbols 2

Updated on: September 30, 2020

Apple introduced SF Symbols in iOS 13. SF Symbols allow developers to easily integrate icons in their apps. The SF Symbols icons integrate really well with the default system font, and provide a consistent look throughout the system. In iOS 14, Apple added over 750 new icons to the SF Symbols library for developers to […]

Read post

@StateObject vs @ObservedObject: understanding the difference

Updated on: July 4, 2025

Views in SwiftUI are thrown away and recreated regularly. When this happens, the entire view struct is initialized all over again. Because of this, any values that you create in a SwiftUI view are reset to their default values unless you’ve marked these values using @State. This means that if you declare a view that […]

Read post

Using custom publishers to drive SwiftUI views

Updated on: September 30, 2020

In SwiftUI, views can be driven by an @Published property that’s part of an ObservableObject. If you’ve used SwiftUI and @Published before, following code should look somewhat familiar to you: class DataSource: ObservableObject { @Published var names = [String]() } struct NamesList: View { @ObservedObject var dataSource: DataSource var body: some View { List(dataSource.names, id: […]

Read post

Expand your learning with my books

Practical Combine header image

Learn everything you need to know about Combine and how you can use it in your projects with Practical Combine. It contains:

  • Thirteen chapters worth of content.
  • Playgrounds and sample projects that use the code shown in the chapters.
  • Free updates for future iOS versions.

The book is available as a digital download for just $39.99!

Learn more