When exactly are you firing the event? You should probably implement a check to make sure that all players have fully loaded into the game before you use the FireAllClients() function, which is probably why it’s not replicating across all players
Since your DialogueFrame has no yield functions in it, it’s assuming that there’s already a ScreenGui & Frame inside the Gui but it’s still attempting to load everything else which is resulting in that error
Could you change line 2 in your LocalScript to:
local DialogueFrame = player:WaitForChild("PlayerGui"):WaitForChild("ScreenGui").Frame
Np! Just make sure to call that WaitForChild() function to ensure that something will truly load, otherwise it’ll result back as an “infinite yield warning”