skiptools / skiptools/skip-ui

LazyVStack duplicates conditional content on Android (Skip Lite)

Open
#248 0 comments 0 reactions 1 assignee View on GitHub

@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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.