Page 1 of 1

Roblox Native Chat Migration: The TextChatService Update, the May 2027 Deadline, and What to Change Before Then

Posted: Wed Oct 21, 2026 6:23 pm
by ice
Quick Summary
  • Roblox published an update on October 21, 2026 that moves all custom chat onto native TextChatService systems. From May 2027 the native path is the only way to have custom chat in new and existing games.
  • The change is opt-in now. Set TextChatService.PlatformIntegratedChat to Enabled in Studio to test. You can set it back to Disabled at any time before March 2027.
  • Once enabled, message text is no longer readable from your code. TextChatMessage.Text and .Translation return an empty string, not nil, so old scripts keep running but stop receiving content.
  • Chat-triggered commands must move to TextChatCommand, and presets or chat wheels must move to Quick Words. PrefixText is not supported yet.
  • Gameplay text that is not chat, such as signs, bulletin boards, pet names and trading systems, stays out of scope, but any free-text surface players can use for a real-time conversation needs a rate limit of at least one update per minute.
  • Games that use the default Roblox chat with no customisations need to do nothing.
What actually changed
The announcement describes chat as moving toward how voice chat already works: Roblox delivers and renders every message, and your code stops touching the content. That is the part that breaks builds. Channel membership, sender identity, delivery status, timestamps and message IDs still behave as they do now, so the plumbing around a message is fine. Reading or writing the message body is what goes away.

Five custom patterns get replacements:
  1. Custom chat UIs move to TextChannelWindow, a window you place in your own UI and point at one TextChannel.
  2. Custom moderation moves to read-only chat permissions, where permitted staff can view all in-game messages without reading them in a script.
  3. Chat-triggered commands move to TextChatCommand.
  4. Custom presets move to Quick Words, the creator-configured phrase system.
  5. Custom prefixes have no replacement yet. Roblox says a native prefix solution arrives early in 2027.
The four phases
PhaseWindowWhat happens
0NowAll communication between users must run through TextChatService. Non-chat free-text surfaces need a rate limit of at least one submission per minute, or they must be removed or restricted.
1Now to February 2027Opt in to the new chat features and report gaps. Roblox is adding customisation so chat can still look specific to your game.
2February 2027All new and existing games are opted in automatically, with an opt-out available. Roblox says further details and opt-out instructions come closer to the date.
3May 2027The updated TextChatService is the only way to have custom chat in new and existing games.
Phase 0 is the one worth acting on today. Roblox names the usual suspects: signs, bulletin boards, pet names, licence plates, trading systems, announcement systems, admin tools and comment systems, plus messaging features tucked inside admin modules. Some of those are chat in disguise, and some admin modules ship with features that bypass the chat rules.

The API table
FeatureUnsupported APIUse instead
Chat messages and displayTextChatMessage.Text, TextChatMessage.TranslationMigrate the custom chat GUI to TextChannelWindow and target a TextChannel
Chat prefixesTextChatMessage.PrefixTextNothing yet. Roblox says if your game requires prefixes, do not enable the update
Presets and chat wheelsTextChannel:SendAsyncQuick Words for all creator-based presets. Custom presets can no longer render in chat, and the preset policy updates by February 2027
Moderation and admin commandsOnIncomingMessage, Player.ChattedTextChatCommand for chat-triggered actions, plus read-only chat permissions for moderation flows
New APIs you get: TextChatService.PlatformIntegratedChat as the opt-in control, TextChannelWindow for placement, TextChannelWindow.Target to pick the channel, ChatWindowConfiguration.TextChannelDisplayMode to keep a custom channel out of the default window, and TextChannel.AddPlayersOnJoin so players who join a guild or team channel are added automatically.

A working example
This is the shape of a minimal custom window, close to the one in the official documentation. It targets RBXGeneral, so it works in a fresh place with no extra setup:

Code: Select all

local TextChatService = game:GetService("TextChatService")

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "TextChannelWindowDemo"
screenGui.Parent = script.Parent

local window = Instance.new("TextChannelWindow")
window.Size = UDim2.new(0, 400, 0, 300)
window.Position = UDim2.new(0, 10, 0, 10)
window.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
window.BackgroundTransparency = 0.5

local target = TextChatService:WaitForChild("TextChannels"):WaitForChild("RBXGeneral")
if target and target:IsA("TextChannel") then
	window.Target = target
end

window.Parent = screenGui
Drop it in StarterGui as a LocalScript and it draws a working chat window that handles sending, receiving and filtering on its own. The styling on the window is limited today, which is the gap Roblox says it is filling through the rest of the year: emojis, voice typing and translations land in November, avatars and display name colours later this year, and a native prefix system in early February 2027.

Setting up a TextChannelWindow
  1. Create a ScreenGui in StarterGui.
  2. Add a TextChannelWindow instance as a child of that ScreenGui.
  3. Set Size and Position to place the window where you want it.
  4. Set Target to the TextChannel the window should display.
Each window binds to a single channel, so several channels means several windows plus your own show and hide logic. The Global channel is not available as a target for a custom window. Channels targeted at a TextChannelWindow currently render as an extra tab in the default chat window, and Roblox has an update expected in October to change that behaviour.

To keep a custom channel out of the default window, set TextChannelDisplayMode to DefaultTextChannels in Studio, then give each custom channel its own window. Scripts can read that property but cannot change it, so it has to be set in Studio or from a plugin.

Auditing your own game
Before you opt in, go looking for the surfaces players use to hold a conversation. For each one, decide whether it is chat or not.
  • Route anything that is chat through a TextChannel. Filtering and per-player settings apply automatically once you do.
  • Rate limit free-text surfaces that are not chat, such as signs or bulletin boards, to one submission per minute or slower.
  • Turn off admin module commands that let players message each other, or update to a version that is compliant.
  • Move any command that parses raw chat text over to TextChatCommand.
  • Delete anything that reads TextChatMessage.Text, logs chat, or exports it to a DataStore.
The last point is the one people discover late. Chat logs, moderation archives and "message history" panels all stop working the moment you enable the update, and there is no replacement for them.

FAQ
Does this affect signs, boards and notes players can write on?
No. The policy for those surfaces is unchanged. They cannot be used for two-way communication between players, they need rate limiting of at least one minute, and they are subject to moderation. Only chat has to move to TextChatService.

Does it affect comment systems, message boards or mail?
No. This covers TextChatService only. A mail system that delivers messages between players is a different surface, but Roblox names trading systems and announcement systems in the list of places players hold real-time conversations, so check anything that feels chat-like.

Can I still record chat logs as a game admin?
No. When PlatformIntegratedChat is enabled, no API returns player message content on the client or the server. Moderators can still use read-only chat permissions to view chat, and players can report or mute.

Do I need to change anything if I use the default Roblox chat?
No. If your game uses the default chat with no customisations, Roblox says you need no action and should not see a change.

What happens if I do nothing at all?
Nothing changes until you enable platform-integrated chat in Studio. The catch is February 2027, when games are opted in automatically with an opt-out, and May 2027, when the native path becomes mandatory.

What about roleplay radios and walkie talkies?
That is the loudest complaint in the announcement thread, and Roblox has not answered it directly. The rules as written still point at TextChannel routing and one-minute rate limits, so plan on either routing those systems through a TextChannel or rate limiting them, and keep an eye on the thread for an exception.

Sources