Sometimes setting "default actor isolation" to "main actor" setting still treats a type as non-isolated
18:01 26 May 2026

I have set default actor isolation to main actor for my 2 libraries: LibApp and LibGame.

In LibApp, I have:

public protocol PluginTheme {}

Then in LibGame, which depends on LibApp:

public protocol GamePluginTheme: PluginTheme
public struct BasicGamePluginTheme: GamePluginTheme {
  // ... 
}

This gives me warning:

Conformance of 'BasicGamePluginTheme' to protocol 'GamePluginTheme' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode

However, if I add @MainActor to PluginTheme, the warning is gone. This is very confusing, I have set the default actor isolation to main, why is it still non-isolated?

ios swift