I'm trying to display a long list of images with titles using the new AsyncImage in SwiftUI. I noticed that when I put VStack around AsyncImage and scroll through images it's reloading images every time I scroll up or down. When there's no VStack I see no reloading and images seem to stay cached.
Is there a way to make VStack not to reload images on scrolling so I can add text under each image?
Here's a working example. Try scrolling with and without VStack.
import SwiftUI struct TestView: View { let url = URL(string: "https://picsum.photos/200/300") let columns: [GridItem] = [.init(.fixed(110)),.init(.fixed(110)),.init(.fixed(110))] var body: some View { ScrollView { LazyVGrid(columns: columns) { ForEach(0..<20) { _ in // VStack here causes to images to reload on scrolling VStack { AsyncImage(url: url) { image in image .resizable() .aspectRatio(contentMode: .fit) } placeholder: { Image(systemName: "photo") .imageScale(.large) .frame(width: 110, height: 110) } } } } } } }
AsyncImagenot usable, it's strange that it wasn't reported earlier and fixed before release. Report it to Feedback Assistant and consider switching to this AsyncImage: it's pretty stable