Is there any tenable way to disable the default Chat UI and have yours?

Hello everyone,

I’m currently working on a game where we rely heavily on Roact for all of our UI elements, including a custom chat interface. However, I’ve run into a challenge that I haven’t found clear documentation or solutions for:

Main Goal:

  • Disable the default Roblox chat UI entirely.
  • Implement my own custom chat interface built in Roact, without interference from the default system.

I’m aware that Roblox now offers a “chat service” that can be customized, but I can’t seem to find up-to-date, in-depth instructions on how to completely turn off the default chat UI. Ideally, I want the user never to see the stock chat window, with all text input and chat logs handled by my Roact components.

Here are a few key points and questions:

  1. Disabling Default Chat
  • Is there an official, recommended way to disable or hide the default chat interface so it doesn’t load at all?
  • I’ve heard about using SetCoreGuiEnabled(Enum.CoreGuiType.Chat, false), but that sometimes only partially disables chat or can break certain systems. Are there any side effects?
  1. Replacing with a Custom System
  • Once the default UI is disabled, how can I properly tie into Roblox’s chat messages to ensure players can still see and send messages, but only through my custom Roact components?
  • Are there best practices or examples on how to script a direct connection between user input and the chat service without the default UI?
  1. Integration with Other Scripts/Services
  • If I need to handle things like team chat or system messages, do I have to manually code all of that logic, or can I hook in to existing methods from ChatService or TextChatService?
  • Are there any major pitfalls or known issues with replacing the chat system in live games?

Since TextChatService is being forced upon us, I will answer these questions in a way where the answer works with TextChatService, and most will only work with it.
I won’t answer some questions with this reply.


Hide UI and topbar button

You can use SetCoreGuiEnabled(Enum.CoreGuiType.Chat, false) and I don’t remember having any bad side effects.

Hide UI but not topbar button

You can hide the UI disabling Enabled on these instances inside of TextChatService:
image

(You can make the chat topbar button open your own chat UI)


You can send messages using TextChannel:SendAsync(message: string, metadata: string?)

You can do something whenever someone sends a message using TextChatService.MessageReceived or TextChatService.OnIncomingMessage.
You can do some research to see which one to use.

Ok, first off thanks for the detailed response, second you sound like you’re not a fan of text chat service, from a cursory reading it seems fine? Also, from where you ended your recommendation, i can follow regular ui implementation steps to actually replace the UI fully right? Nothing weird or annoying I have to consider (always have to ask since we’re on roblox)

Sorry if that’s what I sounded like. That is not really the case. I just emphasised this so that you know for sure that you must use TextChatService.


Yes, as long as it uses TextChannel:SendAsync to send messages instead of other ways which are no longer allowed by Roblox.