I have been working on connecting a LazyColumn to the custom database layer in our app. We have a virtualization system that loads items async in chunks, that only wants to keep items loaded that are near eachother. This is designed so that when you're scrolling a list, we load a page of data at a time (say 10 elements get loaded together), and it keeps a set of contiguous pages loaded together if it can, so items (20-50 will stay loaded, and if you load 50-60 it changes the loaded window to be 30-60).
The problem I see sometimes is if I scroll the list quickly in one direction, then back up, it occasionally gets into a state where it asks for items 10-20, but also asks for item 400. Because item 400 is so far away we drop the loaded items for 10-20 to load 400-410, but then are asked for items 10-20 immediately so and we load those and drop 400, and all this repeats (since the SnapshotList behind it is changed it asks for the items again)
I first saw this with compose 1.2.1 that we're on, but I also tested 1.3.0-beta02 and its the same there. I guess there is some kind of pool of items that the lazy list has that it recycles with, and there is some stuck entry that it keeps recomposing even though its out of view. Maybe its detectable to look at the lazylist state and if it asks for an item super far away to ignore it, but I don't really want to do that.
other ideas?