How do you detect when to destroy replicated client-sided bullet tracers?

Due to differing latency, a player who receives a remoteevent for a bullet tracer may simulate a different outcome than the player/server who shot the bullet.

For example, imagine a slow moving rocket. The moment it is shot, it replicates the trajectory to each client for them to simulate. But if the shooter/server detect a hit on a player, whereas a different client calculates a near miss due to latency, you would end up with the hit VFX replicating on the hit player, but the replicated tracer would continue on past them until the simulation detects its own inaccurate hit.

Is the only way to prevent this outcome to have a 2nd remoteevent on hit to tell the clients to destroy this tracer?

Yes. Or you could run a simple hit detection on client and/or send a lifetime along when you create it. So you know to remove it on the client when it’s been alive longer than lifetime. When it’s hit something. Or when it leaves the valid area of the map.

The second remote can work too and would technically be a more correct answer with respect to what actually happened, but might still look odd due to latency.