Matthaus Woolard
@hishnash.bsky.social
📤 216
📥 366
📝 38
Data Scientist,
#Python
and
#SwiftLang
, macOS/iPadOS app developer
reposted by
Matthaus Woolard
Natalia Panferova
4 days ago
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...
loading . . .
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...
https://nilcoalescing.com/blog/AsyncImageImprovementsInSwiftUIOnIOS27/
0
22
6
reposted by
Matthaus Woolard
Breve
4 days ago
The Cold & Iced section in Breve has been growing! Four new recipes landed today, ready for hot days and slow, refreshing coffee breaks. Find them in Breve:
apps.apple.com/us/app/breve...
#Coffee
#CoffeeRecipes
#iOS
0
5
3
reposted by
Matthaus Woolard
Nil Coalescing
5 days ago
Reorder items within and between custom SwiftUI containers, and build selection-aware multi-item drag and drop interactions with the new APIs in iOS 27:
nilcoalescing.com/blog/NewSwif...
loading . . .
New SwiftUI APIs for reordering and drag and drop on iOS 27
Reorder items within and between custom SwiftUI containers, and build selection-aware multi-item drag and drop interactions with the new APIs in iOS 27.
https://nilcoalescing.com/blog/NewSwiftUIAPIsForReorderingAndDragAndDropOniOS27/
0
12
2
reposted by
Matthaus Woolard
Natalia Panferova
5 days ago
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!
1
20
4
reposted by
Matthaus Woolard
Natalia Panferova
7 days ago
I've been experimenting with the new SwiftUI APIs for reordering items in container views and drag-and-drop in iOS 27. I documented what I've learned in my new blog post:
nilcoalescing.com/blog/NewSwif...
loading . . .
New SwiftUI APIs for reordering and drag and drop on iOS 27
Reorder items within and between custom SwiftUI containers, and build selection-aware multi-item drag and drop interactions with the new APIs in iOS 27.
https://nilcoalescing.com/blog/NewSwiftUIAPIsForReorderingAndDragAndDropOniOS27/
2
25
5
reposted by
Matthaus Woolard
Natalia Panferova
7 days ago
Last day of the sale!
add a skeleton here at some point
0
4
3
reposted by
Matthaus Woolard
Natalia Panferova
10 days ago
I've built a macOS app for designing mesh gradients. Tintly generates gradients from pasted color palettes and lets you adjust control points visually. It can export images, SVGs, CSS, and SwiftUI code. It's now available on the Mac App Store:
apps.apple.com/us/app/tintl...
#macOSDev
#IndieDev
4
74
10
reposted by
Matthaus Woolard
Natalia Panferova
11 days ago
I wrote about two additions to SwiftUI's navigation transition APIs in iOS 27. The new crossFade transition provides an alternative presentation animation, while AnyNavigationTransition makes it possible to choose a transition dynamically at runtime:
nilcoalescing.com/blog/SwiftUI...
loading . . .
Navigation transition updates in SwiftUI on iOS 27
SwiftUI now includes CrossFadeNavigationTransition, a built-in cross-fade navigation transition, and AnyNavigationTransition, a type-erased wrapper that allows transitions to be selected dynamically a...
https://nilcoalescing.com/blog/SwiftUINavigationTransitionUpdatesIniOS27/
2
17
3
reposted by
Matthaus Woolard
Natalia Panferova
11 days ago
I've just released an update for
@brevecoffeeapp.bsky.social
! It adds Home Screen widgets with daily coffee suggestions, recipe sharing, improved search, and better VoiceOver support ☕️
add a skeleton here at some point
0
10
4
reposted by
Matthaus Woolard
Natalia Panferova
12 days ago
My WWDC26 book sale will be running for a few more days!
add a skeleton here at some point
0
13
5
reposted by
Matthaus Woolard
Natalia Panferova
15 days ago
In iOS 27 we can add swipe actions to items in any scroll container, not just List, by applying the new swipeActionsContainer() modifier to the wrapping ScrollView. I wrote a post with some examples:
nilcoalescing.com/blog/CustomS...
#WWDC26
#iOSDev
#SwiftUI
loading . . .
Custom scroll layouts with swipe actions in SwiftUI on iOS 27
iOS 27 extends support for swipe actions beyond List to any scroll container using the new swipeActionsContainer() modifier.
https://nilcoalescing.com/blog/CustomScrollLayoutsWithSwipeActionsInSwiftUIOnIOS27
1
20
3
reposted by
Matthaus Woolard
Natalia Panferova
17 days ago
In Xcode 27 @State changes from a property wrapper to a macro, gaining lazy evaluation of the initial value. I summarized what this means for managing @Observable classes in our SwiftUI views:
nilcoalescing.com/blog/Initial...
#WWDC26
#SwiftUI
#iOSDev
loading . . .
Initializing @Observable classes with the @State macro in Xcode 27
SwiftUI's @State changes from a property wrapper to a macro in Xcode 27, gaining lazy evaluation of the initial value and fixing unnecessary @Observable model initialization on view recreation.
https://nilcoalescing.com/blog/InitializingObservableClassesWithTheStateMacroInXcode27/
1
25
6
reposted by
Matthaus Woolard
Natalia Panferova
19 days ago
For a new app I'm working on, I needed to display a measurement in a SwiftUI Text view with the unit in a smaller font than the value. We can do this by targeting the unit component in an AttributedString. I shared an example on my blog:
nilcoalescing.com/blog/Styling...
loading . . .
Styling measurement unit fonts in SwiftUI
Use the AttributedString API to build a reusable Text initializer that applies a distinct font to the unit component of a formatted measurement.
https://nilcoalescing.com/blog/StylingMeasurementUnitFontsInSwiftUI/
1
30
4
reposted by
Matthaus Woolard
Natalia Panferova
19 days ago
The SwiftUI Way is currently 30% off for WWDC26!
add a skeleton here at some point
0
18
6
reposted by
Matthaus Woolard
Natalia Panferova
22 days ago
I wrote a new post covering the full range of animation timing options in SwiftUI, including easing curves, spring animations, the CustomAnimation protocol and more:
nilcoalescing.com/blog/Animati...
#iOSDev
#SwiftUI
loading . . .
SwiftUI animation timing
Review the full range of animation timing options available in SwiftUI, including easing curves, spring animations, the CustomAnimation protocol, and animation modifiers.
https://nilcoalescing.com/blog/AnimationTimingInSwiftUI/
0
11
3
reposted by
Matthaus Woolard
Natalia Panferova
24 days ago
My annual WWDC book sale has started! All my Swift and SwiftUI books, including my most recent book, The SwiftUI Way, are now 30% off! You can learn more about the available books and bundles on my website:
books.nilcoalescing.com
#iOSDev
#SwiftLang
#SwiftUI
0
17
5
reposted by
Matthaus Woolard
Natalia Panferova
27 days ago
While building and testing a macOS app locally, values stored in UserDefaults remain between launches. We can quickly clear them using the defaults delete command. I wrote a short post as a reference:
nilcoalescing.com/blog/Clearin...
#macOSDev
loading . . .
Clearing UserDefaults during macOS app development
Use the defaults Terminal command to clear persisted values and test onboarding, settings, and fresh app state.
https://nilcoalescing.com/blog/ClearingUserDefaultsDuringmacOSAppDevelopment/
0
16
3
reposted by
Matthaus Woolard
Natalia Panferova
28 days ago
The May issue of the Nil Coalescing newsletter is out! I shared Apple's community recognition page, some observations from using AI agents with SwiftUI, recent blog posts, and a bit of pre-WWDC excitement:
nilcoalescing.com/newsletter/2...
loading . . .
Nil Coalescing - Nil Coalescing Newsletter – May 2026
WWDC is just around the corner! This year, I'm not entirely sure what to expect, but both Matt and I are hoping for a less buggy Xcode, more polished Liquid Glass APIs, and better SwiftUI support on m...
https://nilcoalescing.com/newsletter/2026-05-28/
0
6
4
reposted by
Matthaus Woolard
Natalia Panferova
about 1 month ago
I wrote a new post about TimelineView in SwiftUI and how it can be used to build views that update periodically or continuously without relying on explicit state changes, making it possible to create dynamic interfaces and visual effects:
nilcoalescing.com/blog/Timelin...
#iOSDev
#SwiftUI
loading . . .
Refreshing and animating views using TimelineView in SwiftUI
Build SwiftUI views that update periodically or continuously, without relying on explicit state changes, to create dynamic interfaces and visual effects.
https://nilcoalescing.com/blog/TimelineViewInSwiftUI/
3
25
6
reposted by
Matthaus Woolard
Natalia Panferova
about 1 month ago
To programmatically scroll to an edge, a raw offset, or a view with a provided identity in SwiftUI, we can use the scrollPosition(_:anchor:) modifier. It takes a binding to a ScrollPosition, available from iOS 18:
nilcoalescing.com/blog/ModernS...
#iOSDev
#SwiftUI
2
18
4
reposted by
Matthaus Woolard
Nil Coalescing
about 1 month ago
BackgroundStyle in SwiftUI exposes hierarchical levels via .secondary, .tertiary, and similar properties, giving us system background colors that adapt to context and color scheme without the need to bridge through UIColor:
nilcoalescing.com/blog/Hierarc...
#iOSDev
#SwiftUI
loading . . .
Hierarchical background styles in SwiftUI
Use the new instance properties of the ShapeStyle in iOS 17 to access hierarchical system background styles, such as secondary and tertiary background.
https://nilcoalescing.com/blog/HierarchicalBackgroundStyles/
1
11
3
reposted by
Matthaus Woolard
Natalia Panferova
about 1 month ago
We can customize where the scroll view should initially position its content in SwiftUI using the defaultScrollAnchor() modifier. It also lets us set a different anchor per situation, for example when the content is smaller than its container:
nilcoalescing.com/blog/ModernS...
#iOSDev
#SwiftUI
0
20
3
reposted by
Matthaus Woolard
Natalia Panferova
about 1 month ago
I've just published a post covering the modern SwiftUI APIs for programmatic scrolling, including defaultScrollAnchor(), scrollPosition(), and others, also highlighting some nuances that are easy to miss:
nilcoalescing.com/blog/ModernS...
#iOSDev
#SwiftUI
loading . . .
Modern SwiftUI APIs for programmatic scrolling
Master programmatic scroll control in SwiftUI using defaultScrollAnchor(_:), scrollPosition(_:anchor:), and ScrollPosition to configure, drive, and read scroll position in your apps.
https://nilcoalescing.com/blog/ModernSwiftUIAPIsForProgrammaticScrolling/
1
22
3
reposted by
Matthaus Woolard
Natalia Panferova
about 1 month ago
AI coding agents tend to hardcode spacing in SwiftUI, which can look wrong and cramped when a user adjusts their font size preference. SwiftUI's default container spacing adjusts for Dynamic Type automatically, but if you need custom spacing, consider using the ScaledMetric API.
#iOSDev
#SwiftUI
1
21
4
reposted by
Matthaus Woolard
Nil Coalescing
about 1 month ago
Learn how to build a SwiftUI mindset, use the framework more effectively in your projects and avoid common pitfalls from Natalia Panferova, former SwiftUI Frameworks Engineer at Apple:
www.youtube.com/watch?v=Y_Ov...
#iOSDev
#SwiftUI
loading . . .
The SwiftUI Mindset: 5 Key Ideas to Avoid Common Pitfalls
YouTube video by iOS Conf SG
https://www.youtube.com/watch?v=Y_Ov-ddMb24
1
15
5
reposted by
Matthaus Woolard
Natalia Panferova
about 1 month ago
Excited to share that I'll be speaking at /dev/world on tour in Sydney in July! Can't wait to try out new SwiftUI APIs after WWDC26 and present my learnings 🤩
ontour.devworld.au
loading . . .
/dev/world on tour landing in Sydney!
/dev/world is Australia's longest running conference for macOS and iOS developers and designers - and we're going on tour for the first time!
https://ontour.devworld.au/
0
10
2
reposted by
Matthaus Woolard
Natalia Panferova
about 1 month ago
Starting from iOS 26, we can make a block of text easier to read at a glance by applying a loose line height with the new lineHeight() modifier in
#SwiftUI
. The modifier comes with many overloads to make customized line height adjustments:
nilcoalescing.com/blog/Adjusti...
1
12
3
reposted by
Matthaus Woolard
Natalia Panferova
about 1 month ago
My friends from Those Who Swift newsletter are running a special promotion on my recent book "The SwiftUI Way - A field guide to SwiftUI patterns and anti-patterns" this week! Check out this week's issue to take advantage of the deal:
thosewhoswift.substack.com/p/those-who-...
#iOSDev
#SwiftUI
1
10
6
reposted by
Matthaus Woolard
Natalia Panferova
about 1 month ago
Apple just published a new community recognition page with many inspiring developers, advocates, and educators who are making a difference in the Apple developer community and I'm so happy and honored to be one of them 😊
developer.apple.com/community/re...
loading . . .
Recognition - Community - Apple Developer
All around the world, developers do meaningful work that extends beyond great apps and games. They organize events, write tutorials, mentor others, and create spaces to learn and grow.
https://developer.apple.com/community/recognition/
3
45
5
reposted by
Matthaus Woolard
Natalia Panferova
about 2 months ago
Knowing which SwiftUI modifiers to reach for when styling the macOS window toolbar is not always obvious, and similar appearances can often be achieved in more than one way. I put together a reference for the different ways to do it on macOS 26:
nilcoalescing.com/blog/AGuideT...
#macOSDev
#SwiftUI
loading . . .
A guide to macOS window toolbar styles in SwiftUI
Customize the appearance of the macOS window toolbar in SwiftUI using scene and view modifiers to control its layout, title visibility, and background.
https://nilcoalescing.com/blog/AGuideToMacOSToolbarStylesInSwiftUI/
0
19
6
reposted by
Matthaus Woolard
Nil Coalescing
about 2 months ago
Create a chart with the Swift Charts framework to show UV index throughout the day inspired by the iOS Weather app that dims the area up to the current time:
nilcoalescing.com/blog/AreaCha...
#iOSDev
#macOSDev
#SwiftUI
loading . . .
Area chart with a dimming layer up to the current point in time
Create a chart with the Swift Charts framework to show UV index throughout the day inspired by the iOS Weather app that dims the area up to the current time.
https://nilcoalescing.com/blog/AreaChartWithADimmingLayer/
1
13
2
reposted by
Matthaus Woolard
Natalia Panferova
about 2 months ago
By default, SwiftUI popovers transform into sheets in a compact horizontal size class, but we can apply presentationCompactAdaptation(.popover) to the popover's content to override this and show a popover on iPhone:
nilcoalescing.com/blog/Popover...
#iOSDev
#SwiftUI
loading . . .
Show a popover on iPhone in SwiftUI
Starting with iOS 16.4, we can use the presentationCompactAdaptation(_:) modifier to tell SwiftUI that we prefer popover presentation even in compact size classes.
https://nilcoalescing.com/blog/PopoverOniPhoneInSwiftUI/
1
12
4
reposted by
Matthaus Woolard
Natalia Panferova
about 2 months ago
I wrote a post on implementing background app refresh in SwiftUI. It covers setting up the capability in Xcode, scheduling a task, registering a handler with backgroundTask(_:action:), and testing it using the Xcode debugger:
nilcoalescing.com/blog/Schedul...
#iOSDev
#SwiftUI
loading . . .
Scheduling and handling background app refresh in SwiftUI
Configure a SwiftUI app to schedule and handle a background fetch task using the Background Tasks framework and the backgroundTask(_:action:) SwiftUI modifier.
https://nilcoalescing.com/blog/SchedulingAndHandlingBackgroundAppRefreshInSwiftUI/
0
15
8
reposted by
Matthaus Woolard
Natalia Panferova
about 2 months ago
We can easily animate insertion and removal of SF Symbols in SwiftUI with symbol effect transitions. We don't even need to apply an implicit animation with the animation(_:value:) modifier or wrap the state modification in a withAnimation {} call.
#iOSDev
#SwiftUI
loading . . .
2
23
3
reposted by
Matthaus Woolard
Natalia Panferova
about 2 months ago
The April issue of the Nil Coalescing newsletter has been sent out and is now available online 📬 I shared links to talks from try! Swift Tokyo, the reception of 'The SwiftUI Way' book, and new content this month:
nilcoalescing.com/newsletter/2...
#iOSDev
#SwiftLang
#SwiftUI
loading . . .
Nil Coalescing - Nil Coalescing Newsletter - April 2026
This month we traveled to Japan for try! Swift Tokyo. The conference was great, really well organized, with strong talks and workshops across the board. It was nice to meet the Japanese iOS community ...
https://nilcoalescing.com/newsletter/2026-04-29/
0
9
4
reposted by
Matthaus Woolard
Natalia Panferova
about 2 months ago
Just noticed that my talk from try! Swift Tokyo got featured in Tech Talks Weekly 🙌
www.techtalksweekly.io/p/issue-101-...
loading . . .
"I hate AI software dev" 😡, agents are destroying Open Source 🤖, how to fix vibe coding 🧑💻, MCPs future 🔮, building trust in teams 🤝, ...
Where the Future of Tech Takes the Stage – Craft Conference (Sponsored)
https://www.techtalksweekly.io/p/issue-101-i-hate-ai-software-dev
0
10
3
reposted by
Matthaus Woolard
Natalia Panferova
about 2 months ago
The onChange() modifier in SwiftUI has gone through some API changes since it was introduced. I wrote an overview of the modern variants, including how to access old and new values, and trigger the action on initial appearance:
nilcoalescing.com/blog/Overvie...
#iOSDev
#SwiftUI
loading . . .
Overview of the onChange() modifier in SwiftUI
Explore the different variants of the onChange() modifier in SwiftUI, including how to access old and new values, trigger the action on initial render, and run asynchronous code in the action closure.
https://nilcoalescing.com/blog/OverviewOfonChangeInSwiftUI/
0
14
2
reposted by
Matthaus Woolard
Nil Coalescing
about 2 months ago
Starting with Swift 6.2 and iOS 26, EnumeratedSequence conforms to RandomAccessCollection, allowing enumerated() to be used directly in ForEach and List views in SwiftUI:
nilcoalescing.com/blog/UsingEn...
#iOSDev
#SwiftUI
loading . . .
Using enumerated() with SwiftUI List and ForEach to show item numbers
Starting with Swift 6.2 and iOS 26, EnumeratedSequence conforms to RandomAccessCollection, allowing enumerated() to be used directly in ForEach and List views.
https://nilcoalescing.com/blog/UsingEnumeratedWithListAndForEach/
2
7
4
reposted by
Matthaus Woolard
Natalia Panferova
2 months ago
List in
#SwiftUI
is only lazy when it can determine how many views a ForEach element resolves to without evaluating the closure. Using an `if` statement inside ForEach, or wrapping rows in AnyView makes SwiftUI evaluate the ForEach closure for every element before any rows are displayed.
5
35
8
reposted by
Matthaus Woolard
Nil Coalescing
2 months ago
Extend your app’s functionality to the entire macOS system by implementing services that users can access from the context menu or the Services menu in other apps:
nilcoalescing.com/blog/macOSSy...
#macOSDev
loading . . .
Provide macOS system-wide services from your app
Extend your app’s functionality to the entire macOS system by implementing services that users can access from the context menu or the Services menu in other apps.
https://nilcoalescing.com/blog/macOSSystemWideServices/
0
4
2
reposted by
Matthaus Woolard
Natalia Panferova
2 months ago
Got home from Japan and try! Swift Tokyo, the trip was amazing! It was so good to meet the local iOS community and explore Tokyo a bit. Thank you so much for having me
@tryswift.jp
☺️
#tryswift
0
22
3
reposted by
Matthaus Woolard
Nil Coalescing
2 months ago
Register your macOS app as a login item using SMAppService:
nilcoalescing.com/blog/LaunchA...
#macOSDev
loading . . .
Add launch at login setting to a macOS app
Register your macOS app as a login item using SMAppService.
https://nilcoalescing.com/blog/LaunchAtLoginSetting/
0
4
4
reposted by
Matthaus Woolard
Natalia Panferova
2 months ago
Got the nicest feedback about my SwiftUI books, it made me really happy 🥰 "... the explanations of view identity and data flow made sense in a way that just hadn’t gotten through to me no matter how many other tutorials or bits of Apple documentation I read."
2
17
3
reposted by
Matthaus Woolard
Nil Coalescing
2 months ago
The new backgroundExtensionEffect() SwiftUI modifier in iOS 26 lets us extend and blur visual content beyond a view’s bounds, creating continuous backgrounds behind elements like sidebars, inspectors, and overlay controls:
nilcoalescing.com/blog/Backgro...
#SwiftUI
#iOSDev
loading . . .
Create immersive backgrounds in SwiftUI with backgroundExtensionEffect()
The new backgroundExtensionEffect() modifier in iOS 26 lets us extend and blur visual content beyond a view’s bounds, creating continuous backgrounds behind elements like sidebars, inspectors, and ove...
https://nilcoalescing.com/blog/BackgroundExtensionEffectInSwiftUI/
0
12
4
reposted by
Matthaus Woolard
Natalia Panferova
2 months ago
Today was the last day of the try! Swift Tokyo conference and also the day of my talk. I think it went well 😌 Thank you so much to everyone involved
@tryswift.jp
for such an amazing experience!
#tryswift
2
15
2
reposted by
Matthaus Woolard
Natalia Panferova
3 months ago
Heading to Japan tomorrow for
@tryswift.jp
✈️ I've never been to Tokyo or the try! Swift conference before, so getting to attend and speak is a dream! Can't wait to meet everyone!
tryswift.jp/en/
loading . . .
try! Swift Tokyo
Developers from all over the world will gather for tips and tricks and the latest examples of development using Swift. The event will be held for three days from April 12 - 14, 2026, with the aim of s...
https://tryswift.jp/en/
0
15
4
reposted by
Matthaus Woolard
Nil Coalescing
3 months ago
SwiftUI offers several methods to change the color of text, including foregroundStyle() and tint() modifiers, AttributedString attributes, and the textRenderer() API for advanced styling:
nilcoalescing.com/blog/Foregro...
#SwiftUI
#iOSDev
loading . . .
Ways to customize text color in SwiftUI
SwiftUI offers several methods to change the color of text, including foregroundStyle() and tint() modifiers, AttributedString attributes, and the textRenderer() API for advanced styling.
https://nilcoalescing.com/blog/ForegroundColorStyleAndTintInSwiftUI/
1
14
5
reposted by
Matthaus Woolard
Natalia Panferova
3 months ago
Published a new YouTube video covering some advanced techniques for working with Optionals in Swift. I shared these as part of my presentation "Swift's Hidden Gems" at the ARCtic Conference and many developers were surprised
youtu.be/qgDIOrKnmuw
#SwiftLang
loading . . .
Advanced Techniques for Working with Optionals in Swift
YouTube video by Nil Coalescing
https://youtu.be/qgDIOrKnmuw
0
14
6
reposted by
Matthaus Woolard
Natalia Panferova
3 months ago
I wrote a post on how we can embed SF Symbols in Text and style them with modifiers in SwiftUI by leveraging LocalizedStringKey interpolation:
nilcoalescing.com/blog/Embeddi...
#iOSDev
#SwiftUI
loading . . .
Embedding SF Symbols in SwiftUI Text
Combine text with icons and style them using modifiers in SwiftUI by leveraging LocalizedStringKey interpolation.
https://nilcoalescing.com/blog/EmbeddingSFSymbolsInSwiftUIText/
2
15
6
reposted by
Matthaus Woolard
Natalia Panferova
3 months ago
SwiftUI is approachable at first, but in real-life projects it's easy to make mistakes that can compromise app stability and performance. My new book "The SwiftUI Way" will help you recognize the most common anti-patterns and choose better alternatives:
books.nilcoalescing.com/the-swiftui-...
loading . . .
The SwiftUI Way
A field guide to SwiftUI patterns and anti-patterns
https://books.nilcoalescing.com/the-swiftui-way
1
25
8
Load more
feeds!
log in