• Delaying an asynchronous Swift Task

    Most often, we want our various asynchronous tasks to start as soon as possible after they’ve been created, but sometimes we might want to add a slight delay to their execution — perhaps in order to give another task time to complete first, or to add some form of “debouncing” behavior. Although there’s no direct,…

    Read More

  • New Discover page: Concurrency

    Explore Swift’s built-in concurrency system, and how to use tools like async/await and actors to write concurrent code in robust and efficient ways. → Check it out

    Read More

  • Podcast: “Custom rendering”, with special guest James Thomson

    James Thomson returns to the show to discuss the various technologies that enable us to render custom UIs on Apple’s platforms. From rendering views using Core Graphics and Core Animation, to building completely custom 3D-based UIs using SceneKit and RealityKit. Sponsors MacStadium: The leading provider of cloud solutions built on real Mac hardware. Get started…

    Read More

  • Building an asynchronous SwiftUI button

    When building modern applications, it’s incredibly common to want to trigger some form of asynchronous action in response to a UI event. For example, within the following SwiftUI-based PhotoView, we’re using a Task to trigger an asynchronous onLike action whenever the user tapped that view’s button: struct PhotoView: View { var photo: Photo var onLike:…

    Read More

  • Podcast: “The 2021 Season Finale”

    To wrap up the 2021 season of the show, John revisits some of the key themes and topics that were discussed both on the show itself, and within the Swift community in general, throughout the year. Sponsors Bitrise: Rock-solid continuous integration for your Swift project, which now offers 50% faster builds and ad-ons for things…

    Read More

  • Unit testing Swift code that uses async/await

    Writing robust and predictable unit tests for asynchronous code has always been particularly challenging, given that each test method is executed completely serially, line by line (at least when using XCTest). So when using patterns like completion handlers, delegates, or even Combine, we’d always have to find our way back to our synchronous testing context…

    Read More

  • Podcast: “Code maintenance”, with special guest Nick Lockwood

    Nick Lockwood joins John for a discussion about maintaining Swift code bases — from open source projects, to ones worked on by teams of various sizes. Also, the design of ShapeScript, using async/await within unit tests, and much more. Sponsors RevenueCat: In-app subscriptions made easy. RevenueCat handles the pain points of implementing subscriptions and in-app…

    Read More

  • What role do Tasks play within Swift’s concurrency system?

    When writing asynchronous code using Swift’s new built-in concurrency system, creating a Task gives us access to a new asynchronous context, in which we’re free to call async-marked APIs, and to perform work in the background. But besides enabling us to encapsulate a piece of asynchronous code, the Task type also lets us control the…

    Read More

  • Podcast: “Concurrency beyond app development”, with special guest Tim Condon

    Tim Condon joins John to discuss how both client and server-side Swift developers could utilize the new built-in concurrency system, as well as how distributed actors and other upcoming language features might continue to make Swift even more capable on the server. Sponsors MacStadium: The leading provider of cloud solutions built on real Mac hardware.…

    Read More