I've had this same problem. The way I do it so re-composition happens when parts of the list is changed is by using SnapshotStateList
val listOpenItems = remember { SnapshotStateList<Boolean>() }
SnapshotStateList is both a state object and a mutable list.