The iOS Weekly Brief – Issue #72
New App Store creative assets, an on-device Media Intelligence framework, MainActor protocol isolation, SwiftUI's ContentBuilder for non-view types, testing SwiftData, and a URLSession API client
This week I’ve been thinking about...
Testing is becoming a big deal for me. We write a huge amount of code now, and AI can help with automating tests, it can suggest test cases and write them fast, but I noticed that the quality of these tests could be better... It adds unnecessary tests or tests that check the wrong thing. One of the articles in this issue talks about testing SwiftData operations, which really means testing Apple’s own framework instead of your business logic, and that connected with what I have been seeing. Usually, your AI agent does not know what deserves a test, and you end up with a bunch of tests that look good on paper but give you no real confidence.
TDD approach helps me a lot. I can just describe what needs to be tested, approve those tests first, and only then let the AI agent implement the code to make them pass. It is easy to review test scenarios, though. If you do it backwards, you will have tests that describe what the code already does, and some of them overlap or test the same thing twice.
What’s New
Get ready for new creative assets on the App Store
Apple shared best practices and free design templates for the new creative assets announced back in June. You can now show your brand, seasonal content, or new features, not just your app in use, across your product page, search results, and Apple Ads.
Must Read
Apple added a new framework in iOS 27 beta that works with photo and video collections instead of single images, grouping the same person across your photos and finding highlights in video. I love that this runs entirely on the device, you know I always get excited about that 😅 This is a free, easy-to-implement feature if your product touches this kind of functionality
Swift protocols and the main actor
Marking a protocol with MainActor changes the isolation of any type that conforms to it, and actors cannot conform to such a protocol at all. The article walks through why that happens and shows a way to handle this using per-requirement isolation instead of isolating the whole protocol.
Using SwiftUI’s ContentBuilder with Non-View Types
Xcode 27 removes the View constraint from ViewBuilder’s buildBlock, so ContentBuilder can now assemble types that have nothing to do with views. The article shows how to bring the same syntax down to iOS 17 by adding your own buildBlock overload with parameter packs.
Building Testable SwiftData Applications
SwiftData’s CRUD operations just work, and there is no need to test them. Only business rules deserve unit tests. In-memory stores keep tests isolated, and the new ResultsObserver in iOS 27 lets you test aggregate logic outside of SwiftUI views entirely. I 100% agree with this approach. Testing an already built framework isn’t your job, that’s on the framework developers, in this case Apple.
Quick Read
Video
I agree with this. It used to be that most of your effort went into coming up with an idea and building it, and then you would get a wave of users for that effort. Now coming up with an idea and building it takes far less, but the users are not there, and without them none of it matters…
Toolbox
A Swift macro package that adds an ai body macro, you declare a function without a body, describe what it should do in a string, and Codex generates the Swift implementation at compile time 🤯 I’ll be honest, I have not used this approach. I stopped writing code in the editor a while ago, even function names. My workflow is discussing a detailed plan with AI, how to implement something, how it should look architecturally, and only then it move to implementation that I will review later. This approach is for people who still write code manually.
iOS Job Market (USA)
50 new iOS positions this week (+56% vs last week · +35% vs last month)
Senior / Mid / Junior — 22% / 76% / 2%
Most wanted skills: SwiftUI 58% · UIKit 32% · Combine 18% · MVVM 12%
This week’s picks:
Member of Technical Staff (iOS Engineer, Computer Growth) at Perplexity (San Francisco, CA) — Growth engineering for Perplexity's agentic AI suite (Perplexity, Comet, and Computer) on iOS: end-to-end ownership of install, onboarding, in-app purchase, lifecycle messaging, and retention surfaces, with server-driven and flag-driven experimentation patterns to ship without waiting on release cycles. Salary $220K–$405K → Apply
Software Engineer, iOS/Mobile — Electronic Flight Bag (EFB) at Beacon AI (San Carlos, CA) — SwiftUI + UIKit + Swift Concurrency (async/await) for safety-critical iPad EFB apps: real-time aviation instrument rendering, offline-first architecture, location services, and hardware integration with edge devices handling millions of wind and weather data points in flight → Apply
Weekly Poll
📊 Last Week’s Poll Results
How do you handle reviewing AI-generated pull requests?
Top Answer: I skim and trust the tests/CI
Upcoming Conferences
September
7–11 — Swift Island 2026 (Texel 🇳🇱)
17–18 — NSSpain XIV (Logroño 🇪🇸)
29–2 — MacSysAdmin (Gothenburg 🇸🇪)
October
7–9 — Next.App DevCon 2026 (Berlin 🇩🇪)
12–14 — SwiftLeeds 2026 (Leeds 🇬🇧)
November
2–3 — Swift Connection (Paris 🇫🇷)
10–12 — Do iOS 2026 (Amsterdam 🇳🇱)
19–20 — Swift Bharat (Mumbai 🇮🇳)
20–22 — SwiftSonic 26 (Nashville 🇺🇸)
February 2027
16–18 — ARCTIC Conference (Oulu 🇫🇮)
March 2027
2–4 — try! Swift Tokyo 2027 (Tokyo 🇯🇵)


