SwiftLee Weekly - Issue 298


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:

Or earn lifetime access to RocketSim & my Swift Concurrency Course by becoming an affiliate of my newsletter.

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

Antoine

SwiftLee Weekly by Antoine van der Lee

Swift Evolution updates, 5 top community articles covering Swift development topics.

Read more from SwiftLee Weekly by Antoine van der Lee

This week's SwiftLee Weekly covers: Copycat apps and App Store Guidelines Getting your talk accepted at conferences AI-power App Metric Insights Enjoy this week's SwiftLee Weekly! THIS WEEK'S BLOG POST Battery life on iOS and the impact of killing apps You've probably been annoyed by it a lot: iOS users that swipe up and kill all their running apps. I've decided to clear this up once and for all and make it clear that it doesn't necessarily improve your battery life. If needed, you can also...

This week's SwiftLee Weekly covers: Teaching AI to read Xcode builds The Transferable protocol Swift Package Scripts Enjoy this week's SwiftLee Weekly! THIS WEEK'S BLOG POST The 7 changes I do for every new Xcode project I bet you recognize: you start a new project, and you immediately apply a few changes. It's at least what I like to do and I decided to capture that process and share it with you. SPONSORED Full iOS coverage. Fast If your test suite is missing critical flows or isn’t up to...

This week's SwiftLee Weekly covers: Black Friday discounts Using @Observable with UIKit A SwiftData change you might not have noticed Enjoy this week's SwiftLee Weekly! THIS WEEK'S BLOG POST Black Friday: SwiftLee Courses & RocketSim It's that time of year where many products provide Black Friday discounts! Call it cyber week, cyber-something, but I've joined the trend and share the discounts for RocketSim and my courses. SPONSORED iOS auth eating your time? Clerk’s SwiftUI SDK drops sign-in,...