<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "GroupActivities",
  "identifier" : "/documentation/GroupActivities/SystemCoordinator",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Group Activities"
    ],
    "preciseIdentifier" : "s:15GroupActivities17SystemCoordinatorC"
  },
  "title" : "SystemCoordinator"
}
-->

# SystemCoordinator

A type you use to coordinate your interface’s behavior when an
active SharePlay session supports spatial placement of content.

```
final class SystemCoordinator
```

## Overview

A [`SystemCoordinator`](/documentation/GroupActivities/SystemCoordinator) object helps you coordinate the
presentation of your app’s content when spatial placement
is active. In visionOS, the system can present a SharePlay
activity as if the participants were together in the same room
with the content. Each participant views the content from a
particular vantage point, and sees the changes that others make. The system handles the
placement of each participant’s spatial Persona relative to
the content, but you handle any changes to the content itself
with the help of the [`SystemCoordinator`](/documentation/GroupActivities/SystemCoordinator) object.

You don’t create a [`SystemCoordinator`](/documentation/GroupActivities/SystemCoordinator) object directly. After
you receive a [`GroupSession`](/documentation/GroupActivities/GroupSession) object for an activity,
retrieve the system coordinator from the session’s
<doc://com.apple.documentation/documentation/GroupActivities/GroupSession/systemCoordinator>
property. When you first retrieve the object, update its
[`configuration`](/documentation/GroupActivities/SystemCoordinator/configuration-swift.property) property to tell the system how you want to
arrange participants in the scene. After that, use the information
in the system coordinator’s properties to keep your app’s interface
up to date. When participants support spatial placement,
send additional data to synchronize your content for those participants.
For example, when one person scrolls the contents
of a window, update the scroll position in the window of other
spatially aware participants to preserve the shared context for everyone.

You choose what information to share among participants,
and you choose how to manage the corresponding updates.
A system coordinator object only helps you know when to
make those changes. Observe the object’s published properties to
receive automatic updates when the values change.

## Topics

### Configuring the system coordinator

[`configuration`](/documentation/GroupActivities/SystemCoordinator/configuration-swift.property)

The current configuration of the system coordinator.

[`SystemCoordinator.Configuration`](/documentation/GroupActivities/SystemCoordinator/Configuration-swift.struct)

A structure that specifies your app’s support for activities that
take place in a shared simulation space.

### Getting the participant state

[`remoteParticipantStates`](/documentation/GroupActivities/SystemCoordinator/remoteParticipantStates)

[`localParticipantState`](/documentation/GroupActivities/SystemCoordinator/localParticipantState)

The current participant’s level of support for an activity
that takes place in a shared simulation space.

[`localParticipantStates`](/documentation/GroupActivities/SystemCoordinator/localParticipantStates)

An asynchronous sequence that reports changes to the
local participant’s state.

[`SystemCoordinator.ParticipantStates`](/documentation/GroupActivities/SystemCoordinator/ParticipantStates)

An asynchronous sequence that reports the current person’s
ability to participate in a shared context.

### Getting the current immersion level

[`groupImmersionStyle`](/documentation/GroupActivities/SystemCoordinator/groupImmersionStyle)

The presentation style to apply to an immersive space for the current activity.

[`SystemCoordinator.GroupImmersionStyles`](/documentation/GroupActivities/SystemCoordinator/GroupImmersionStyles)

An asynchronous sequence that contains one or more incoming immersion
styles for you to process.

### Assigning the local participant role

[`assignRole(_:)`](/documentation/GroupActivities/SystemCoordinator/assignRole(_:))

Assigns the given spatial template role to the local participant.

[`resignRole()`](/documentation/GroupActivities/SystemCoordinator/resignRole())

Resigns the local participant from their current spatial template role.



---

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)