So I tested your script and it didnt fire at all, maybe I think the script needs to be fully client sided since I adjusted the script and place it in starterGui and StarterPlayerScripts and it works
local ImagePart = workspace:WaitForChild("ImagePart")
ImagePart.SurfaceGui.TextBox:GetPropertyChangedSignal("Text"):Connect(function()
ImagePart.SurfaceGui.ImageLabel.Image = "rbxassetid://"..ImagePart.SurfaceGui.TextBox.Text
end)
lol ok bye then? whats the point of creating a help topic if ur gonna ignore the solutions cause “it will break the system” fixing systems is part of development, wake up