---
title: Transition
framework: swiftui
role: symbol
role_heading: Protocol
path: swiftui/transition
---

# Transition

A description of view changes to apply when a view is added to and removed from the view hierarchy.

## Declaration

```swift
@MainActor @preconcurrency protocol Transition
```

## Overview

Overview A transition should generally be made by applying one or more modifiers to the content. For symmetric transitions, the isIdentity property on phase can be used to change the properties of modifiers. For asymmetric transitions, the phase itself can be used to change those properties. Transitions should not use any identity-affecting changes like .id, if, and switch on the content, since doing so would reset the state of the view they’re applied to, causing wasted work and potentially surprising behavior when it appears and disappears. The following code defines a transition that can be used to change the opacity and rotation when a view appears and disappears. struct RotatingFadeTransition: Transition {     func body(content: Content, phase: TransitionPhase) -> some View {         content           .opacity(phase.isIdentity ? 1.0 : 0.0)           .rotationEffect(phase.rotation)     } } extension TransitionPhase {     fileprivate var rotation: Angle {         switch self {         case .willAppear: return .degrees(30)         case .identity: return .zero         case .didDisappear: return .degrees(-30)         }     } } A type conforming to this protocol inherits @preconcurrency @MainActor isolation from the protocol if the conformance is included in the type’s base declaration: struct MyCustomType: Transition {     // `@preconcurrency @MainActor` isolation by default } Isolation to the main actor is the default, but it’s not required. Declare the conformance in an extension to opt out of main actor isolation: extension MyCustomType: Transition {     // `nonisolated` by default } See Also: TransitionPhase See Also: AnyTransition

## Topics

### Getting built-in transitions

- [blurReplace](swiftui/transition/blurreplace.md)
- [blurReplace(_:)](swiftui/transition/blurreplace(_:).md)
- [identity](swiftui/transition/identity.md)
- [move(edge:)](swiftui/transition/move(edge:).md)
- [offset(_:)](swiftui/transition/offset(_:).md)
- [offset(x:y:)](swiftui/transition/offset(x:y:).md)
- [opacity](swiftui/transition/opacity.md)
- [push(from:)](swiftui/transition/push(from:).md)
- [scale](swiftui/transition/scale.md)
- [scale(_:anchor:)](swiftui/transition/scale(_:anchor:).md)
- [slide](swiftui/transition/slide.md)
- [symbolEffect](swiftui/transition/symboleffect.md)
- [symbolEffect(_:options:)](swiftui/transition/symboleffect(_:options:).md)

### Configuring a transition

- [animation(_:)](swiftui/transition/animation(_:).md)
- [properties](swiftui/transition/properties.md)

### Using a transition

- [apply(content:phase:)](swiftui/transition/apply(content:phase:).md)
- [combined(with:)](swiftui/transition/combined(with:).md)

### Creating a custom transition

- [body(content:phase:)](swiftui/transition/body(content:phase:).md)
- [Body](swiftui/transition/body.md)
- [Transition.Content](swiftui/transition/content.md)

### Supporting types

- [BlurReplaceTransition](swiftui/blurreplacetransition.md)
- [IdentityTransition](swiftui/identitytransition.md)
- [MoveTransition](swiftui/movetransition.md)
- [OffsetTransition](swiftui/offsettransition.md)
- [OpacityTransition](swiftui/opacitytransition.md)
- [PushTransition](swiftui/pushtransition.md)
- [ScaleTransition](swiftui/scaletransition.md)
- [SlideTransition](swiftui/slidetransition.md)

## Relationships

### Conforming Types

- [AsymmetricTransition](swiftui/asymmetrictransition.md)
- [BlurReplaceTransition](swiftui/blurreplacetransition.md)
- [IdentityTransition](swiftui/identitytransition.md)
- [MoveTransition](swiftui/movetransition.md)
- [OffsetTransition](swiftui/offsettransition.md)
- [OpacityTransition](swiftui/opacitytransition.md)
- [PushTransition](swiftui/pushtransition.md)
- [ScaleTransition](swiftui/scaletransition.md)
- [SlideTransition](swiftui/slidetransition.md)
- [SymbolEffectTransition](swiftui/symboleffecttransition.md)

## See Also

### Defining transitions

- [transition(_:)](swiftui/view/transition(_:).md)
- [TransitionProperties](swiftui/transitionproperties.md)
- [TransitionPhase](swiftui/transitionphase.md)
- [AsymmetricTransition](swiftui/asymmetrictransition.md)
- [AnyTransition](swiftui/anytransition.md)
- [contentTransition(_:)](swiftui/view/contenttransition(_:).md)
- [contentTransition](swiftui/environmentvalues/contenttransition.md)
- [contentTransitionAddsDrawingGroup](swiftui/environmentvalues/contenttransitionaddsdrawinggroup.md)
- [ContentTransition](swiftui/contenttransition.md)
- [PlaceholderContentView](swiftui/placeholdercontentview.md)
