The iOS Weekly Brief – Issue #58
Vision Pro is over, URLSession explained from top to bottom, actors vs queues vs locks, and App Store gets a new subscription type
🆕 What’s New
Apple Has Given Up on the Vision Pro After M5 Refresh Flop
The Vision Pro team has been disbanded. According to MacRumors and Mark Gurman, Apple has stopped work on the device and redistributed the team, mostly to Siri. New CEO John Ternus was apparently never a fan of the product and already killed the cheaper Vision Air last year. What’s interesting is that the most common reaction I’ve seen isn’t “the tech is bad” but “I would have bought one at $1,500.” The hardware impressed people, the price didn’t. As for what’s next, I’m actually a Ray-Ban Meta glasses fan, and honestly I’d love to see Apple take a real shot at this form factor. If they get it right, a proper wearable from Apple could be something special.
Now Available: Monthly Subscriptions with a 12-Month Commitment
Apple is adding a new subscription type to the App Store: monthly payments with a 12-month commitment. Users can cancel anytime, but they stay on the hook for the remaining payments until the year is up. It’s a middle ground between monthly and annual pricing, which is actually a pretty useful option if you’re trying to lower the barrier to entry without giving up the annual revenue guarantee. Rolls out with iOS 26.5 in May, everywhere except the US and Singapore for now.
🚀 Releases
📚 Must Read
URLSession to Electrons: How Networking Works on iOS
Jacob Bartlett wrote one of those articles that makes you feel slightly embarrassed you never asked the question before. We call .resume() hundreds of times and just trust that something happens. This piece follows that call all the way down to the physical world, and it’s a good reminder that “URLSession handles it” is just a polite way of saying “I have no idea what’s going on.” Not essential knowledge for shipping apps, but the kind of thing that quietly makes you better at debugging.
Immediate Tasks in Swift Concurrency Explained
Swift 6.2 adds Task.immediate, and this is a good walkthrough of when it actually makes sense to use it. TL;DR: a regular Task gets scheduled to run later, while an immediate task starts right on the caller’s executor before handing control back. It sounds like a small difference but it matters when you care about ordering, like updating actor-isolated state before the rest of your code continues. The main thing to watch out for is overhang. If you put expensive synchronous work inside an immediate task, you’re blocking the caller until the first real suspension point.
Synchronization in Swift: Actors vs Queues vs Locks
A lot of teams I know defaulted to actors for everything once Swift 6 came out. Makes sense, the compiler helps you and the ownership model is clear. But this article does a good job of showing why that’s not always the right call. Locks have lower overhead for small, synchronous operations. Queues give you more control over execution order. Atomics solve a very specific problem and not much else. The part I found most useful is the framing around cognitive load: the lower you go in abstraction, the more you’re responsible for maintaining the contract yourself, and the compiler won’t catch you when you get it wrong.
Concurrency Step-by-Step: Designing Protocols
If you’ve been running into weird compiler errors around protocol conformances in Swift 6, this article is probably why. The core insight is that designing a protocol now means thinking from two sides at once: how the protocol works, and what you’re asking of every type that will conform to it. The default actor isolation setting alone can completely change whether a conformance even compiles. One thing I didn’t think about before reading this: making a protocol requirement async dramatically relaxes the constraints on conforming types, because synchronous members can satisfy async requirements but not the other way around.
🛠️ Toolbox
A macOS app for creating and managing App Store screenshots. Handles device mockups, localization across multiple languages, templates, and direct upload to App Store Connect. If you’ve ever done ASO and had to keep screenshots in sync across 10 localizations in Figma, you know the pain this is trying to solve.
📊 iOS Job Market (USA)
26 new iOS positions this week (-7% vs last week · +8% vs last month) 1
Senior / Mid / Junior — 31% / 69% / 0%
Most wanted skills: SwiftUI 62% · UIKit 35% · MVVM 27%
This week’s picks:
Sr Software Engineer - iOS at PayPal (San Jose, CA) — UIKit + SwiftUI + CoreData + Combine stack with XCTest/Quick-Nimble testing; building payment experiences for hundreds of millions of users across 200 markets → Apply
iOS Engineer at Ibotta (Denver, CO) — Swift + UIKit + SwiftUI + MVVM, one of the top-ranked shopping apps on the App Store with millions of MAUs; unit testing framework ownership + direct feature input → Apply
iOS Developer at Charles Schwab (Southlake, TX) — TDD/ATDD-driven native iOS team building complex trading interfaces and financial visualizations; in-house development with high ownership on a high-visibility platform → Apply
🍬 One More Thing…
When SwiftUI Modifiers Hold onto Memory Longer Than Expected
You pop a screen, expect deinit to fire, and nothing happens. This article looks at exactly that, specifically with onSubmit, searchable, and refreshable inside NavigationStack. Some of it is classic retain cycles in closures, some of it is SwiftUI internal behavior that’s harder to reason about. The fix is usually a weak capture and making sure you’re using the right property wrapper for your view model.
🗳️ Weekly Poll
📊 Last Week’s Poll Results
Have you ever paid for app installs?
Top Answer: No, my app grows organically
🗓 Upcoming Conferences
May
5–27 — Meet with Apple (Global 🌎)
18–20 — Swift Craft 2026 (Folkestone 🇬🇧)
19–21 — MAU Vegas 2026 (Las Vegas 🇺🇸)
June
3–4 — MDevCamp 2026 (Prague 🇨🇿)
7 — Pre-WWDC Bashcade (San Jose 🇺🇸)
July
7–10 — MacAdmins Conference (State College 🇺🇸)
22–23 — Swift Rockies 2026 (Calgary 🇨🇦)
September
7–11 — Swift Island 2026 (Texel 🇳🇱)
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.


