Skip to content
SwiftMind
swifthigh impactReleased 2025-09-15

Swift 6.2 — approachable concurrency

A direct response to how hard Swift 6's strict checking was to adopt. Most of this release is about letting single-threaded code stay single-threaded without fighting the compiler, so you opt into parallelism rather than out of it.

changed

Modules can default to main-actor isolation

A build setting lets a whole module be implicitly @MainActor. For UI code — which is already main-thread-bound — this removes most of the annotation churn that Swift 6 introduced, because the isolation you already had is now the default rather than something you restate on every type.

What to do

Turn it on per target for app and UI modules. Leave it off for shared model or networking modules, where isolation should stay explicit.

new

@concurrent marks the functions that actually leave the actor

Async functions no longer imply that they hop off the current actor. A function stays where it was called unless it is marked @concurrent, which makes the escape to a background thread visible at the declaration rather than inferred from context.

What to do

Mark genuinely parallel work @concurrent. If an async function only awaits other async work, it probably does not need it.

changed

Fewer Sendable annotations required

Improved inference means a great deal of code that Swift 6.0 demanded be annotated now checks out on its own. The underlying data-race rules did not loosen — the compiler simply got better at proving what you already meant.