SwiftLee Weekly - Issue 279


This week's SwiftLee Weekly covers:

  • Vibe coding in Xcode 26
  • Extensible enums in Swift
  • Designing UI with Liquid Glass

Enjoy this week's SwiftLee Weekly!

THIS WEEK'S BLOG POST

Swift Concurrency & Swift 6 Course (Launch offer)

After starting in March, I'm happy to announce the first completion of all 11 modules in my Swift Concurrency Course! You now have access to:

  • 58 lessons
  • 10 assessments
  • 11 modules

The final module has been great fun—it's been a result of migrating several packages to Swift 6 & Swift Concurrency. All my learnings are boiled down into individual lessons, covering:

  • Swift's official migration tooling
  • Migration habits
  • From Combine/RxSwift to Swift Concurrency

You can read more about the course in this week's article. This is also your opportunity to benefit from a reduced price launch offer:

SPONSORED

Paywalls Made Easy – Superwall

Huge apps like PhotoRoom, Mojo & Citizen use Superwall to build paywalls, run price tests and more — all without shipping app updates. Learn how.

CURATED FROM THE COMMUNITY

Vibe coding in Xcode 26: is it good?

Vibe coding is hot, but how does it work in Xcode 26? Vincent Pradeilles decided to give it a try and shares his thoughts.
swiftwithvincent.com

The Anatomy of a LiquidGlass Button in iOS 26

How do you convert a regular button into a LiquidGlass button? You might have seen the APIs for it by now, but do you also know how to make a circle button?
natashatherobot.com

Schedule a countdown timer with AlarmKit

AlarmKit is one of the new frameworks announced at WWDC 2025. Natalia Panferova shares how it works and how you can implement it in your apps.
nilcoalescing.com

Finding my Way

Many apps (if not all) require a redesign for the new OS versions. David Smith takes you through redesigning one of the core screens of his app.
david-smith.org

Designing custom UI with Liquid Glass on iOS 26

If you’ve built custom UI components, you might have started to worry after seeing Liquid Glass popping up everywhere. However, Donny Wals shows that there’s hope after applying Liquid Glass to one of his custom UI elements.
donnywals.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

Performance improvements and package restructuring

After completing the first major version of my concurrency course, I started to fully focus on the future of RocketSim. We are planning to make RocketSim's features more accessible by command line tools, AI tools, shortcuts, and more.

Up until now, it was only RocketSim's User Interface that interacted with RocketSim actions. The project is currently not set up for more flexibility.

On top of that, we're actively migrating to Swift 6 and strict concurrency. Altogether, it's been time to take a step back and redesign the current structure of packages.

Over time, it's easy to add more and more responsibilities to existing packages. We have a so-called RocketSimCore package, which is an easy destination for anything. In my experience, packages with more responsibilities are less performant and have a lower test coverage.

I can explain the latter differently—by moving code into specific packages, we create new isolation and an opportunity for better test coverage and performance improvements.

One example for RocketSim is the logic for monitoring new Simulator builds. This is all contained with RocketSimCore right now, but it makes more sense to create a RocketSimRecentBuildMonitoring package. Within that isolation, I've already applied several performance improvements after writing a bunch of tests.

Extra benefit?

The new package allows for rewriting to Swift Testing and creates a focused environment for the Swift Concurrency migration.

EARN ROCKETSIM LIFETIME

Share and Earn RocketSim Lifetime & a 1-on-1 coaching session

Apple has recognized RocketSim as an Essential Developer Tool in the Mac App Store, and now you can get lifetime Pro access by sharing your unique referral link!

How to get started:

[RH_REFLINK GOES HERE]

Rewards:

  • Earn your first reward after just 3 sign-ups!
  • Check your progress anytime using your referral dashboard.
  • The grand prize? A personalized 1-on-1 career coaching session!

Several subscribers have already claimed their rewards—will you be next?

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

Antoine

SwiftLee Weekly by Antoine van der Lee

A new SwiftLee article, code snippet, Swift Evolution updates, 5 top community articles, and a weekly answer to a question from the community to level up your Swift skills.

Read more from SwiftLee Weekly by Antoine van der Lee

This week's SwiftLee Weekly covers: A threading risk for Combine & Swift Concurrency Flux pattern in Swift A crash debugging experience Enjoy this week's SwiftLee Weekly! THIS WEEK'S BLOG POST Combine and Swift Concurrency: A threading risk Migrating to Swift Concurrency brings all kinds of insights. Last week, I found an unexpected crash in RocketSim, caused by a Combine pipeline. It resulted in some crucial insights for those using Combine with Swift Concurrency. SPONSORED Fastlane...

This week's SwiftLee Weekly covers: Snapshot testing and CI A hidden Xcode 26 AI prompt 10 + 1 tips on using Claude Code Enjoy this week's SwiftLee Weekly! THIS WEEK'S BLOG POST Threads vs. Tasks in Swift Concurrency Switching to Swift Concurrency if you've worked for years with GCD might make you struggle getting rid of the 'threading-mindset'. Tasks still result in work being done on different threads, but we don't directly manage them anymore. This article is an essential piece of learning...

This week's SwiftLee Weekly covers: @Animatable in SwiftUI Preparing for the future of App Development 6 Mistakes that slow down development Enjoy this week's SwiftLee Weekly! THIS WEEK'S BLOG POST Modern Swift Lock: Mutex & the Synchronization Framework While actors work great in Swift Concurrency, they're not always the best choice. You might not want to introduce the overhead of async/await in some cases, in which a Mutex with Sendable support can be a way out. SPONSORED Transform Your...