For iOS 16+
Now SwiftUI Added the .refreshable modifier to ScrollView.
Just use it the way you do with List
ScrollView { LazyVStack { // Loop and add View } } .refreshable { refreshLogic() } Its supported starting iOS 16 though.
Here is the documentation reference
@available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *) extension View { /// Marks this view as refreshable. public func refreshable(action: @escaping @Sendable () async -> Void) -> some View }