well..... I just answered my own question.
The .id
MUST come after the .onScrollVisibilityChange
but why? its not logical at all. I understand how the nesting of view modifiers works, but why is the .id nullified if its before the other modifier?