LazyVStack duplicates conditional content on Android (Skip Lite)
Open
@aabewhite is already working on this.
Since Jan 9, 2026.
bug
layout
- Dominant language
- Swift
- Stars
- 330
- Forks
- 76
- Avg merge
- 3h 6m
- Merged PRs (30d)
- 1
Description
There appears to be a bug in Skip Lite's implementation of LazyVStack where conditional content in the view can sometimes be duplicated. I discovered this with a DisclosureGroup that had been nested in a LazyVStack. The body of the DisclosureGroup is duplicated (vertically) on Android (looks/works fine on iOS).
The below example reproduces the problem (at least it does in my Skip Lite project). My project is not affected - I decided LazyVStack wasn't necessary anyway, so I'm just using VStack instead and all's well.
import SwiftUI
struct LazyVStackBug: View {
@State var isExpanded = false
var body: some View {
LazyVStack {
DisclosureGroup(isExpanded: $isExpanded) {
Text("This is duplicated on Android")
} label: {
Text("Touch to open/close")
}
}
}
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.