Nil Coalescing
banner
nilcoalescing.com
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
Pinned
Subscribe to the Nil Coalescing newsletter for a monthly digest of our blog and YouTube content, Swift and SwiftUI learnings from the projects we are working on, and special discounts on our books:
nilcoalescing.com/newsletter
Nil Coalescing - Newsletter
nilcoalescing.com
Discover easy-to-implement techniques for supporting Dynamic Type with larger text in SwiftUI apps using system and custom fonts, the ScaledMetric property wrapper, dynamic type size environment value, and more: youtu.be/wflWj5l7wlk

#SwiftUI #iOSDev #Accessibility
Tips for Supporting Dynamic Type in SwiftUI Apps
YouTube video by Nil Coalescing
youtu.be
November 9, 2025 at 10:10 PM
Learn how to add Codable conformance to Swift enums, including automatic synthesis, customizations, and fully manual implementations for complex cases: nilcoalescing.com/blog/Codable...
#SwiftLang #iOSDev
Codable conformance for Swift enums
Learn how to add Codable conformance to Swift enums, including automatic synthesis, customizations, and fully manual implementations for complex cases.
nilcoalescing.com
November 9, 2025 at 5:30 AM
Explore SwiftUI APIs for customizing scroll behavior, including paging and view-aligned snapping, and learn what to watch out for to avoid unexpected results: nilcoalescing.com/blog/ScrollV...
#SwiftUI #iOSDev
ScrollView snapping in SwiftUI
Explore SwiftUI APIs for customizing scroll behavior, including paging and view-aligned snapping, and learn what to watch out for to avoid unexpected results.
nilcoalescing.com
November 5, 2025 at 8:50 PM
Reposted by Nil Coalescing
I've published a new video! I shared some tips for implementing Dynamic Type support in SwiftUI apps, covering system and custom fonts, ScaledMetric API, and dynamicTypeSize environment value: youtu.be/wflWj5l7wlk
#SwiftUI #iOSDev #Accessibility
Tips for Supporting Dynamic Type in SwiftUI Apps
YouTube video by Nil Coalescing
youtu.be
November 5, 2025 at 7:42 AM
Reposted by Nil Coalescing
Excited to share my recent appearance on the Swift Academy podcast! In this episode, Walid Sassi and I talk about iOS 26, Liquid Glass, SwiftUI, and Accessibility, and explore some of the new APIs along with ways to make apps more inclusive: youtu.be/CEZbwcv60MA
#iOSDev #SwiftUI
iOS26, SwiftUI and Accessibility with Natalia Panferova
YouTube video by Walid SASSI
youtu.be
November 2, 2025 at 9:57 PM
Prevent unnecessary text truncation at larger text sizes in SwiftUI apps with the fixedSize(horizontal:vertical:) modifier, forcing the text to expand vertically as needed: nilcoalescing.com/blog/Avoidin...
#SwiftUI #iOSDev
Avoiding text truncation in SwiftUI with Dynamic Type
Prevent unnecessary text truncation at larger text sizes with the fixedSize(horizontal:vertical:) modifier, forcing the text to expand vertically as needed.
nilcoalescing.com
November 1, 2025 at 11:44 PM
Reposted by Nil Coalescing
The October issue of the Nil Coalescing newsletter has gone out to all subscribers 📬

I've shared news on my SwiftUI Fundamentals book update, and my recent technical learnings on supporting iOS 26 and 26.1.

You can also read the issue online: nilcoalescing.com/newsletter/2...
Nil Coalescing - Nil Coalescing Newsletter - October 2025
I hope you've had a productive October! This month I've started updating my books for iOS 26, released an update for my app Breve with a special Halloween event, and recorded a Swift Academy podcast e...
nilcoalescing.com
October 31, 2025 at 9:08 PM
Reposted by Nil Coalescing
It's almost Halloween 👻 👻👻 Time to brew something spooky!

