Document change date:
Page
168 additions, 147 deletions

SharePlay

The system synchronizes app playback on all participating devices to support seamless media and content sharing that lets everyone enjoy the experience simultaneously. In visionOS, SharePlay helpsWith SharePlay, people enjoy these experiences while they’re togethertake part in your app’s activities together, from their own devices, even when they aren’t in the same virtual space.room. An activity is a shareable experience your app offers. The system keeps each activity in sync across everyone’s devices and works alongside FaceTime or Messages so people can talk as they go.

When someone shares content duringAn activity can start in different ways: from a control in your app, from a FaceTime call, theor from a shared link. The system asks each participant to launch theopen your app to begin the experience. If people don’on their own device, and invites anyone who doesn’t have the app installed, the SharePlay alert encourages themit to download it from the App Store. If you make

Best practices

Use SharePlay for real-time experiences. SharePlay is designed for activities people do together at the same moment. To also support asynchronous collaboration, where people contribute on their own schedule, give them a way to share or save the activity after the session ends. For example, people can use SharePlay to view and edit a Freeform board together in real time, then share a link afterward to keep collaborating. For developer guidance, see Adding shared content collaboration to your app.

Design an experience that best fits what people are doing together. For many activities, like watching or browsing, it makes sense for everyone to share one view and see the platform-specific versions ofsame thing. Other activities feel richer when the view adapts to each person’s role, like a game that gives every player their own perspective.

Design activities that work across Apple platforms. People may want to share with others on different devices, in different settings, and through different communication methods. Build adaptable experiences that work well across these differences so everyone can participate.

Make it easy to start a shared activity. Give people a clear, recognizable way to begin an activity in your app available asapp, like a Universal Purchase,button that includes the SharePlay symbol. People can also start from system-provided features like the share sheet. In visionOS, people can make one purchase and use your app and their in-app purchases across allstart an activity using the platforms you support.Share button next to the window bar. For developer guidance, see Presenting SharePlay activities from your app’s UI.

Best practices

Let people knowjoin an activity without friction. When someone joins, get them to the shared content quickly and avoid showing views unrelated to the activity. If they need to sign in, download content, or subscribe first, guide them through it in a view that you support SharePlay. People often expect media playback experiences to be shareable, so indicate this capability in your interface.dismisses as soon as they’re done. For example, you can usepurchases or subscriptions, lower the shareplay SF Symbol to identify the content or experiences in your app that support SharePlay.

If part of your app requires a subscription, consider ways to help nonsubscriber participants quickly join a group activity. For example, you might offer temporary orbarrier by offering provisional access to nonsubscribers or supporting Family Sharing. Defer nonessential steps to more natural moments. For example, a game might let people join a match right away and set up profiles once they’re connected.

Describe activities clearly and concisely. When someone receives an existing subscriber sendinvitation, a one-time passclear description helps them understand what they’re about to join. For a friend. To make it easy for family membersmovie, that might be the title, a short summary, and a poster image. Keep descriptions brief enough to share your content in a SharePlay experience, you can support Family Sharing. Ifavoid truncation.

Keep people can start a subscription during a SharePlay experience, present a streamlined version of your sign-up flow so they can joinoriented as an activity changes. When one person’s action changes the activity without making others wait.for everyone, help people understand why. For guidance, see Auto-renewable subscriptions.

Support Picture in Picture (PiP) when possible. On iPhone and iPad, peoplemedia, the system can opencoordinate playback across devices, so pausing a shared video inmovie for one person pauses it for everyone. For other changes, use in-app cues to show who’s doing what. In Freeform, for example, a PiP window. On a Mac, a shared video opens in a background window that people can move intoparticipant’s initials appear next to their contribution, strengthening the foreground when they want to watch.sense of presence.

Use the term SharePlay correctly. You can use SharePlay as a noun —noun, as in “Join SharePlay” — and alsoSharePlay,” or as a verb when describing a directthat describes an action in your interface. For example, ininterface, like a button or sheet that lets people shareSharePlay Movie button. Don’t pair SharePlay with an adjective. In a movie-viewing activity, you can use a phrase like “SharePlay Movie.” Avoid using an adjective with SharePlay; for example, in your visionOS app, don’t addfor instance, avoid adding terms like virtual or spatial. Avoid changingAnd don’t alter the term SharePlay in any way; for example, don’t useitself with variations like SharePlayed, SharePlays, or SharePlaying.

Sharing activities

An activity is an app-defined type of shareable experience. For example, an app that lets people view videos might define a separate activity for viewing each type of content — like movies, TV shows, and uploaded videos — and display a different description for each activity. You can define as many different activities as make sense in your app. For developer guidance, see Defining your app’s SharePlay activities.

