Articles Projects About Subscribe
← All issues Newsletter

iOS Dev Weekly — Issue #45

Opening

visionOS shipped the dream; teams are now debugging the seams. The rough edges aren’t in buttons or gestures—they’re where window stacks, immersive spaces, and restoration timelines cross streams. This week is about getting navigation under control so your app behaves the same on the tenth launch as it did on the first.


This Week’s Big Story

NavigationStack Patterns for visionOS

Spatial navigation in visionOS looks effortless until 2D windows, 3D spaces, and scene timing fall out of sync. When focus shifts, spaces open or dismiss, and restoration replays, the weakest link is state, not buttons. Treat routes as data and coordinate lifecycles so transitions become deterministic rather than emergent.


Trend Signals

• Apple Foundation Models docs are making the rounds; early signals suggest teams are testing the waters while waiting on clearer first‑party story and tooling. [Source: HackerNews]

• Apple detailing a migration of the TrueType hinting interpreter to Swift is a confidence boost for performance‑critical Swift in system components. [Source: Swift.org Blog]

• A personal WWDC26 community write‑up underscores the persistent value of the social graph around Cupertino, not just the sessions. [Source: Medium]

• Another WWDC26 recap emphasizes hallway‑track takeaways that quietly shape team roadmaps more than keynote headlines. [Source: Medium]

• Bold claims about Swift’s future are circulating; it’s a reminder to separate signal from hype and look for code, not slogans. [Source: Medium]


Swift Snippet of the Week

import SwiftUI
import Observation

enum Route: Hashable, Codable {
    case list
    case detail(id: UUID)
}

@MainActor @Observable final class Router {
    var path: [Route] = []
    private var immersiveID: String? = nil

    func set(
        routes: [Route],
        immersive: String?,
        open: @escaping (String) async -> Void,
        close: @escaping () async -> Void
    ) async {
        if immersiveID != immersive {
            if let id = immersive {
                immersiveID = id
                await open(id)
            } else {
                immersiveID = nil
                await close()
// … (truncated for newsletter)

This central Router pattern encodes a single source of truth for routes and serializes immersive space transitions, which is the practical difference between deterministic navigation and a stack that drifts under restoration, deep links, and focus changes.


Community Picks

Apple Foundation Models — Worth a skim to understand the surface area people are experimenting with, even if your team isn’t integrating yet.

4년의 WWDC동안 78명이 거쳐간 쿠퍼티노 한인타운. — A human snapshot of WWDC that reminds us why in‑person networks still matter for shipping software.

The Hitchhiker’s Guide to Cupertino — A WWDC26 Recap — A practical recap you can mine for session priorities and follow‑up threads with your team.


Until Next Time

If visionOS navigation has surprised you in production, this week’s piece should give you a cleaner mental model and a safer implementation path. Read the full article and then tell me where your stack still fights you—hit reply, or forward this to a teammate who owns navigation. I’ll be comparing notes in the LinkedIn discussion too; let me know what you think and what you want covered next.