DragonFireGames well you need a buffer there.
think of it like a live stream on twitch or youtube. Videos are sent in chunks. When the video is received, you don't play it immediately. Otherwise, if there's any sort of delay there won't be a seamless play of the live stream for when the next chunk arrives.
In order to prevent this, Twitch and YouTube have a delay in their live stream of anywhere between just 2 seconds up to a whole minute! You need to have the same with your multiplayer game.
So, instead of immediately showing player movement, have the program wait around half a second. This creates the same "buffer" that live streaming utilizes. This may increase your latency (affect the responsiveness), so it's important to not keep it too high.
You're gonna want to append the movement in an array that, like I said before, is being run through a TIMED LOOP, so when you're mirroring user movement it appears seamless.
here's a codepen i made that might help you visualize it. Notice how the first array doesn't get too big or too small. That's because of that loop i mentioned
https://codepen.io/Letti42-the-lessful/pen/dyrMqdP