To: Subscribers of Not only Swift
Date: November 11, 2025
Issue: 88
Re: SwiftUI Performance, Developer Tools, and Swift Concurrency
Hey everyone!
Time flies - I’ve been meaning to write sooner, but life got busy with a bunch of things suddenly. The good news is that I am able to share some of them with you soon, for example my work on adding support for AsyncSequences to Firebase - join my livestream this week to get an update!
The links I collected for this issue focus on SwiftUI performance - if you haven’t seen Steven’s presentation yet, I’d warmly recommend setting aside the roughly 50 minutes to watch it - it’s definitely worth it. If you’d rather read, Mathis has an excellent write-up of how the SwiftUI redraw system works, and there is some practical advice for optimising List and ForEach performance.
Apple has also updated their excellent “Develop in Swift” tutorials. You’ve got to admire their attention to detail - they provide all the screenshots (and screencasts) in light and dark mode - I know firsthand how much work this is. Kudos!
This year, I’ve spoken at ten events, and there are still a couple left until conference season wraps up for me:
If you attend any of these events, come and say hi - it’s always lovely to connect IRL.
Thanks for reading, and I’ll catch you soon!
Peter
by Peter Friese
It’s been a while since I last did a livestream on my channel.
The good news is I’ve made good progress on implementing support for AsyncSequences in Firebase, making it much more convenient to consume asynchronous updates such as authentication events or Firestore document updates.
Join me tomorrow at 20:15 CET on my channel to learn more, and see how I update an existing codebase to the new paradigm.
by Natascha Fadeeva
Combine allowed us to use reactive programming paradigms in Swift apps. In this post, Natascha shows how you can use AsyncStream and AsyncSequence to achieve the same in a Swift concurrency-native way.
by Swift Team
From time to time, Apple updates their excellent set of interactive tutorials for developing in Swift. “Develop in Swift” is a comprehensive set of interactive tutorials that range from application design over SwiftUI, data modeling, machine learning, spatial computing to app distribution.
It also includes a new tutorial about app development that provides guidance for how to handle data in views, and how to build custom views. Highly recommended reading!
by Steven Peterson
“Ensure your view bodies update quickly and only when needed” - this should be your guiding principle for building SwiftUI apps. In this video, Steven demonstrates how exactly you can achieve this.
For more details about the performance implications of writing to the SwiftUI environment, see Steven’s reply on this Developer Forums thread.
by Mathis Gaignet
If you’d like to dig deeper into SwiftUI performance, check out Mathis Gaignet’s article. Mathis takes a close look at the SwiftUI redraw system, breaking down the internal process into four key steps: attribute invalidation, body recomputation, diffing, and, finally, the intelligent redrawing of only what has changed.
by Alpennec
In issue 76 of this newsletter, I covered RenderMeThis, a tool for highlighting updated views in your SwiftUI apps. Turns out Xcode 26 now has built-in support for flashing updated regions.
Note that this only works when running your app on a physical device.
by Kyle Swifter
Here is another SwiftUI performance tip to help identify and fix slow SwiftUI List / ForEach performance.
by Livsy
Want to add the AI glow effect that can be seen in Xcode’s Coding Intelligence input field to your own apps? Look no further - Livsy shows how. And - yes - it makes an appearance here.
by Peter Friese
In this video, I walk through implementing chat functionality using Firebase AI Logic on iOS.
In addition to covering all the basics of using the chat API of Firebase AI Logic, I also show how to use system instructions (to add more personality to your chat), multimodal chat (for chatting about images or other files), and streaming for improved UX.
I also explain why LLMs actually can’t keep conversation history - and how Firebase AI Logic solves this problem for us.
by bjesus
If you need an easy-to-use tool for scraping websites, this might definitely be worth a look.
by Tobi
I find myself trying out lots of SDKs, libraries, and tools. There is a folder named “Sandbox” on my machine that I use to store all those tiny little experiments. Try aims at making this better - it quickly sets up a new folder for trying out stuff, and provides fuzzy search to later find it.