Find your perfect coffee recipe in Breve and get into the Halloween spirit: apps.apple.com/us/app/breve...

#Coffee #Halloween #iOSApp
October 31, 2025 at 7:19 AM
Learn how to use NWPathMonitor as an async sequence for real-time network status updates in your SwiftUI views: nilcoalescing.com/blog/ReactTo...
#iOSDev #SwiftUI
React to network status updates in SwiftUI
Learn how to use NWPathMonitor as an async sequence for real-time network status updates in your SwiftUI views.
nilcoalescing.com
October 30, 2025 at 11:23 PM
Starting with iOS 26, SwiftUI shows both title and icon in swipe action buttons by default, but the previous icon-only appearance can be restored using the labelStyle() modifier: nilcoalescing.com/blog/ShowIco...
#iOSDev #SwiftUI
Show icons only in SwiftUI swipe actions on iOS 26
Starting with iOS 26, SwiftUI shows both title and icon in swipe action buttons by default, but the previous icon-only appearance can be restored using the labelStyle() modifier.
nilcoalescing.com
October 23, 2025 at 10:15 PM
"SwiftUI Fundamentals" by @natpanferova.bsky.social has been updated for iOS 26 with refreshed visuals and examples reflecting the new Liquid Glass design: nilcoalescing.com/blog/SwiftUI...
#SwiftUI #iOSDev
"SwiftUI Fundamentals" book update: refreshed for iOS 26 and the Liquid Glass design
'SwiftUI Fundamentals' by Natalia Panferova has been updated for iOS 26 with refreshed visuals and examples reflecting the new Liquid Glass design.
nilcoalescing.com
October 22, 2025 at 8:57 PM
Reposted by Nil Coalescing
SwiftUI makes it easy to show a “no results” state for search with ContentUnavailableView.search. And it even automatically includes the search text in the message, as long as it’s used within the scope of the searchable() modifier.
#iOSDev #SwiftUI
October 22, 2025 at 5:37 AM
In iOS 26, SwiftUI introduces a new close button role for dismissing informational views, automatically showing a standard close icon without needing a custom label: nilcoalescing.com/blog/AddAClo...
#SwiftUI #iOSDev
Add a Close button to SwiftUI modals on iOS 26
In iOS 26, SwiftUI introduces a new close button role for dismissing informational views, automatically showing a standard close icon without needing a custom label.
nilcoalescing.com
October 21, 2025 at 8:38 PM
Reposted by Nil Coalescing
I’ve just published an update for my SwiftUI Fundamentals book! It’s now refreshed for iOS 26 and the new Liquid Glass design, with updated examples and screenshots throughout.

You can check it out and get the new version here: books.nilcoalescing.com/swiftui-fund...

