I currently have a list that will be populated with song requests. Each song request appears as a list item with a title and artist name, and is accompanied with upvote and downvote buttons (similar to Reddit). The list of song requests is being constantly dynamically reordered by vote count. When a user attempts to upvote or downvote a song request (to indicate whether they want to hear it or not), that song request animates by flashing green if upvoted or flashing red if downvoted, and the list scrolls to focus on the new position that song request has now taken, in order to provide informative feedback for the user as to what their voting action did.
The current problem is that because the list is being dynamically sorted, it may reorder at any arbitrary moment, which leads to an unstable list for users to be interacting with. At any given moment, a user may attempt to interact with a song request but the list may reorder at that point in time, thus confusing the user and creating a lot of 'jumpiness' that is destabilizing.
One potential solution would be to scrap the constant dynamic reordering and instead offer a refresh button to put the user in control of displaying the new reordering of song requests (perhaps with animations included to see how the positions of the song requests have changed within the list since the last refresh). However, this seems like quite a lot of work for the user and during the time that the user does not refresh the list, he or she is dealing with an inaccurate ordering of song requests.
Another potential solution would be to disable reordering when the user's mouse is hovered over the song request list. However, there is no equivalent detection like this on a mobile device.
A final potential solution would be to offer some sort of pause button that the user could use as a toggle for real time sorting. When paused, real time reordering is disabled and the user can interact with a stable, static list. When unpaused, dynamic reordering is once again enabled.
I am curious to see what other solutions there are for this problem that are compatible for both mobile and desktop environments.