Why are you doing those updates during the next frame? We already know what needs to be changed during this frame. We're losing 16ms of responsiveness (even more for setTimeout polyfill).