Subscribe for weekly commentary and coverage of Swift and Apple platform development. Written by next app's swiftCon team and published every Friday. Free.

Written by Konstantinos Nikoloutsos

Issue 764

21st August 2026

Written by Konstantinos Nikoloutsos

Comment

Hello, iOS Dev Weekly readers 👋 It’s me Konsta.

I have been feeling especially happy to be part of the iOS community lately. Maybe it is because, even in this AI-heavy moment, I still see Apple hiring iOS engineers and investing in the tools we use every day. I recently came across a few open roles on LinkedIn that seemed connected to Instruments and new AI/ML APIs.

That feels important because many people building iOS apps with AI agents seem to run into the same issue: performance, observability and scalability. AI can be very good at completing one task in isolation, but when everything comes together, it does not always understand the bigger picture of the app. It doesn’t really think like a staff-level engineer. That is where experience, critical thinking, and strong programming foundations still matter.

Whether you are leading a small project or making decisions across a bigger team, those calls still need a human point of view. That is also the thread I saw in this week’s issue. Some of the articles I am sharing today should help you make better decisions, while others should help you understand how things work under the hood.

– Konstantinos Nikoloutsos

You’ve been learning iOS with Kodeco for 16 years. Now for your entire team.

Kodeco has been helping iOS developers learn since 2010, and as the landscape changes, we’re moving with it—helping you make the most of AI, without losing the craft that you love. Our Apple Foundation Models book shipped in July, with an in-depth course on using AI as a development tool coming this autumn. All of Kodeco’s content is included in Kodeco for Teams, which comes out of a training budget rather than your pocket, and provides access for your whole team. We can show you round in 20 minutes. Or take us to your leader.

News

Apple announces changes for apps in the European Union

New EU terms go into effect on October 1 2026. Core Technology Fee is replaced by a 5% Core Technology Commission for apps distributed outside the App Store. My opinion is that this probably will not make sense for every app, and I do not expect everyone to suddenly leave the App Store, but it may make alternative distribution more realistic for developers who already have a direct relationship with their customers.


Looking for maintainers

Reading and contributing to Open-source projects was always a quick and fun way to increase my knowledge and meet with new people. I still remember myself learning about the protocol witness from pointfreeco snapshottesting library, an alternative way of using protocols. In this article Massicotte is sharing a list of open source libraries that are looking for maintainers and I think it is a great opportunity.

Code

ContentBuilder Explained - from 10.9s to 5.38ms in 11-level nested swiftUI

The compiler is unable to type-check this expression in reasonable time. Yes, we’ve all seen this error at least once in our career and always questioned why the compiler cannot be smarter. In this article Fatbobman is explaining how ContentBuilder works and then focuses on what Apple changed to make SwiftUI expressions easier for the compiler to handle. The interesting part for me is that this is not just a new public API, but a change in how SwiftUI can reduce the amount of generic type information the compiler has to reason about. If you have ever split a view into smaller pieces just to make the type checker happy, this one is worth reading.


The State macro in Xcode 27

Xcode 27 quietly rewrites @State as a macro. The performance win is real with no more rerunning your class init on every view re-instantiation. Apple bundled this change on the Xcode version and not your deployment target, so it can break your build even if you’re still targeting iOS 15. For example two patterns stop compiling: initializers that override a declared initial value, and extensions using the synthesized memberwise init. Worth a quick grep before upgrading as Blake Crosley suggests.


iOS 27: StateReporter

Observability is becoming one of the most important parts of building reliable apps. Since we are moving faster than before, especially with AI helping us write code, I think that also means we need to understand problems faster when something goes wrong. In this article Anton Gubarenko explains StateReporting, a new iOS 27 framework that lets you attach app state to diagnostics, so tools like MetricKit and Instruments can show what the user was doing when a performance issue happened. In my current job, we are also looking for ways to improve our observability for the same reason: we do not want to wait days to understand that something is not working as expected.

Tools

A framework to make decisions faster as a Lead Software Engineer

Taking the perfect decision everytime as a leader is what is expected, right? And then you end up over-thinking, what if this is not the best solution? and then you think again and finally you feel you should deliver faster to What if you can follow a framework to help you take decisions faster that you can later iterate on to make better. Mohammad Faani in this article shares a framework he uses on his decision process that I think every leader should take a look.


Using AI while exercising your critical thinking

Have you ever seen the expression “Don’t be a meat proxy”? In our day-to-day, we are spending most of our time trying to solve a problem by speaking with an agent. The dopamine that we are getting sometimes is measured by how many problems we have solved and how fast we are going. How many problems are we solving? How many features are we building? One thing that is really important here is that we should always challenge the agent and try to apply on top of what he is saying. This is what, in my opinion, differentiates a really good engineer from someone that just uses the tool. Bruno Rocha makes the case that AI-assisted development still needs an engineer in the loop. The useful framing here is that your value is not forwarding the answer, but judging whether the answer makes sense.


Trait-ifying our libraries to reduce transitive dependencies

Have you ever wanted to be able to depend on a different flavour of a library? Let’s say you want to depend on a monkay but all of a sudden you end up with the whole jungle.. There must be a way to configure the SPM package to decide, based on the caller’s input how to be structured. Introducing SPM traits, a way for the caller to choose the trait he wants to enable.

One usecase of that is used by Point-Free who they are using SwiftPM package traits to let users opt into only the pieces of their libraries they need, instead of pulling in every transitive dependency. I believe traits is a powerful SPM feature that gives a lot of flexibility to the authors while giving a lot of options to the consumers!


What is a swift package registry?

I still catch myself thinking of Swift packages as Git repositories with tags, so Dave’s explanation on package registries was a useful reset. In this article, Dave Verwer, long readers of this newsletter will already know him, is using the tuist registry to load an spm module and gives some hints why package registries work is needed. My favorite one was that registry-hosted packages ship as immutable, verified source archives.

And finally...

Foldable iPhone rumors keep getting louder.. Users may love the extra screen, but I suspect a few iOS engineers are already feeling nostalgic for the good old days when an iPhone was just one rectangle 😅 Really curious on how something like this can spawn new design ideas.