---
title: "withTransitionGroup(body:)"
framework: avkit
role: symbol
role_heading: Type Method
path: "avkit/avexperiencecontroller/withtransitiongroup(body:)"
---

# withTransitionGroup(body:)

Coordinates multiple experience transitions to perform together as a single visual transition.

## Declaration

```swift
@discardableResult nonisolated(nonsending) static func withTransitionGroup<ChildTransitionResult>(body: @_lifetime(0: copy 0) (inout AVExperienceController.TransitionGroup<ChildTransitionResult>) async -> Void) async -> [ChildTransitionResult] where ChildTransitionResult : Sendable
```

## Parameters

- `body`: A closure that adds transitions to the group using addTransition(operation:).

## Return Value

Return Value An array of transition results in the order transitions were added.

## Discussion

Discussion Use this method when you need to transition multiple AVExperienceController instances simultaneously, creating a smooth, coordinated animation. All transitions prepare concurrently, then perform together once preparation completes. Individual transitions may succeed or fail independently — the group continues with successful transitions and collects results for all. let results = await AVExperienceController.withTransitionGroup { group in     for controller in controllers {         group.addTransition {             await controller.transition(to: .multiview)         }     } }

// Check which transitions succeeded for (index, result) in results.enumerated() {     if case .reversed(let reason) = result {         print("Controller \(index) failed: \(reason)")     } }

## See Also

### Transitioning experiences

- [AVExperienceController.TransitionGroup](avkit/avexperiencecontroller/transitiongroup.md)
- [transition(to:)](avkit/avexperiencecontroller/transition(to:).md)
