what is suggested for swift concurrency migration
Asked on 06/11/2025
1 search
For migrating to Swift concurrency, Apple suggests several strategies and settings to help with the transition:
-
Approachable Concurrency Setting: It is recommended to enable the "Approachable Concurrency" setting in your app's build settings. This setting introduces features that make it easier to work with concurrency, especially for projects that interact primarily with the UI. For such projects, setting the default actor isolation to
mainactor
is advised, which ensures that code runs on the main actor unless specified otherwise. This helps in making single-threaded apps easier to write and provides a more approachable path to introducing concurrency when needed. -
Swift 6 Migration Tooling: Swift 6.2 includes migration tooling to help automate necessary code changes for concurrency. This tooling can be found under the Swift Compiler Concurrency section of Xcode Build Settings and can also be enabled in a Swift package manifest file using the Swift Settings API.
-
Data Race Safety: Enabling strict checking in a target's build settings opts the entire module into being checked for possible race conditions. This is particularly useful for improving app quality by catching mistakes in concurrent code at compile time. It is recommended to start with enabling complete checking on simpler parts of the app, like the UI layer, which often runs on the main thread.
-
Incremental Migration: It is advised to resist the temptation to blend significant refactoring with enabling data race safety. Instead, focus on one at a time to avoid overwhelming changes. Start with enabling complete checking and then proceed to refactor the app as needed.
-
Community Involvement: Apple encourages developers to participate in the Swift community, such as on forums at swift.org, to help shape the future of Swift and provide feedback on concurrency improvements.
For more detailed guidance, you can refer to the session Embracing Swift concurrency and Migrate your app to Swift 6.

Embracing Swift concurrency
Join us to learn the core Swift concurrency concepts. Concurrency helps you improve app responsiveness and performance, and Swift is designed to make asynchronous and concurrent code easier to write correctly. We’ll cover the steps you need to take an app through from single-threaded to concurrent. We’ll also help you determine how and when to make the best use of Swift concurrency features – whether it’s making your code more asynchronous, moving it to the background, or sharing data across concurrent tasks.

What’s new in Swift
Join us for an update on Swift. We’ll talk about workflow improvements that make you more productive, and new and modernized library APIs for fundamental programming tasks. We’ll show examples of Swift adoption throughout more layers of the software stack. Finally, we’ll explore new language features for both improving approachability of concurrency, and achieving peak performance when you need it.

Migrate your app to Swift 6
Experience Swift 6 migration in action as we update an existing sample app. Learn how to migrate incrementally, module by module, and how the compiler helps you identify code that’s at risk of data races. Discover different techniques for ensuring clear isolation boundaries and eliminating concurrent access to shared mutable state.