Согласно эта проблема записана на github (теперь закрыта), если у вас есть следующий код в вашем css:
body{
overflow-x:hidden;
}
, тогда Safari не сможет точно рассчитать scrollTop
(но это повлияет только на Safari).
Если у вас есть скрытое переполнение css, вы можете удалить его или использовать предложенный обходной путь (также в сообщении):
const scrollTop = Math.max(window.pageYOffset, document.documentElement.scrollTop, document.body.scrollTop)
надеюсь, это поможет