Matthaus Woolard

@hishnash.bsky.social

Data Scientist, #Python and #SwiftLang, macOS/iPadOS app developer

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

📱 𝐵𝑢𝑖𝑙𝑑𝑖𝑛𝑔 𝐴𝑑𝑎𝑝𝑡𝑖𝑣𝑒 𝑁𝑜𝑛-𝑀𝑜𝑑𝑎𝑙 𝑃𝑎𝑛𝑒𝑙𝑠 𝑖𝑛 𝑆𝑤𝑖𝑓𝑡𝑈𝐼 by Matthaus Woolard (@hishnash.bsky.social) With the new resizability requirements in iOS 27, the old sheet APIs just don't cut it for landscape on iPhone. #iOSDev #SwiftUI nilcoalescing.com/blog/Buildin...

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

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

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

AsyncImage got some useful improvements in iOS 27. We can now pass a URLRequest for per-image headers, caching, and timeout control, and provide a custom URLSession for image loading across a SwiftUI view hierarchy. You can learn more in my new post: nilcoalescing.com/blog/AsyncIm...

AsyncImage improvements in iOS 27

iOS 27 gives AsyncImage more control over remote image loading with URLRequest support for custom headers, cache policies, and timeouts, plus the ability to provide a custom URLSession across a SwiftU...

nilcoalescing.com

Excited to share that I'll be running a SwiftUI workshop at iOSDevUK this September! Really looking forward to attending the conference, meeting everyone, and spending some time in Aberystwyth. Hope to see you there!

Promotional graphic for iOSDevUK featuring a portrait of Natalia Panferova alongside the workshop title "Mastering SwiftUI Data Flow". The event takes place 7–10 September 2026 at Aberystwyth University.