Not sure if it's just me, but in between the user typing and it appearing, it seems quite slow. Here's my code:
Client:
script.Parent:GetPropertyChangedSignal("Text"):Connect(function()
local text = script.Parent.Text
game:GetService("ReplicatedStorage"):WaitForChild("ScreenUpdateEvent"):FireServer(text)
end)
Server:
local event = game.ReplicatedStorage:WaitForChild("ScreenUpdateEvent")
local TextService = game:GetService("TextService")
local box = game.Workspace["building stuff"].ToUpdate.SurfaceGui.TextLabel
event.OnServerEvent:Connect(function(plr, msg)
local filtered = TextService:FilterStringAsync(msg, plr.UserId):GetNonChatStringForBroadcastAsync()
box.Text = filtered
end)