Briefly describe each activity. When people receive an invitation to participate in an activity, your description helps them understand the experience they’re about to share. For example, a video-viewing app might associate its descriptive movie view with a movie-viewing activity. In this case, the descriptive view might display a movie’s title, a plot summary, and a poster image. Write a simple, meaningful description that’s short enough to avoid truncation.

Make it easy to start sharing an activity. If there’s no session available when people start a shareable activity, you can present UI that lets them start a group activity. In response, the system asks people if they want to share or continue the experience solo.

Help people prepare to join a session before displaying the activity. For example, if people must log in, download content, or make a payment before they can participate, display views that help them perform these tasks before showing the activity UI. Make these tasks as simple and effortless as possible so people can join the group activity quickly.

When possible, defer app tasks that might delay a shared activity. For example, if your app needs to know a participant’s profile, consider asking for this information at a convenient time, like when playback pauses or finishes.

Platform considerations

No additional considerations for iOS, iPadOS, macOS, or tvOS. Not supported in watchOS.

iOS, iPadOS, macOS

Support Picture in Picture for shared video. Let people keep watching together even while they do other things on their device. On iPhone and iPad, a shared video can continue playing in a Picture in Picture window. On Mac, it can keep playing in a window people bring forward when they want to watch.

visionOS

People expect most visionOS appsIn visionOS, SharePlay brings an extra level of presence to support SharePlay. While wearing Apple Vision Pro,shared activities, whether people chooseare collaborating in the Spatial option in FaceTimesame room, playing a game with distant friends, or catching up over FaceTime. Standard windows are shareable through screen mirroring by default using the Share button, and you can adopt SharePlay to share contentvolumetric windows and activities with others.immersive content.

Designing shared activities

InWhen people join a shared activity, FaceTime can show representations of other participants — called spatial Personas — within each wearer’s space, makingthe system creates a shared context so everyone feel like they’re sharing the same experienceexperiences your content in the same place. During a shared experience in FaceTime, peoplerelative location. People can discuss, point to, and interact with each othercontent as if it’s really there in natural ways through their spatial Personas. For example,the room, which encourages authentic, intuitive interaction. Aligning your app’s windows and volumes across everyone’s devices gives people can speak or gesture directly to others, tell when someone is paying attention to them, and know which person is using a shared tool or resource.

visionOS uses the concept of shared context to describe the characteristics of a shared activity that help people feel physically present with others while connecting overconfidence they’re looking at the same content. A shared context helps give people confidence that they’re experiencing the same thing as everyone else.

When people feel that they’re truly sharing an experience, social dynamics can encourage authentic, intuitive interactions. For example, people can communicate verbally and nonverballything. Your app needs to make plans, take turns, and share resources.

Choose the spatial Persona template that suits your shared activity. When you design a shared activity, you can use a spatial Persona template to specify a layout for arranging spatial Personas in the shared activity space. The system provides three spatial Persona templates: side-by-side, surround, and conversational.

The side-by-side template places participants next to each other along a curved line segment, all facing the shared content. The side-by-side template gives everyone a great view of the content, making it a good choice for helping people watch media together. Because people aren’t facing each other in this arrangement, the side-by-side template can encourage less nonverbal interaction than other spatial Persona templates.

The system-applied surround template arranges participants all the way around the shared content in the center. This spatial Persona template works especially well when the content is 3D, because each participant views it from a different angle. In the surround template, participants face each other as if they were grouped around a table, promoting both verbal and nonverbal interactions.

The conversational template also groups participants around a center point, but places your content along the circle, not at its center. Because of this position, not everyone has the same view of your content, and it might not be convenient for everyone to interact with it. Consider using the conversational arrangement if your experience is more about people being together while your app performs a task in the background like playing music.

For developer guidance, see SystemCoordinator and SpatialTemplatePreference.

Be prepared to launch directly into your shared activity. When one person shares your activity with others on a FaceTime call, the system minimizes friction by automatically launching your app for everyone. In this scenario, you want to avoid displaying any windows that aren’t related to the shared activity. For example, if people need to sign in before joining the activity, be sure to present this task in an autodismissible window that disappears as soon as people finish providing the required input.

Help people enter a shared activity together, but don’t force them. When one participant changes their level of immersion, the system tells you so you can synchronize the experience for everyone. Before synchronizing, check whether changing a person’s level of immersion would disrupt their current task; if it would, offer them the choice to join the updated experience. For example, if someone is editing content in an unshared window, you might present an alert that lets them choose to transition. For guidance, see Immersive experiences.

Smoothly update a shared activity when new participants join. When someone joins an in-progress activity, you need to integrate them without disrupting the experience for everyone else. For example, it’s important to update shared immersive content to keep all participants synchronized. Also, consider designing ways to accommodate up to five participants in your arrangement, updating their positions as necessary.

Maintaining a shared context