#iOSDev #SwiftUI
SwiftUI Fundamentals
The essential guide to SwiftUI core concepts and APIs
books.nilcoalescing.com
October 20, 2025 at 5:53 AM
Buttons inside a SwiftUI List row can cause the entire row to become tappable and trigger multiple buttons at once, but applying a specific button style ensures each button works independently: nilcoalescing.com/blog/Multipl...
#SwiftUI #iOSDev
Multiple buttons in SwiftUI List rows
Buttons inside a List row can cause the entire row to become tappable and trigger multiple buttons at once, but applying a specific button style ensures each button works independently.
nilcoalescing.com
October 18, 2025 at 11:13 PM
Reposted by Nil Coalescing
On iOS 26 we have a new `close` button role in SwiftUI to dismiss a view without losing the user's progress, unlike a cancel action. A convenient way to add a dismiss button for modals without the need to define a custom button label!
#SwiftUI #iOSDev
October 18, 2025 at 8:22 AM
Discover how to use the Observable macro in SwiftUI and its advantages over ObservableObject, such as more efficient view updates and simplified code management: nilcoalescing.com/blog/Observa...
#SwiftUI #iOSDev
Using @Observable in SwiftUI views
Discover how to use the @Observable macro in SwiftUI and its advantages over ObservableObject, such as more efficient view updates and simplified code management.
nilcoalescing.com
October 16, 2025 at 11:08 PM
Reposted by Nil Coalescing
In the first version of @brevecoffeeapp.bsky.social I placed timers in the tab view's bottom accessory, but it broke in iOS 26.1 beta. In the latest release, I switched to a custom view with an interactive glass effect. To keep it always visible above the tabs, I used safeAreaBar().
#SwiftUI #iOSDev
October 15, 2025 at 11:06 PM
Reposted by Nil Coalescing
I noticed that on iOS 26, the default swipe action appearance changed to show both an icon and a title instead of just the icon. If we want to restore the previous icon-only look, we can use the labelStyle() modifier in SwiftUI: nilcoalescing.com/blog/ShowIco...
#iOSDev #SwiftUI
Show icons only in SwiftUI swipe actions on iOS 26
Starting with iOS 26, SwiftUI shows both title and icon in swipe action buttons by default, but the previous icon-only appearance can be restored using the labelStyle() modifier.
nilcoalescing.com
October 15, 2025 at 6:08 AM
In SwiftUI, the popover() modifier shows a popover on iPad but turns into a sheet on iPhone by default. To prefer popover presentation even in compact size classes, we can apply presentationCompactAdaptation(_:) inside the popover's content: nilcoalescing.com/blog/Popover...
#iOSDev #SwiftUI
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.
nilcoalescing.com
October 14, 2025 at 4:53 AM
Learn how to define custom environment values in SwiftUI, eliminate boilerplate with the Entry macro, and pass data through the view hierarchy effectively: nilcoalescing.com/blog/CustomE...
#SwiftUI #iOSDev
Custom environment values in SwiftUI
Learn how to define custom environment values in SwiftUI, eliminate boilerplate with the @Entry macro in Xcode 16, and pass data through the view hierarchy efficiently.
nilcoalescing.com
October 12, 2025 at 1:38 AM
Reposted by Nil Coalescing
Breve version 1.1 is here!

Enjoy improved brewing timers, a new precise mode for ingredient measurements, and other improvements to make your coffee experiments at home even more delightful!

Download on the App Store: apps.apple.com/app/apple-st...

#iOSApp #IndieDev #CoffeeLovers
October 11, 2025 at 11:33 PM
Explore different ways to work with the SwiftUI environment, including reading and setting values, creating custom environment keys, and using it to pass down actions and observable classes: nilcoalescing.com/blog/SwiftUI...
#SwiftUI #iOSDev #SwiftLang
SwiftUI Environment
Explore different ways to work with SwiftUI environment, including reading and setting values, creating custom environment keys, and using the environment to pass down actions and observable classes.
nilcoalescing.com
October 6, 2025 at 10:23 PM
Reposted by Nil Coalescing
When testing Dynamic Type support in @brevecoffeeapp.bsky.social I noticed that text would get truncated at larger text sizes for no real reason. I had to apply fixedSize(horizontal:vertical:) as a workaround to force the text to wrap instead: nilcoalescing.com/blog/Avoidin...
#SwiftUI #iOSDev
Avoiding text truncation in SwiftUI with Dynamic Type
Prevent unnecessary text truncation at larger text sizes with the fixedSize(horizontal:vertical:) modifier, forcing the text to expand vertically as needed.
nilcoalescing.com
October 6, 2025 at 6:18 AM
Format interpolated values like arrays of strings, measurements, and dates directly inside SwiftUI Text views using FormatStyle, and display dynamic dates using Text.DateStyle: nilcoalescing.com/blog/Formatt...
#SwiftUI #iOSDev #SwiftLang
Formatting data inside SwiftUI Text views
Format interpolated values like arrays of strings, measurements, and dates directly inside SwiftUI Text views using FormatStyle, and display dynamic dates using Text.DateStyle.
nilcoalescing.com
October 5, 2025 at 10:34 PM