Roblox’s native Animator instance automated the replication of animations from client to server. This made it so that animations loaded and played locally on a client script would replicate through the server, and to other clients. I found this very annoying and impractical for my emote system as it caused desyncing with joined animations. I’ve also explained my personal motivations for creating this module in this forum post. A good snippet from this post would be:
Making the system listen via Animator.AnimationPlayed works for when the server replicates animations to the client, but it’s unreliable. The AnimationTrack that is received from AnimationPlayed is completely stripped of any metadata, and with the way my system works, I’d need to make serious revisions to make this functional. Not to mention, syncing and special effects would become impossible as the system wouldn’t know what emote animations the other client has loaded, and thus wouldn’t be able to preload the special effects, let alone be able to identify emote animations that are passed through AnimationPlayed with just the AnimationId.