When your shared activity runs in a Full Space, the system helps your app maintain a shared context by using a single coordinate system to arrange your content and all participants, automatically synchronizing the size, position, and orientation of your app for each person. You’re responsible for displayingposition 3D objects, playingplay sounds, and supportingsupport interactions in ways that enhancestrengthen the feeling of sharing the experience.being together. For developer guidance, see Synchronizing data during a SharePlay activity.

Make sure everyone viewsPrefer starting your experience from a window. An activity that starts in a window is easy to find, because people can share it by tapping the same state of your app.Share button next to the window bar. For an activity that begins in an immersive space, however, you need to design custom UI to help people start it. For developer guidance, see Implementing SharePlay for immersive spaces in visionOS.

Resolve conflicts naturally. If your app hasWhen people share content, more than one state — such as a media app that provides both minimal and theater-like viewing modes — you needperson may try to avoid letting different participants view different states, because doing so can diminish people’s sense of being together in a shared space. The exception to this is when someone needs to temporarily exit a shared activity; for guidance, see Adjusting a shared context.

Use Spatial Audio to enrich your shared activity. Playing Spatial Audio can help you strengthenact on the realism of the shared experience. For guidance, see Playing audio.

When possible, let people discover natural, social solutions to confusions or conflicts that might arise during a shared experience. For example, ifsame thing at once. If only one participant at a timeperson can use a virtual tool,tool or object at a time, avoid displaying UI, like tool-use controls or notifications, and insteadshowing UI that lets someone else take control. Instead, let people speak or gesture to the group when they want to use the tool. If conflicts can arise during your shared activity — for example, if multiple people try to change the same content at the same time — consider implementinga turn. Consider a simple rule, like last change wins, that keeps the environment collaborative and letting people use the rule to define behavior that’s acceptable to the group.predictable.

HelpReserve unique views for moments that call for them. In general, keep views and immersion levels in sync so people keep their private and shared content separate. By default, the system clearly differentiatesfeel connected. In some cases, though, a shared window from windows that aren’t shared. For example, when people use Music to listen together, the shared Music window appears as a new window for everyone, while any individual’s open library window remains separate and unshared. If your apppersonalized view can open multiple windows, help people share the one they want and make it easy for them to distinguish shared from unshared windows. If possible, also let people drag content they want to share from a private window to a shared one.

Adjusting a shared context

Sometimes, it makes sense to adjust the shared context of a shared activity so each participant can customize their experience, such as for comfort or accessibility. In other situations, strictly maintaining a shared context might decrease people’s enjoyment ofenrich the experience. For example, when content has only one ideal viewing angle, each participant might needWhen someone enters an immersive view of their own.own, replace their spatial Persona with a contact photo so others know they’ve stepped away, and let everyone keep talking over FaceTime Audio.

Let people personalizeopt in to immersion changes when they’re mid-task. When one person changes their level of immersion, your app can bring everyone along. First, check whether the change would interrupt what someone’s doing. If it would, let them choose when to join rather than pulling them in automatically. For example, if people are watching a movie in the Apple TV app and someone switches to an immersive environment, anyone engaged in an activity in another window sees a prompt with an option to join when they’re ready. Everyone else transitions right away. For guidance, see Immersive experiences.

Let participants customize their experience without changing the experience for others.personal comfort and accessibility needs. For example, people might need to adjust various settings,Settings like volume or subtitles,and subtitles help people stay comfortable. Keep these adjustments unique to make views and interactions accessible or make themselves more comfortable.

Consider when to give each participant a unique view of the shared content. Some content looks best when people view it from a specific perspective. For example, people can share a Spatial Capture in a standard window with other people’participant, so one person’s spatial Personas visible around it. However, to perceive the depth in a Spatial Capture, each person needs to view it from the right angle. In this scenario, a person could temporarily transition to a Full Space that hides other participants and ensures the right viewing angle for them, even while everyone else continues to view the standard window and each other. If it makes sense to provide per-person versions of your shared content, be sure to continue synchronizing people’s positions and your app context to maintain the shared experience.changes don’t affect anyone else.

Make it easy for people to exitleave and rejoin a shared activity.rejoin. Sometimes, peoplePeople sometimes need to perform an unrelatedstep away for another task in your app or a different one, orto engage with their physical surroundings. When this happens, you needIf someone exits, give them a clear control to presentrejoin quickly. If your app offers a control or other componentwindowed version of the activity, people can continue multitasking while staying connected to the shared activity and FaceTime Audio.

Personas

In a shared activity, how someone appears depends on their device and location. Someone joining remotely on Apple Vision Pro may appear as a spatial Persona, a representation that lets them make eye contact, gesture, move around, and interact with your content as if they were in the same room. If they haven’t set up a Persona, they appear as a contact photo instead. Someone joining on iPhone, iPad, Mac, or Apple TV appears in a 2D window showing their video. When people quickly rejoinwearing Apple Vision Pro devices are together in the same room, shared content appears in the same physical location for each of them, and they see each other naturally through passthrough.

