<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.15.0 -",
    "tvOS: 13.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 6.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Swift",
  "identifier" : "/documentation/Swift/MainActor/sharedUnownedExecutor",
  "metadataVersion" : "0.1.0",
  "role" : "Type Property",
  "symbol" : {
    "kind" : "Type Property",
    "modules" : [
      "Swift"
    ],
    "preciseIdentifier" : "s:ScM21sharedUnownedExecutorScevpZ"
  },
  "title" : "sharedUnownedExecutor"
}
-->

# sharedUnownedExecutor

Shorthand for referring to the `shared.unownedExecutor` of this global actor.

```
static var sharedUnownedExecutor: UnownedSerialExecutor { get }
```

## Discussion

When declaring a global actor with a custom executor, prefer to implement
the underlying actor’s [`unownedExecutor`](/documentation/Swift/Actor/unownedExecutor) property, and leave this
`sharedUnownedExecutor` default implementation in-place as it will simply
delegate to the `shared.unownedExecutor`.

The value of this property must be equivalent to `shared.unownedExecutor`,
as it may be used by the Swift concurrency runtime or explicit user code with
that assumption in mind.

Returning different executors for different invocations of this computed
property is also illegal, as it could lead to inconsistent synchronization
of the underlying actor.

> SeeAlso: ``doc://com.apple.Swift/documentation/Swift/SerialExecutor``

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)