The iOS Weekly Brief – Issue #62
Subscription retention data, SwiftUI List animations, Swift Concurrency ownership, Keychain basics, and WWDC watchlist ahead of Monday
🆕 What’s New
95% of canceled annual app subscribers never come back
RevenueCat published part two of their State of Subscription Apps 2026 report, and the retention numbers are exactly what you'd expect from anyone who's ever immediately cancelled a free trial just to not forget. Turns out 95% of annual subscribers who cancel never come back, which honestly makes sense: if someone decided to leave, they've already found a workaround or just decided they don't need it.
🚀 Releases
The beta versions of iOS 26.6, iPadOS 26.6, macOS 26.6, tvOS 26.6, visionOS 26.6, and watchOS 26.6 are now available.
📚 Must Read
Taming Row Height and Spacing Jumps in SwiftUI List with a Custom Layout
Fatbobman dug into one of those SwiftUI List quirks that looks like a simple animation bug until you realize the whole layout model is working against you. Row height jumps aren't a missing .animation() call. List just doesn't interpolate height changes, and no transition modifier fixes that. The fix is a custom layout that separates what the parent sees from what the child renders, all with pure SwiftUI primitives.
Swift Defer. Clean up before you leave.
defer is one of those Swift keywords you forget exists until you ship a bug where a temp file never gets deleted or a completion handler never gets called. Placing cleanup code right next to setup code isn't just cleaner, it's safer.
Swift Task Lifecycle Management
The mental shift here is worth pausing on: older concurrency models asked "how do I run work concurrently," Swift Concurrency asks "who owns this work." That reframe explains why Task.detached feels wrong in most situations even when it technically compiles fine, and why .task in SwiftUI is not just a convenience wrapper but a design decision.
Working with the Keychain in iOS
This is a clean walkthrough of the Keychain Services API covering all four operations you need, with enough context to understand the query dictionary structure before you wrap it in your own abstraction.
📹 Video
Using Xcode Instruments to optimize Swift Concurrency Code
Antoine walked through a real performance problem, a wallpaper generator that blocked the main thread for nearly 2 seconds, and fixed it step by step using the Swift Concurrency template in Xcode Instruments. The interesting part is not the fix itself but the workflow: profile first, then optimize, then verify with data instead of trusting your eyes in the simulator.
🛠️ Toolbox
Making a SwiftUI sheet automatically size to fit its content
SwiftUI still has no native way to size a sheet to its content, so this is a pattern you end up writing yourself eventually. The solution is straightforward: observe the content height with onGeometryChange and feed it back as a .height detent.
📊 iOS Job Market (USA)
36 new iOS positions this week (+33% vs last week · +38% vs last month) 1
Senior / Mid / Junior — 33% / 67% / 0%
Most wanted skills: SwiftUI 50% · UIKit 31% · MVVM 19% · Core Data 14%
This week’s picks:
iOS Engineer, ChatGPT Mobile Infrastructure at OpenAI (New York, NY) — Building the core Swift platform (Bazel, Swift Concurrency, SwiftUI, state management, performance + CI) that enables hundreds of engineers to ship features across ChatGPT, Atlas, and Sora; Staff+ level with a focus on on-device observability, build tooling, and AI developer productivity. $185K–$385K → Apply
Staff, Software Engineer, iOS at Walmart (Sunnyvale, CA) — SwiftUI + Combine stack with a focus on AI-integrated, edge-computed features powering the Walmart+ membership experience for hundreds of millions of shoppers; Staff-level role shaping the mobile architecture roadmap and mentoring senior talent → Apply
🍬 One More Thing…
Matt Massicotte put together his WWDC watchlist, and the most interesting part is that he expects most of it to go nowhere 😅
🗳️ Weekly Poll
📊 Last Week’s Poll Results
What do you use for feature flags in your iOS app?
Top Answer: I don’t use feature flags
🗓 Upcoming Conferences
June
3–4 — MDevCamp 2026 (Prague 🇨🇿)
7 — Pre-WWDC Bashcade (San Jose 🇺🇸)
8–12 — Envision WWDC26 (Online 🌎)
July
7–10 — MacAdmins Conference (State College 🇺🇸)
22–23 — Swift Rockies 2026 (Calgary 🇨🇦)
25–26 — iPlayground 2026 (Taipei 🇹🇼)
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 🇳🇱)
20–22 — SwiftSonic 26 (Nashville 🇺🇸)
👋 That’s it for this week
If you enjoyed this issue of The iOS Weekly Brief, consider forwarding it to a colleague!
Until next Friday — keep shipping 🍏
Counted as iOS positions: roles with “iOS” in the title that require writing code in Swift.


