Recent articles

Jump to a random post

Grouping Liquid Glass components using glassEffectUnion on iOS 26

Published on: July 2, 2025

The Apple Maps app features something that looks like a vertical toolbar where they’ve stacked two grouped buttons on top of each other using a Liquid Glass effect. In this post, you’ll learn how you can make use of a GlassEffectContainer and the glassEffectUnion view modifier to achieve this effect.

Read post

Designing custom UI with Liquid Glass on iOS 26

Updated on: July 10, 2025

Building custom UI with Liquid Glass is easier than you think! Learn how you can leverage animations, the glassEffect view modifier, and a GlassEffectContainer to achieve a fun look and feel that will feel right at home on iOS 26!

Read post

What is @concurrent in Swift 6.2?

Updated on: July 7, 2025

Swift 6.2 makes significant changes to concurrency, and because of that we have to understand a brand new mechanism to offload work to a background thread in Swift 6.2. Learn everything you need to know about @concurrent and nonisolated(unsafe). You’ll also find out why I’m pretty happy with these changes even though they require us to relearn certain concurrency concepts.

Read post

Exploring tab bars on iOS 26 with Liquid Glass

Updated on: July 7, 2025

Liquid Glass drastically changes how you app looks and feels when you’ve used default system components in your UI. In this post we look at how TabView changes with Liquid Glass, and how this forces us to rethink aspects of how certain interactions in our apps should work.

Read post

Setting default actor isolation in Xcode 26

Published on: June 10, 2025

With Swift 6.2, Apple has made a several improvements to Swift Concurrency and its approachability. One of the biggest changes is that new Xcode projects will now, by default, apply an implicit main actor annotation to all your code. This essentially makes your apps single-threaded by default. I really like this change because without this […]

Read post

Exploring concurrency changes in Swift 6.2

Updated on: June 26, 2025

It’s no secret that Swift concurrency can be pretty difficult to learn. There are a lot of concepts that are different from what you’re used to when you were writing code in GCD. Apple recognized this in one of their vision documents and they set out to make changes to how concurrency works in Swift […]

Read post

Enabling upcoming feature flags in an SPM package

Updated on: June 26, 2025

As Swift evolves, a lot of new evolution proposals get merged into the language. Eventually these new language versions get shipped with Xcode, but sometimes you might want to try out Swift toolchains before they’re available inside of Xcode. For example, I’m currently experimenting with Swift 6.2’s upcoming features to see how they will impact […]

Read post

Should you use network connectivity checks in Swift?

Updated on: June 26, 2025

A lot of modern apps have a networking component to them. This could be because your app relies on a server entirely for all data, or you’re just sending a couple of requests as a back up or to kick off some server side processing. When implementing networking, it’s not uncommon for developers to check […]

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