Get started with Swift concurrency

Swift offers built-in support for asynchronous and concurrent code to help you optimize parallelization of tasks — especially on machines with more cores. With Swift concurrency, you can ensure small tasks that require UI updates can be prioritized while longer tasks continue in the background. Discover how you can started with Swift concurrency, debug your tasks and actors, explore the latest tools, and much more. We’ll also show you how you can optimize the execution of asynchronous and parallel tasks when using Swift concurrency without interacting directly with threads.

Get started

Meet async/await in Swift

Swift now supports asynchronous functions — a pattern commonly known as async/await. Discover how the new syntax can make your code easier to read and understand. Learn what happens when a function suspends, and find out how to adapt existing completion handlers to asynchronous functions.

Watch now

Discover concurrency in SwiftUI

Discover how you can use Swift’s concurrency features to build even better SwiftUI apps. We’ll show you how concurrent workflows interact with your ObservableObjects, and explore how you can use them directly in your SwiftUI views and models. Find out how to use await to make your app run...

Watch now

Use async/await with URLSession

Discover how you can adopt Swift concurrency in URLSession using async/await and AsyncSequence, and how you can apply Swift concurrency concepts to improve your networking code.

Watch now

Meet AsyncSequence

Iterating over a sequence of values over time is now as easy as writing a “for” loop. Find out how the new AsyncSequence protocol enables a natural, simple syntax for iterating over anything from notifications to bytes being streamed from a server. We'll also show you how to adapt existing code...

Watch now

Meet distributed actors in Swift

Discover distributed actors — an extension of Swift’s actor model that simplifies development of distributed systems. We'll explore how distributed actor isolation and location transparency can help you avoid the accidental complexity of networking, serialization, and other transport concerns...

Watch now

Visualize and optimize Swift concurrency

Learn how you can optimize your app with the Swift Concurrency template in Instruments. We'll discuss common performance issues and show you how to use Instruments to find and resolve these problems. Learn how you can keep your UI responsive, maximize parallel performance, and analyze Swift...

Watch now

Meet Swift Async Algorithms

Discover the latest open source Swift package from Apple: Swift Async Algorithms. We'll explore algorithms from this package that you can use with AsyncSequence, including zip, merge, and throttle. Follow along with us as we use these algorithms to build a great messaging app. We'll also share best...

Watch now

The Swift Programming Language: Concurrency

Best Practices

Swift concurrency: Update a sample app

Discover Swift concurrency in action: Follow along as we update an existing sample app. Get real-world experience with async/await, actors, and continuations. We’ll also explore techniques for migrating existing code to Swift concurrency over time. To get the most out of this code-along, we...

Watch now

Swift concurrency: Behind the scenes

Dive into the details of Swift concurrency and discover how Swift provides greater safety from data races and thread explosion while simultaneously improving performance. We’ll explore how Swift tasks differ from Grand Central Dispatch, how the new cooperative threading model works, and how to...

Watch now

Protect mutable state with Swift actors

Data races occur when two separate threads concurrently access the same mutable state. They are trivial to construct, but are notoriously hard to debug. Discover how you can stop these data races in their tracks with Swift actors, which help synchronize access to data in your code. Discover how...

Watch now

Explore structured concurrency in Swift

When you have code that needs to run at the same time as other code, it’s important to choose the right tool for the job. We'll take you through the different kinds of concurrent tasks you can create in Swift, show you how to create groups of tasks, and find out how to cancel tasks in progress....

Watch now

Eliminate data races using Swift Concurrency

Join us as we explore one of the core concepts in Swift concurrency: isolation of tasks and actors. We'll take you through Swift’s approach to eliminating data races and its effect on app architecture. We'll also discuss the importance of atomicity in your code, share the nuances of Sendable...

Watch now

Updating an App to Use Swift Concurrency