#MainActor
A very common (but understandable) mistake I see people make all the time is start with a non-isolated, non-Sendable type and then selectively add MainActor to functions/properties. This is almost never what you want to do. MainActor the whole type, and then selectively remove if needed. #SwiftLang
November 16, 2024 at 3:37 PM
The vision for improving approachability of #SwiftLang data-race safety is coming to life!

Async functions run on the caller’s actor by default: forums.swift.org/t/se-0461-ru...

A mode to infer MainActor by default: forums.swift.org/t/pitch-cont...
February 21, 2025 at 2:04 AM
Had an interesting discussion with @danielsaidi.bsky.social about protocol isolation. Extensions that also need MainActor push you in one direction, but it's still a trade-off. Both options can make sense.

Would have been a documentation problem before, but is now a type system problem.
May 20, 2026 at 11:39 AM
突然ですが久々に明日の夜にSwiftConcurrencyの解説をDiscordでやります
どこも登壇させてくれそうにないから自分でやるスタイル!
20時から!

ios-torikoboshi.connpass.com/event/407847/
みんなのもやもやを吹き飛ばす Swift Concurrency (2026/09/25 20:00〜)
# みんなのもやもやを吹き飛ばす Swift Concurrency 「async/await は書けるけど、Sendable のエラーがよく分からない」 「actor と MainActor の違いをうまく説明できない」 「とりあえず @MainActor を付けたらビルドが通った……」 そんなもやもやを、図を使いながらほどいていく勉強会です。 ## この勉強会で話すこと Swift C...
ios-torikoboshi.connpass.com
September 24, 2026 at 1:55 PM
XCTest Meets @MainActor: How to Fix Strict Concurrency Warnings qualitycoding.org/xctest-maina...
XCTest Meets @MainActor: How to Fix Strict Concurrency Warnings
Discover how Swift 6's @MainActor isolation impacts XCTest, with tips on handling concurrency warnings for view controller testing.
qualitycoding.org
November 30, 2024 at 8:01 PM
MainActor the whole app.
November 16, 2024 at 4:40 PM
I've been thinking about this one for a long time. There is subtly here, but I tried my best to keep it short. I don't think you should use MainActor as the default isolation.

www.massicotte.org/blog/mainact...
MainActor by Default
It's enabled for new projects, but I wouldn't recommend it.
www.massicotte.org
November 20, 2025 at 7:57 PM
Learning why you need to use @.MainActor is much easier than learning why you need to use nonisolated.
November 11, 2025 at 12:19 PM
Xcodeに怒られないためだけにFixをぽちぽちとSendableや@MainActorをつけていたのですが、データ競合をどうすると防げるのかがわかりやすく勉強になりました

クイズ形式でダメなパターンの理解が深まり、これからはXcodeに怒られなくて済みそうです

ありがとうございました🙇‍♀️
September 25, 2026 at 12:14 PM
On new Xcode projects, am I crazy for changing "Default Actor Isolation" from MainActor to nonisolated?
Because that is what I do.
April 14, 2026 at 2:39 PM
I have been rehearsing and I just cannot remember to say this. So here’s a spoiler from my talk in case I forget again:

“Approachable Concurrency” is just a big group of settings. It is completely independent of making the default isolation MainActor.
October 1, 2025 at 4:50 PM
Found a distressing bug today (Swift 6.3.2 affected, verified fixed on main).

It seems the isolation of a default-MainActor function is not enforced outside its defining module, even in 6 mode. It seems pretty rare to have non-leaf default MainActor modules. But if you do, extreme care is required.
May 30, 2026 at 11:25 AM
I’m back with experimenting in Swift. Trying to figure out how to use Tasks as an alternative to C coroutines. The whole @MainActor malarkey is not simple #gamedev
September 21, 2025 at 10:03 PM
@siracusa.social loving the most recent Nuggets of Wisdom member special.

But wait!! Approachable concurrency != MainActor by default!

(I happen to also disagree that MainActor is best way to enforce main thread only execution but that is another discussion)
April 22, 2026 at 1:46 PM
Xcode 23 defaults to Swift 5 language mode, with MainActor default isolation. Interesting... #WWDC
June 11, 2025 at 5:27 PM
Transitioned my little #SwiftUI app over to Swift 6 this afternoon. It was… fine?

But it’s a new codebase (started earlier this year), still really small, and 99% on MainActor anyway.
November 30, 2024 at 6:26 PM
🚀 𝘔𝘢𝘪𝘯𝘈𝘤𝘵𝘰𝘳 𝘣𝘺 𝘋𝘦𝘧𝘢𝘶𝘭𝘵 by Matt Massicotte (@massicotte.org)

Swift 6.2's 𝘔𝘢𝘪𝘯𝘈𝘤𝘵𝘰𝘳 isolation isn't just about adding it - understanding when to remove it is the real challenge.

#Swift #Concurrency #BestPractices

massicotte.org/blog/mainact...
MainActor by Default
It's enabled for new projects, but I wouldn't recommend it.
massicotte.org
December 2, 2025 at 2:02 PM
Today i made a mistake of setting Task on MainActor and executing another statement on main dependent on the result from the Task. it didn't work because wrapping it in await MainActor.run or Task { @MainActor in } doesn't run it immediately but schedules it. I had read this, but in practice..
February 26, 2026 at 5:00 AM
Mark it @MainActor?
April 17, 2025 at 2:06 PM
I going to say basically never. View state is by definition MainActor stuff, and your state will have to be isolated there.
Should your “thing that holds view state” (view model, data store, etc) be an actor? Specifically thinking in a SwiftUI context but not sure it matters to the question.
November 12, 2024 at 10:05 AM
I updated Fucking Approachable Swift Concurrency based on feedback! Now covers Swift 6.2's Approachable Concurrency improvements, including @concurrent and the simplified MainActor-by-default model.

https://fuckingapproacha...
December 26, 2025 at 11:33 AM
Discover how Swift 6's MainActor isolation impacts XCTest, with tips on handling concurrency warnings for view controller testing. https://qualitycoding.org/xctest-mainactor/
XCTest Meets @MainActor: How to Fix Strict Concurrency Warnings
Discover how Swift 6's @MainActor isolation impacts XCTest, with tips on handling concurrency warnings for view controller testing.
qualitycoding.org
July 8, 2026 at 5:58 PM
`Task { }` doesn't move work off the main thread. It inherits the actor context. In SwiftUI that's @ MainActor.

In Xcode 26, `nonisolated async` doesn't either: it runs on the caller's actor.

Want off? Mark it `@ concurrent`.
August 5, 2026 at 7:00 AM