I highlighted some of the caveats in a post from a few years back:
tldr: Touched and Untouched events are unreliable and can cause intense lag.
Hence I made ZonePlus to address them.
I’d just like to point out, it’s still okay to use .Touched events for scenarios where you disconnect the connection right away and don’t need to listen for TouchEnded. Take the Coin video above for example, I use .Touched to listen for a coin touch and destroy it right away if by a player (whilst using ZonePlus to handle the random spawning of the coins within that zone).
For everything else though it’s certainly worth considering resources such as ZonePlus and Swordphin’s Raycast Hitbox module until Roblox improve their events.