Implicit Animations
The easiest way. Add .animation(.default, value: stateVar) to a view. Whenever stateVar changes, the view animates to the new state automatically.
Explicit Animations
Wrap state changes in withAnimation { stateVar = newValue }. This gives you control over exactly which changes trigger an animation.
Transitions
Define how views enter and exit the screen (if logic). .transition(.scale) or .transition(.slide). Combine them for custom effects.
Matched Geometry Effect
The "Magic Move" of SwiftUI. Seamlessly morph a view from one position/size in a hierarchy to another. Perfect for Hero transitions.
AnimatableData protocol
For custom shapes. Tell SwiftUI exactly what data to interpolate (e.g., angle of a pie chart) to animate custom drawings.
Spring Physics
Apple loves springs. Use .spring() instead of .easeInOut for natural, bouncy, organic-feeling motion that mimics the real world.
Performance
Animations run on the main thread but rendering is on GPU. Avoid complex layout calculations during animation frames. Use .drawingGroup() for complex paths.