Oh sorry, I seemed to have misread your code above.
Normally I would update the projectile CFrame every frame for a more calculated motion and drop, but in your case you seem to use velocity so leaving on the server is fine actually.
Here’s a article (tutorial) of what I mean: Modeling a projectile's motion
He seems to calculate the trajectory on the server in the tutorial, but I still recommend to do it via the Client
.