Ever since the update last night, I’ve noticed that the default chat icon on the new CoreGui UI does not get removed when starterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Chat, false) is executed from a script in game.ReplicatedFirst. This is happening in both Studio and the live game. The Roblox chat interface itself is removed though. This JUST started happening.
Additional Information
Parameter
Value
Problem Area
Engine
Problem Component
UI
First Noticed
19 April 2025
Priority
Medium
Impact
HIgh
Annoyance Level
High
The beta features that I have enabled are as follows:
Assistant Preview
Texture Generator
As for plugins, I have a bunch that are installed, but very few are enabled. The ones that are enabled are listed below with links to their details page on the Roblox store website:
I have the same probelm and this really is annoying because I have a custom chat system that doesn’t use that button so its just there taking up space! And also for games that disable chat they are gonna have that button there but it does absolutely nothing! I hope there is a fix for this.
I suggest you to do it right now. Is it really that hard to just set the icon’s “Visible” property boolean based on the second argument of SetCoreGuiEnabled call?
Sad that all TextChatService related bugs got the exact same response. I wonder what are they actively working on then. If it’s about improving the performance, then I guess they’re doing a bad job there, because everytime I test it, I notice the exact same results as before.
Hey! If anyone else is still having problems, I’ve released a faithful recreation of TextChatService that addresses this issue. OpenTextChatService - Open-Source Implementation of TextChatService. This is on top of a bunch of other bugs and performance issues with TextChatService that I’ve addressed. If that isn’t your jam, the following snippet is a simplified version of what I have included in my resource. Just place a local script in ReplicatedFirst and any calls you make with SetCoreGuiEnabled should work.
--//===================== Services =====================-//-
local StarterGui = game:GetService("StarterGui")
--//===================== Utility =====================-//-
local GetCoreGuiEnabled = function(coreGuiType: Enum.CoreGuiType) : boolean
return StarterGui:GetCoreGuiEnabled(coreGuiType)
end
local SetCoreGuiEnabled = function(coreGuiType: Enum.CoreGuiType, enabled: boolean): ()
StarterGui:SetCoreGuiEnabled(coreGuiType, enabled)
end
local GetCore = function(paramaterName: string): any
local s = false
local v
repeat s = pcall(function() v = StarterGui:GetCore(paramaterName) end) if not s then task.wait() end until s
return v
end
local SetCore = function(paramaterName: string, value: any): ()
local s = false
repeat s = pcall(function() StarterGui:SetCore(paramaterName, value) end) if not s then task.wait() end until s
end
--//===================== CoreGuiChatConnections =====================-//-
local chatWindowVisibilityChangedBindable = Instance.new("BindableEvent")
local chatWindowVisibilityChanged = chatWindowVisibilityChangedBindable.Event
local chatWindowVisibilityBindable = Instance.new("BindableEvent")
local chatWindowVisibility = chatWindowVisibilityBindable.Event
local messagesChangedBindable = Instance.new("BindableEvent")
local messagesChanged = messagesChangedBindable.Event
local db = 2
local VisibilityChanged = function()
local active = GetCore("ChatActive")
local coreGuiEnabled = GetCoreGuiEnabled(Enum.CoreGuiType.Chat)
local visible = active and coreGuiEnabled
chatWindowVisibilityBindable:Fire(visible)
if visible then messagesChangedBindable:Fire(-1) end
if db < 2 then db += 1 return end
db = 0
SetCoreGuiEnabled(Enum.CoreGuiType.Chat, not coreGuiEnabled)
SetCoreGuiEnabled(Enum.CoreGuiType.Chat, coreGuiEnabled)
end
chatWindowVisibilityChanged:Connect(VisibilityChanged)
SetCore("CoreGuiChatConnections", {["ChatWindow"] = {["ToggleVisibility"] = chatWindowVisibilityChangedBindable, ["SetVisible"] = chatWindowVisibilityChangedBindable, ["TopbarEnabledChanged"] = chatWindowVisibilityChangedBindable, ["CoreGuiEnabled"] = chatWindowVisibilityChangedBindable, ["VisibilityStateChanged"] = chatWindowVisibilityBindable, ["MessagesChanged"] = messagesChangedBindable}})
VisibilityChanged()