Nil Coalescing

@nilcoalescing.com

We are a small company based in New Zealand passionate about creating native apps for Apple platforms. Website: https://nilcoalescing.com Blog: https://nilcoalescing.com/blog Apps: https://nilcoalescing.com/apps Books: https://books.nilcoalescing.com

Alignment guides are a powerful but often underused part of SwiftUI's layout system. They let us describe relationships between views using meaningful points in their content, without frame measurements or fixed offsets. I wrote a post explaining them in detail: nilcoalescing.com/blog/Alignme...

Alignment guides in SwiftUI

Learn how alignment guides position views in SwiftUI, how to override a built-in guide, and how to define a custom alignment for views in nested containers.

nilcoalescing.com

I’ve been wanting to explore and document SwiftUI’s blend modes for a while. I finally worked through all 21 of them, with visuals and practical examples showing how each one works and when it can be useful: nilcoalescing.com/blog/BlendMo... #iOSDev #SwiftUI

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.

nilcoalescing.com

To prepare Strolly for app resizability in iOS 27, we wanted its non-modal detent sheets to adapt into side panels on wider displays. SwiftUI sheets don’t support that presentation, so we built our own panel API: nilcoalescing.com/blog/Buildin... #SwiftUI #iOSDev

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.

nilcoalescing.com

SwiftUI has three similarly named grouping modifiers: geometryGroup(), compositingGroup() and drawingGroup(). If, like me, you sometimes forget which one does what, I’ve just published a guide explaining how they differ and when to use each one: nilcoalescing.com/blog/Geometr... #iOSDev #SwiftUI

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.

nilcoalescing.com

When storing custom values in properties of an @Observable, it’s recommended to make them Equatable to minimize SwiftUI view updates. I’ve just published a post looking at how @Observable handles equal assignments and why Equatable conformance matters: nilcoalescing.com/blog/Equatab...

Equatable properties in @Observable classes

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

nilcoalescing.com

Just submitted a new version of Tintly: Mesh Gradient Editor to the App Store! It includes a redesigned resizable export window for easier previewing of generated code, improved SVG and CSS export, and a few other improvements based on user feedback. Hopefully it'll be out soon!

Screenshot of the Tintly app showing a colorful mesh gradient being edited with control points. A redesigned export window is displayed on top, with tabs for PNG, JPEG, SVG, CSS, and SwiftUI. The SwiftUI tab is selected, showing generated MeshGradient code alongside a live preview and a Copy Code button.

Custom SwiftUI bindings are often created with Binding(get:set:), but closure-based bindings can have subtle performance implications. In my new post, I look at an alternative approach using labeled subscripts: nilcoalescing.com/blog/CustomB... #SwiftUI #iOSDev

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.

nilcoalescing.com

Just returned from the /dev/world on tour conference in Sydney. It was such a great trip! Happy I got to connect with amazing developers from across the region, discuss WWDC26 updates with them, and share my SwiftUI highlights from iOS 27. Huge thank you to all the organizers! #DevWorld

Group photo of attendees at the /dev/world on tour conference gathered at Darling Harbour in SydneyView of the Sydney Harbour Bridge framed by trees and gardens on a sunny dayFive members of the Apple developer community standing together in front of the /dev/world on tour Sydney bannerNatalia Panferova presenting a session about SwiftUI improvements in iOS 27 to an audience at /dev/world on tour Sydney

The June issue of the Nil Coalescing newsletter is out! I've shared my upcoming conference plans, my latest articles covering SwiftUI in iOS 27, an introduction to Tintly, my new macOS app for designing mesh gradients, and other app updates. nilcoalescing.com/newsletter/2...

Nil Coalescing - Nil Coalescing Newsletter – June 2026

I hope you enjoyed WWDC26, whether you were attending in person or following along online. The most exciting update this year has definitely been the new and improved Siri, but we've also got a lot of...

nilcoalescing.com

I'm so happy that SwiftUI in iOS 27 supports granular text selection! We can just apply the existing textSelection() modifier to a Text view, and instead of selecting the entire text block like in iOS 26, it lets users select a portion of the text with the standard drag gesture.

Side-by-side comparison of text selection in a SwiftUI app. iOS 26 selects the entire text block, while iOS 27 allows selecting individual words or portions of text with the standard drag gesture. A SwiftUI code snippet using textSelection(.enabled) is shown on the left.