Support people who aren’t represented by a spatial Persona. Not everyone in a shared activity appears as a spatial Persona. People join from other devices, and someone on Apple Vision Pro might turn theirs off or join over windowed FaceTime. Make sure your activity works for all of them. If your experience relies on facial expressions or gestures, offer alternatives in your UI so these participants can take part fully.

For developer guidance, see Adding spatial Persona support to an activity and Configure your visionOS app for sharing with people nearby.

Spatial templates

A spatial template automatically arranges participants around your content in a way that suits what they’re doing together. Each person has a seat that determines where they appear and which way they face, based on the content and the template you choose. Adopt the spatial template that best fits your activity, or create a custom template if none of the system ones fit.

The side-by-side template is ideal for viewing or watching content together. It places participants next to each other along a curve, all facing the shared activity.content. Because they aren’t facing one another, this arrangement encourages less nonverbal interaction and keeps the focus on the content.

The surround template is ideal for tabletop games and other centralized experiences. It arranges participants in a circle around your shared content. This works especially well when the content is 3D or unique to each participant, as each viewer sees it from a different angle. Because participants face each other as if grouped around a table, this arrangement encourages both verbal and nonverbal interaction.

The conversational template also groups participants around a center point, but places your content along the edge of the circle rather than at its center. Because not everyone has the same view of the content, it might not be convenient for everyone to interact with it. Consider the conversational arrangement when your experience is more about people being together while your app performs a task in the background, like playing music.

Divide a complex activity into stages. Give each stage of an activity its own template that suits what people are doing at that point. In addition,a game, for example, you might wantuse one template for choosing teams and another for play. Because you can transition between templates, using a mix of system and custom templates is preferable to continue displayingdesigning a single complex custom one.

Let people initiate template transitions. Unexpectedly swapping roles or moving seats can be disorienting, so tie template changes to a person’s explicit action. In a game, for example, choosing a team can initiate the shared contentrole and seat change that follows.

Keep template transitions smooth. Avoid frequent transitions or ones that require excessive movement. When you do move someone to a different seat or role, fade out and back in to ease the change, and provide visual cues to help them reorient afterward.

Custom templates

If none of the system templates suit your activity, you can create a custom template that defines your own seat arrangement. Seats apply only to people using a spatial Persona in visionOS, and an activity can also include people on other platforms who take part without a seat. For developer guidance, see Building a guessing game for visionOS.

Account for people who are physically together. When people using Vision Pro share the same room, they see each other through passthrough rather than as spatial Personas. A spatial template can move a remote participant’s spatial Persona into a seat, but it can’t move someone who’s physically present. If your activity depends on specific positions, guide people with visual cues like position markers, the way a tabletop game might show each player which seat to take. For developer guidance, see Configure your visionOS app for sharing with people nearby.

Provide the best seat orientation for your content. By default, seats face toward the center of your content, but you have full control over seat direction. For developer guidance, see SpatialTemplateSeatElement.

Support the maximum number of seats. Apple Vision Pro supports up to five spatial Personas in an activity, so include five seats whenever your activity allows. Adding or removing seats as people come and go can stay informed aboutbe disorienting, so define every seat up front and keep a seat in place after someone leaves, letting anyone take a spot the ongoing shared experience while they’re hiding theirmoment they join. If your activity has a participant limit, like a two-player game, consider including spectator seats where others can watch and talk.

Place seats at least a meter apart. This gives people enough room to interact comfortably without crowding each other. People can still share gestures like a handshake or a high five, but if a spatial Persona.Persona gets too close to another, it’s replaced with a contact photo, which breaks the sense of presence.

Define the order in which people take seats. When your custom template is set, the seats you specify are filled in the order each person joins. Order them so the arrangement stays balanced when not every seat is occupied; filling seats left to right, for example, can feel unbalanced when only a few people are present.

Keep roles independent of seats. Don’t tie your app’s roles, such as player, spectator, or team member, to seat assignments. A role needs to work for everyone in the activity, including those without a seat. Let people fill any open seat so they can join without delay. Reserve a specific spot only for a role that truly requires it, like a game host at the head of a table. For developer guidance, see isSpatial and isNearbyWithLocalParticipant.

Resources

Auto-renewable subscriptions

Developer documentation

Group Activities

Videos

Change log

Date

Changes

September 9, 2026

Reorganized best practices, expanded visionOS guidance, and added a section on custom templates.

December 5, 2023

Added artwork for visionOS.

June 21, 2023

Updated to include guidance for visionOS.

December 19, 2022

Clarified guidance for helping nonsubscribers join a group activity.