Black Friday 2025: Once-a-year RocketSim & SwiftLee Courses discounts. Learn more.
BF: Click for once-a-year discounts.
Give your simulator superpowers

RocketSim: An Essential Developer Tool
as recommended by Apple

Issue 298
Nov 18, 2025

This week's SwiftLee Weekly covers:

  • Approachable Concurrency
  • Xcode Instruments & suspension points
  • Two defeated conference challenges

Enjoy this week's SwiftLee Weekly!

Next week, I'm dropping my Black Friday sales. Click here if you want to receive the deals this monday in your inbox.

THIS WEEK'S BLOG POST

Approachable Concurrency in Swift 6.2: A Clear Guide

After giving my talk at Do iOS and Pragma Conf, it's time to give you the same learnings in both an article and video. Approachable Concurrency is not just a term, it's what makes Swift Concurrency finally adoptable. If you've been holding back on migrating to Swift 6: You no longer have to.

video preview

p.s. Yes, I'm an official YouTuber now. I've sold my soul to generate these full-of-emotion thumbnails. But hey, it works: the stats of my videos jumped up and I've reached 1K subscribers! Will you join as well?

SPONSORED

Try Clerk for Swift

Drop in Clerk’s prebuilt SwiftUI views for sign-in, sign-up, and user profiles. Production-ready authentication out of the box, so you can focus on building your app’s core features. Learn more.

CURATED FROM THE COMMUNITY

Deep Dive into iMessage - Behind the Making of an Agent

What if you wanted to build the APIs Apple never gave us for iMessage? You’d have to dodge macOS sandbox restrictions… and somehow still make it work. That’s exactly what LingJueYa pulled off — explained in this Fatbobmanarticle.
fatbobman.com

How to Build Scalable White-Label iOS Apps: From Multi-Target to Modular Architecture ‣ Swift and Memes

This article by Pawel Kozielecki shows how to escape the pain of multi-target white-label apps by moving to a modular, configuration-driven architecture. If you’re building for multiple clients, this approach dramatically cuts complexity and scales far better.
swiftandmemes.com

Building Peer-to-Peer Sessions: Advertising and Browsing Devices

If you’ve ever wondered how apps seamlessly find and connect to nearby devices, this article by Create with Swiftbreaks it down step by step. A clean explanation of advertising, browsing, and establishing peer-to-peer sessions in Swift.
createwithswift.com

Task Identity in SwiftUI & Swift Concurrency

Chris Eidhof gives a great explanation of how Task identity works in SwiftUI and why views sometimes restart tasks unexpectedly. If you’ve ever been surprised by task behavior during state changes, this one clears it up.
chris.eidhof.nl

Why Speak at Conferences and How to Get Started

Henk breaks down how conference speaking opens doors you didn’t even know existed—professionally and personally. It’s a great reminder that sharing your work publicly creates opportunities you can’t predict. As a frequent speaker myself, I can only fully agree with her!
danijelavrzan.com

Generating images in Swift using Image Playground

Did you know you can generate images on the fly using Swift? Majid Jabrayilov explains how it works.
swiftwithmajid.com

SWIFT EVOLUTION

An overview of last week's Swift Proposal state changes. Check them out when they're in review, as it's your opportunity to influence the direction of Swift's future.

WHAT I'M WORKING ON

Do iOS Conference & Xcode Instruments

Last week, I've had an incredible time at the Do iOS Conference in Amsterdam. With many great speakers and fantastic conversations with many of the attendees, it's been a blast once again.

I got challenged twice during the conference:

  • The Soundcloud asked me for permission resetting functionality for Xcode's Simulator. Challenge defeated, it's coming into the next version of RocketSim.
  • Mustafa and Hidde told me they're not using RocketSim's recording feature because they dislike the Simulator bezels. So I got Apple's device assets and worked on improving this. Also, available in the next version, high quality device bezels:

This is just an image with a white background — imagine using a gradient background or capturing recordings with touches. Next level reached, challenged defeated!

New to RocketSim? Check out www.rocketsim.app

It's not only others that challenge me, it's also me that challenges me. For my Concurrency Course, I want to complete the performance module before the end of the week. After completing the first lesson that dives deep into Xcode Instruments for Concurrency, I thought I had achieved the best performance yet.

Turned out, after diving deeper into suspension points, it was not. A line without code was causing a long suspension.

You're reading that right:

  1. I created a Task { ... }
  2. The first line was an await into another isolation domain

Since the task at step 1 started on the @MainActor, the code suspended just as long until the main actor got space to continue. Eventually, the task started, but immediately reached step 2. In other words — we've waited for @MainActor access just to start the task.

You can see it in the image below:

Although both timelines may look similar at first glance, the narrative data reveals clear performance improvements in the after version. We removed an initial suspension of 68.44 ms, and the task creation time dropped from 45.5 ms to 1.05 ms—a reduction of ~98%.

We still incur a final suspension when returning to @MainActor, but this remaining 38.16 ms is significantly lower than the total suspension time in the before version.

For those on the course: these lessons are now available. For all others: a Black Friday deal is coming next week. Simply click here and I'll make sure you get an email as soon as the deal becomes available!

UNTIL NEXT TIME

Continue your Swift development journey

I hope you've enjoyed this week's content. You don't have to wait till next Tuesday for more insights, I share every day on these channels:

{% if subscriber.rh_reflink != blank %}Or earn lifetime access to RocketSim & my Swift Concurrency Course by becoming an affiliate of my newsletter.{% endif %}

Thank you so much for your support, and until next Tuesday,

Antoine