LazyList by default discards UI items when they go out of the view bounds to prevent the ever-growing nodes in the composition tree. So this is expected behaviour.
Your code should not be dependent on the recomposition and if you want to run any long-running tasks then that should happen in ViewModel or some top-level view state holder or top-level UI composable