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
Quick Summary
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:
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
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:
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
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.
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
- 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.
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:
- Custom chat UIs move to TextChannelWindow, a window you place in your own UI and point at one TextChannel.
- Custom moderation moves to read-only chat permissions, where permitted staff can view all in-game messages without reading them in a script.
- Chat-triggered commands move to TextChatCommand.
- Custom presets move to Quick Words, the creator-configured phrase system.
- Custom prefixes have no replacement yet. Roblox says a native prefix solution arrives early in 2027.
| Phase | Window | What happens |
| 0 | Now | All 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. |
| 1 | Now to February 2027 | Opt in to the new chat features and report gaps. Roblox is adding customisation so chat can still look specific to your game. |
| 2 | February 2027 | All 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. |
| 3 | May 2027 | The updated TextChatService is the only way to have custom chat in new and existing games. |
The API table
| Feature | Unsupported API | Use instead |
| Chat messages and display | TextChatMessage.Text, TextChatMessage.Translation | Migrate the custom chat GUI to TextChannelWindow and target a TextChannel |
| Chat prefixes | TextChatMessage.PrefixText | Nothing yet. Roblox says if your game requires prefixes, do not enable the update |
| Presets and chat wheels | TextChannel:SendAsync | Quick 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 commands | OnIncomingMessage, Player.Chatted | TextChatCommand for chat-triggered actions, plus read-only chat permissions for moderation flows |
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
Setting up a TextChannelWindow
- Create a ScreenGui in StarterGui.
- Add a TextChannelWindow instance as a child of that ScreenGui.
- Set Size and Position to place the window where you want it.
- Set Target to the TextChannel the window should display.
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.
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