starterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Chat, false) does not remove the chat icon

Problem

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:


Expectations

What I expect to happen is that when the aforementioned statement is executed, all aspects of the default Roblox chat are removed.


Visuals

image


Reproduction

To reproduce the issue, perform the following steps:

  1. Create a new baseplate in Studio.
  2. Create a local script in game.ReplicatedFirst that contains the aforementioned statement.
  3. Play test
  4. Observe results
4 Likes

image
It seems to work fine for me.

local starterGui = game:GetService("StarterGui")
starterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Chat, false)

Nope, nvm, after a few tests, it seems to hide the chat icon sometimes and not sometimes but the chat interface is indeed always removed.

But, local starterGui = game:WaitForChild("StarterGui") seems to work but it is not the standard way of accessing StarterGui.

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.

1 Like

Same issue here, it’s bizzare as you can’t access chat at all but the icons still exist.

Agreed. And no response from Roblox on this either. Maybe I should send in a ticket through the web interface to get someone to look at this.

1 Like

Hello, thank you for the bug report. We are investigating internally. We will post an update when the issue is resolved.

3 Likes

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? :smile:

1 Like

Well, considering that this is seems to be affecting everyone, I would think this would be a higher priority than just a blip on the radar.

2 Likes

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.

1 Like

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. :wink:

--//===================== 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()

Hope to see this bug addressed properly!

There is literally no way to disable it. What I’ve noticed is that when a player joins a game that uses the default Roblox chat and leaves the chat window open when leaving the game, then joins a game that tries to disable the core Roblox chat, the topbar icon shows back up if you click Escape after it’s been disabled once. And if you disable it once and then change another core GUI, like the leaderboard, to be enabled or disabled, it will then update the chat icon and make it go away again (until you click Escape)—which, on Roblox’s end, basically closes and reopens the chat window, which updates the icon to show up again even when core chat is disabled.

This is a Roblox issue that devs cannot fix. It will always come back unless someone figures out a workaround to keep it permanently disabled. Also, I found that when the player clicks the useless chat icon that does nothing (to put it in the off state), it can be hidden again because clicking Escape can’t open the window if it was closed already. So the only way to fix this is to have the player manually click the chat icon to close it, and then force the core GUI to update the chat icon state to not show again.

Roblox, PLEASE fix this…

:wave: Just replying now that things don’t seem to be working right here. I’ve started taking a look into this issue and am learning more about why things are they way they are.

I’ll report with updates as they come.

4 Likes

I just saw Roblox chat button is still visible when chat is disabled was filed earlier and is a duplicate of this issue. I will close this thread as a duplicate and ask future information to be reported in the previous thread.

Thanks!