The following code animates for me. Note that animation inside a list, while still probably better than no animation, can still look kind of weird. This is because the height of the list rows themselves do not animate, and snap to their final height, while the view inside the row does animate. This is a SwiftUI issue, and there's not anything you can do about it for now other than file feedback that this behavior doesn't look great.
struct StackOverflowTests: View { @State private var array = [QuoteDataModel(), QuoteDataModel(), QuoteDataModel()] var body: some View { List { ForEach(array.indices, id: \.self) { index in QuoteView(quote: self.array[index]) .onTapGesture { self.array[index].expanded.toggle() } } } } } struct QuoteView: View { var quote : QuoteDataModel var body: some View { VStack(alignment: .leading, spacing: 5) { Text(quote.latin) .font(.title) if quote.expanded { Group() { Divider() Text(quote.russian).font(.body) } } } .animation(.default) } }