Nil Coalescing Newsletter – July 2026

Hi there,

I hope you've had a productive July! It has been a busy and energizing month for us, with a mix of travel, community events, and putting what we learned from this year's WWDC into practice.

We started the month with a trip to Sydney for /dev/world on tour, a new community event focused on the latest announcements from WWDC. Since returning home, Matt and I have been preparing our apps for iOS 27, and I've also released a substantial update to my book "The SwiftUI Way".

I'm excited to share more about what we've been working on, so let's get into this month's updates!


/dev/world on tour

At the beginning of the month, Matt and I traveled to Sydney for /dev/world on tour. The conference brought together developers and designers from across Australia and New Zealand to explore the latest WWDC announcements and how we can apply them in our projects.

I had the opportunity to open the event with a talk about what's new in SwiftUI in iOS 27. Preparing the session encouraged me to explore the new APIs in depth, while the rest of the program brought different perspectives and plenty of practical ideas for preparing our apps for iOS 27.

It was also a great opportunity to meet members of Apple's Developer Relations team for our region. Events like this are especially valuable in our part of the world, where chances to meet the wider Apple developer community in person are relatively rare.

Speakers and attendees at /dev/world on tour in Sydney

Speakers and attendees at /dev/world on tour in Sydney

This was our first visit to Sydney, too. Matt and I had a wonderful time exploring the city, catching up with friends, and meeting new people. It was a busy few days, but a really enjoyable and energizing trip.


"The SwiftUI Way" update

One of the projects I returned to after WWDC was my latest book, The SwiftUI Way. I originally wrote it to help developers make better technical choices as their SwiftUI apps grow, especially in areas where a perfectly reasonable-looking implementation can turn into a subtle stability or performance problem later.

The new APIs and diagnostics in Xcode 27 gave me a good reason to revisit some of that guidance. While working through the changes, I also found several places where I wanted to explain the existing behavior in more depth. This turned into a substantial update to the chapters on data flow, view updates, and performance.

In particular, I expanded the discussion of how seemingly small modeling choices affect the work SwiftUI performs. The book now looks more closely at stable custom bindings, equality in observable models, and different ways to pass values, actions, and shared models through the environment. These techniques can help SwiftUI identify dependencies more precisely and avoid reevaluating views when unrelated data changes.

I also added guidance for two areas that can cause particularly confusing behavior: initializing observable models now that @State is a macro in Xcode 27, and choosing stable identity for elements in dynamic lists. In both cases, the important part is not just knowing which API to use, but understanding what SwiftUI needs from our code in order to preserve state and update the right views.

If you already own "The SwiftUI Way", the update is included with your purchase. You can read the new edition online or download it from the book page. The release notes contain a detailed list of the updated subchapters.

If you haven't checked it out yet and want to make more confident technical choices in your SwiftUI projects, you can learn more on the "The SwiftUI Way" book page. The book explains the reasoning behind effective patterns and subtle anti-patterns, helping you understand not only what works, but why. As with all my books, your purchase includes free lifetime updates.


Custom book bundles

This month, we also updated our books website with a new way to buy book bundles. Until now, we offered a selection of ready-made bundles covering the most popular combinations of my Swift and SwiftUI books. They were convenient, but they didn't cover every possible combination.

You can now build your own custom bundle, choosing exactly which books you would like to include while still benefiting from a reduced bundle price. This is especially useful if you are interested in a particular mix of topics or already own one of the books.

The ready-made bundles are still available too. If one of them already includes the books you want, it remains the quickest and most convenient option.


New blog posts this month

Keeping canvas interactions responsive with frame reprojection

Keep a complex Metal-rendered canvas responsive during pan, zoom and rotation gestures by reprojecting rendered states with CAMetalLayer.

Blend modes in SwiftUI

Explore every SwiftUI blend mode through focused visuals and practical use cases, and learn how to control which views participate in each operation.

Building adaptive non-modal panels in SwiftUI

Learn how to build a non-modal, detent-based sheet API in SwiftUI that adapts from a bottom panel in portrait to an edge-aligned panel in landscape.

Geometry, compositing and drawing groups in SwiftUI

Learn how SwiftUI's similarly named geometryGroup(), compositingGroup() and drawingGroup() modifiers affect distinct stages of animation and rendering, and when each is appropriate.

"The SwiftUI Way" book update: expanded guidance on data flow and performance

"The SwiftUI Way" has been updated with expanded guidance on SwiftUI data flow, view updates, and performance, including changes introduced in Xcode 27.

Equatable properties in @Observable classes

Prevent unnecessary SwiftUI view updates by making custom types stored in @Observable properties conform to Equatable.

The hidden cost of unstable SwiftUI environment defaults

Learn why Xcode 27 shows a warning when an @Entry declaration creates a new class instance for every fallback access, how unstable environment defaults can cause unnecessary SwiftUI view updates, and how to make them stable.

Custom bindings in SwiftUI: closures vs subscripts

Learn how closure-based bindings can affect SwiftUI view updates, and how labeled subscripts give the framework a more stable way to track changes.


Discounts

Every month, I share exclusive, limited-time offers on my books with email newsletter subscribers. Sign up so you don't miss future newsletter issues and can take advantage of upcoming discounts!


Subscribe so you don’t miss future issues!

Invalid email address

Unexpected server error

Subscribed!

We take your privacy seriously and will never share your details with third parties.

You can unsubscribe anytime using the link in our emails.

Newsletter RSS feed