UnreliableRemoteEvents Stop Working After a Few Seconds

Hi everyone, I’ve been running into a strange issue with RemoteEvents — specifically the ones under Unreliable.

I have a few RemoteEvents set up in my game:

  • First unreliable remote: ReplicatedStorage.Remotes.Events.Unreliable.ReplicateSound
  • Second unreliable remote: ReplicatedStorage.Remotes.Events.Unreliable.Tracer
  • And a regular one: ReplicatedStorage.Remotes.Events.Gun
-- Regular RemoteEvent
_janitor:Add(GunEvent.OnClientEvent:Connect(onGunClientEvent), "Disconnect")

-- Unreliable RemoteEvents
_janitor:Add(ReplicateSoundUEvent.OnClientEvent:Connect(function(owner: Player, action: string, ...: any?)
	onReplicateSoundClientUEvent(self, owner, action, ...)
end), "Disconnect")

_janitor:Add(TracerUEvent.OnClientEvent:Connect(onTracerUEvent), "Disconnect")

The regular RemoteEvent works without issues, but after a few seconds, the unreliable ones stop receiving events. The output keeps logging things like:

Remote event invocation discarded event for ReplicatedStorage.Remotes.Events.Unreliable.ReplicateSound; did you forget to implement OnClientEvent?
Remote event invocation discarded event for ReplicatedStorage.Remotes.Events.Unreliable.Tracer; did you forget to implement OnClientEvent?

Even though those events were connected and working properly at first.

I’ve confirmed that I’m not calling :Cleanup() anywhere prematurely — it only runs when the player leaves the game or intentionally cleared. So I’m not sure why only the unreliable RemoteEvents stop working.

Is this a known issue with unreliable RemoteEvents? Or could I be missing something? Any help or advice would be really appreciated. Thanks!

1 Like

This is not a solution but have you tried just normally connecting to the events without adding them to the maid for cleanup? This will let you know if its actually the event’s problem

Thanks a lot for the help, I really appreciate it!

I figured out the issue — it was caused by using :LinkToInstance, which automatically triggers :Cleanup() when the linked instance gets destroyed.

I ended up replacing :LinkToInstance(...) with :Add(object, "Destroy") for objects created via Instance.new() or :Clone(), and that solved the problem. Everything works perfectly now without unexpected cleanup.

Hopefully this helps someone else who runs into the same issue!