Programming & Technical Oct 30, 2026

Roblox TextChatService May 2027 Migration Lock List - 2026

Roblox TextChatService May 2027 migration lock list — PlatformIntegratedChat test now, TextChannelWindow, commands, Quick Words, no message text in code.

By GamineAI Team

Roblox TextChatService May 2027 Migration Lock List - 2026

Pixel art orange robot with LOCK LIST clipboard beside MAY 2027 TextChat monitor

If you searched roblox textchatservice migration after Roblox’s late-October chat announcement, you do not need another panic thread. You need a dated lock list you can run this month — before May 2027 makes the updated TextChatService the only path for custom chat.

Roblox posted Important TextChatService Updates: How to Test and What’s Next (Oct 2026). Key takeaways: start testing now; required migration in May 2027; custom chat moves to native systems (TextChannelWindow, TextChatCommand / commands, Quick Words, native prefixes early 2027); message content is no longer accessible in code. Opt in by setting TextChatService.PlatformIntegratedChat to Enabled in Studio. Docs: platform-integrated chat. The Weekly Recap: October 19–23, 2026 amplified the test-now message. Related platform tooling context: Roblox Cube.

This page is the deadline lock list. It is not the Steam Winter Sale prep worksheet (store sale lock). It is not terrain Expanded Terrain or Prompt-to-Avatar. Those own different Oct surfaces. This URL owns TextChatService → May 2027 gates.

Why this matters now

Custom chat UIs that read TextChatMessage.Text, parse Player.Chatted, fake radios with free-text, or ship chat wheels via SendAsync will not survive the platform-integrated model unchanged. Roblox wants consistent safety tools (report/mute) and native feature rollouts. Phase 0 is already live: chat between users must go through TextChatService; off-TCS conversation surfaces can draw enforcement. Phase 1 (now → Feb 2027) is the test window. Phase 2 (Feb 2027) auto-opts games in (with opt-out details to come; property can be Disabled until about March 2027 per docs/table language). Phase 3 (May 2027) is the hard custom-chat cutover. Waiting until April 2027 to discover empty strings in production is how Discord becomes a war room.

Direct answer: Inventory chat and UGC text this week. Enable PlatformIntegratedChat on a copy place. Grep for unsupported APIs. Migrate UI to TextChannelWindow, commands to TextChatCommand, presets to Quick Words. Do not plan on reading message text in Luau after opt-in. Default Roblox chat with no customizations: no action expected. Re-read the DevForum thread monthly — the roadmap is moving (Oct 22 feedback table; Oct 28 webinar note).

Who this lock list is for

Audience Use it to…
Beginners Know May 2027 + “test Enabled in Studio”
Developers Grep APIs, migrate windows/commands, empty-string traps
Creators Paste a Discord brief with phase dates
Companies Diligence — privacy (no message text) + dated cutover

Time: 40 minutes to inventory. First opt-in lab: 2–4 hours. Full migration: weeks for heavy custom chat.
Honest limit: DevForum + create.roblox.com are authority. Feature dates (prefixes Feb 2027, etc.) can shift — re-check before you freeze a sprint plan.

Non-repetition

URL Job
Steam Winter Sale lock worksheet Different deadline (store sale)
Terrain materials what-changed Oct terrain GA
Prompt-to-Avatar what-changed Avatar Studio Beta
Roblox Studio guide Platform hub
This URL May 2027 TextChat lock list

Pair a Discord paste with 25 free game development Discord servers. If Studio networking fails under a corporate proxy while you chase docs, keep package manager HTTP 403 help for the network path.

The one-paragraph version

Roblox is moving text chat to a platform-integrated TextChatService model. Now: all user↔user chat must use TCS; off-channel conversation UGC should be removed, routed, or rate-limited (≥1 minute). Now–Feb 2027: opt in with TextChatService.PlatformIntegratedChat = Enabled (Studio-only property) and test. Message text APIs return "" (not nil) + warnings when enabled. Migrate custom UIs to TextChannelWindow, commands to TextChatCommand, presets to Quick Words, moderation to read-only flows; prefixes get a native path early 2027 (role badges / Feb language in updates). Feb 2027: automatic opt-in for games (opt-out window discussed; disable until ~March 2027 in property docs). May 2027: updated TCS is the only custom-chat path. Default unmodified chat: no action. Metadata (IDs, sender, timestamps, delivery) remains; message body is not for your code.

Phase calendar (lock dates)

Phase When Lock meaning
0 Now TCS-only for user chat; hunt off-TCS conversation
1 Now → Feb 2027 Opt-in test PlatformIntegratedChat; file gaps on DevForum
2 Feb 2027 Auto opt-in (opt-out details forthcoming)
Opt-out end ~March 2027 Property/docs: can Disabled until then — verify nearer the date
3 May 2027 Required for custom chat in new + existing games

Print this table into the sprint board. Do not collapse “May 2027” into “we have a year of nothing.”

Lock list — twelve gates

L1. Default-chat exemption check

Do: Confirm whether the experience uses default Roblox chat with no customizations. Staff: those games should not need action and should not see a change.

Pass: Written yes/no with owner name.
Fail: “We think we’re default” while a free model injected custom GUI.
Next: If customized → continue L2+. If truly default → monitor thread; still run L2 surface hunt for off-TCS chat.

L2. Off-TCS conversation hunt (Phase 0)

Do: Search for real-time conversation outside TextChatService: signs, bulletin boards, pet names, license plates, trading whispers, announcement systems, admin tools, comment systems, free-text inputs. Admin modules that message players are frequent culprits.

Pass: Inventory spreadsheet with surface → decision (route to TextChannel / rate-limit ≥1 min / remove).
Fail: “Players won’t find it.”
Next: Staff: non-compliance may bring notices; continued violations risk suspension/removal.

L3. Rate-limit UGC non-chat text

Do: For UGC that is not chat (signs/boards), enforce ≥1 minute between submissions so it cannot be a conversation channel.

Pass: Rate limit in code + QA attempt to spam-chat via signs.
Fail: Unlimited free-text that behaves like chat.
Next: Prefer routing true chat to TCS instead of clever boards.

L4. Copy-place opt-in

Do: Duplicate a lab place. In Studio Explorer select TextChatService → Properties → PlatformIntegratedChat → Enabled. Property is Studio-only (not settable from scripts).

Pass: Lab place ID; Enabled confirmed; can revert to Disabled.
Fail: Enabling first on the only live place.
Next: Docs: platform-integrated chat.

L5. Empty-string API grep

Do: Grep for TextChatMessage.Text, .Translation, .PrefixText, OnIncomingMessage, Player.Chatted, and chat-wheel TextChannel:SendAsync patterns. With PlatformIntegratedChat Enabled, unsupported reads return "" + output warnings (not nil) — scripts may “work” while silently losing content.

Pass: Grep report + each hit tagged migrate/delete/defer.
Fail: Assuming nil checks catch the break.
Next: Fix nil-vs-empty assumptions in the same PR as migration.

L6. Custom UI → TextChannelWindow

Do: Replace custom message-rendering GUIs with TextChannelWindow. Set Target to the desired TextChannel. Size/color/position remain creator-controlled; Roblox delivers/filters/renders text.

Pass: Lab window shows live channel traffic without reading .Text in Luau.
Fail: Homegrown scrolling frame still binding message strings.
Next: Use ChatWindowConfiguration.TextChannelDisplayMode = DefaultTextChannels when custom channels must not also appear as default-window tabs (Studio-set; scripts can read).

L7. Commands → TextChatCommand

Do: Migrate chat-triggered admin/game commands to TextChatCommand (keyword + callback). Remove parsers that inspect raw message text / Chatted.

Pass: Each command has a TextChatCommand; raw-text parsers gone.
Fail: “We’ll keep Chatted until May.”
Next: Roadmap: keyword-anywhere + still-send-to-chat options called out for Feb in the Oct 22 update — plan, don’t bet the farm without re-check.

L8. Presets → Quick Words

Do: Move creator presets / chat wheels off SendAsync patterns to Customizable Quick Words (Creator Hub upload/publish). Staff: custom presets can’t render the old way; preset policy updates by Feb 2027.

Pass: Quick Words published for game-relevant phrases; old wheel retired in lab.
Fail: Shipping a SendAsync wheel on the Enabled path.
Next: Test Quick Words availability on TextChannelWindow vs default window per current roadmap month.

L9. Prefix / role badge plan

Do: If you rely on PrefixText today, do not assume it survives Enabled. Staff: native prefix / role-badge path early Feb 2027 (filtered badges, runtime set/remove/read, colors; two badges; gradients later). Until then, defer enabling on production if prefixes are load-bearing — or redesign without them for the lab.

Pass: Written decision: wait for native badges / redesign / accept loss in lab.
Fail: Enabling live with PrefixText-critical UX.
Next: Track Feb 2027 feature drops on the same DevForum thread.

L10. Moderation → read-only path

Do: Replace custom moderation that depended on reading message bodies with read-only chat permission flows for eligible moderators (staff: 18+ live view language in updates) and TextChatCommand for actions. Message history called out as coming later in 2026 on the feedback table — verify before promising history in your tool.

Pass: Mod playbook updated; no .Text logging for “safety.”
Fail: Exporting chat logs from Luau after Enabled.
Next: Privacy is the point — treat empty string as permanent design, not a bug.

L11. Multi-channel / radio honesty

Do: For radios/phones/guild chats: one TextChannelWindow per channel + your navigation; read-only channels via TextSource.CanSend = false. Staff considering multi-channel-in-one-window; recommend Default Window interim if you need that support. Bubble chat styling via BubbleChatConfiguration / OnBubbleAdded still called out as available.

Pass: Channel map + window plan; no secret off-TCS radio text.
Fail: Free-text walkie that bypasses TCS.
Next: System announcements: DisplaySystemMessage in TextChannelWindow; creator one-way announcements not under the 1-minute UGC edit limit; fan-out from server to clients.

L12. May 2027 producer sign-off

Do: Producer signs: L1–L11 green or waived with dates, Feb auto-opt-in calendar on the board, May 2027 cutover owner named, live place will not Enabled until lab greps are clean (or default-chat exemption documented).

Pass: Signed lock receipt.
Fail: “We’ll migrate in April.”
Next: Re-run L5 after every chat-related merge until May 2027.

Lock card template

Lock #:
Owner:
PASS / FAIL / N/A:
Evidence:
Blocker if FAIL:
Target date:

Beginner path — first weekend

  1. Read the DevForum key takeaways + docs (30 min).
  2. L1–L3 inventory on paper (60–90 min).
  3. L4 copy-place Enabled (15 min).
  4. L5 grep + fix one empty-string crash myth (60 min).
  5. L6 one TextChannelWindow smoke (60–90 min).
  6. Discord brief; leave live Disabled until L12.

Common mistakes

  • Enabling on live to “see what happens.”
  • Checking for nil instead of empty string.
  • Keeping Chatted parsers “temporarily.”
  • Treating signs as fine forever without rate limits.
  • Ignoring Phase 0 because May 2027 feels far.

Working-dev pipeline order

Sprint Locks Exit
Compliance L1–L3 Phase 0 inventory closed
Opt-in lab L4–L5 Enabled lab + grep
Native surfaces L6–L8 Window/commands/presets
Roles & mod L9–L11 Prefix plan + mod path
Cutover governance L12 Signed May 2027 owner

Unsupported API cheat sheet

Feature Breaks when Enabled Instead
Message body / translation TextChatMessage.Text, .Translation TextChannelWindow
Prefixes TextChatMessage.PrefixText Native badges (early 2027) — wait/plan
Presets / wheels TextChannel:SendAsync (creator presets) Quick Words
Mod / admin parse OnIncomingMessage, Player.Chatted TextChatCommand + read-only mod

Kept: channel membership, sender identity, delivery status, timestamps, message IDs.

New API / property cheat sheet

API Use
TextChatService.PlatformIntegratedChat Enabled to test; Disabled to opt out (until ~March 2027 per docs)
TextChannelWindow Placeable native chat window
TextChannelWindow.Target Which TextChannel to show
ChatWindowConfiguration.TextChannelDisplayMode AllTextChannels vs DefaultTextChannels
TextChannel.AddPlayersOnJoin Auto-membership for custom channels

Roadmap watch list (do not freeze forever)

From the Oct 22 staff feedback table and Phase 1 grid (verify live thread):

Item Rough timing called out
Display name color/gradients Nov 2026 language
Emojis / voice typing / translations on TextChannelWindow Nov 2026 language
Role badges / prefixes native Feb 2027
Keyword-anywhere commands Feb language
Message history Later 2026 language
Quick Action Menu / click messages 2027 / April language
Creator blocked words atop filter By May 2027 language

Treat these as watch items, not contractual SLAs. Re-lock L9/L10 when they land.

Discord paste (creators)

TextChatService lock — May 2027 custom chat cutover.
Now: all user chat via TCS; hunt off-TCS conversation (Phase 0).
Test: PlatformIntegratedChat=Enabled on a COPY place.
Migrate: TextChannelWindow, TextChatCommand, Quick Words.
Message .Text becomes "" — do not plan on reading chat bodies.
Default unmodified chat: likely no action.
Thread: DevForum Important TextChatService Updates.

Receipt before any live Enabled

Date:
Default-chat only?: Y/N
Off-TCS surfaces inventoried?: Y/N
Lab place ID:
PlatformIntegratedChat: Enabled/Disabled
Grep clean for .Text/.Translation/Chatted/SendAsync presets?: Y/N
TextChannelWindow smoke?: Y/N
TextChatCommand count:
Quick Words?: Y/N
Prefix plan:
Mod path:
May 2027 owner:
Signer:

Failure modes

Failure Symptom Fix
Silent empty strings Features “work” with blank data L5 empty-string asserts
Live opt-in Production breaks Friday L4 copy-first
Radio bypass Off-TCS whispers L2/L11
Nil checks Missed "" Rewrite guards
Prefix FOMO Enabled before badges L9 wait/redesign
April scramble May deadline surprise L12 calendar now
Wrong deadline kit Using Winter Sale worksheet Different lock — this URL

Solo vs studio

Solo: Run L1–L5 this weekend. One TextChannelWindow beat twelve custom frames you cannot maintain under empty strings.

Studio: Producer owns L12. Security/compliance owns “we don’t log message bodies.” Eng owns grep CI until May 2027.

Company diligence one-pager

Question Acceptable answer
Hard date? May 2027 custom chat cutover
Test now? Yes — PlatformIntegratedChat Enabled on lab
Can we read messages in code? No under platform-integrated model
Default chat games? No action expected if truly unmodified
Auto opt-in? Feb 2027 (opt-out details — verify)
Who owns migration? Named eng + producer on L12

Worked example — wrong “we’ll wait”

Setup: Heavy custom chat GUI, admin Chatted parsers, VIP PrefixText, chat-wheel SendAsync. Team skips opt-in because May 2027 “is far.” Feb 2027 auto opt-in hits; empty strings nuke commands; Discord meltdown; emergency Disabled until March; May still arrives.

What the lock list forces: L4–L5 in October/November 2026; L6–L8 before Feb; L9 plan before relying on prefixes; L12 owner on the calendar.

Sibling map

Need URL
This lock list You are here
Different deadline worksheet Winter Sale lock
Studio hub Roblox Studio guide
Official how-to Platform-integrated chat docs

When to re-run the locks

Re-run L2 after every new free-text feature. Re-run L5 on CI for chat files. Re-run L4 after Studio updates. Re-run L9/L10 when DevForum posts badge/history landings. Re-run L12 each quarter until May 2027.

Opinion spine (quotable)

Stop treating May 2027 as a distant rumor. The free work is inventory, copy-place PlatformIntegratedChat, empty-string greps, and native windows/commands — locked so Discord cannot skip them until the cutover weekend.

Key takeaways

  1. May 2027 required migration for custom chat under updated TextChatService.
  2. Test now with PlatformIntegratedChat = Enabled on a copy place.
  3. Phase 0 now: user chat via TCS only; hunt off-TCS conversation.
  4. Message text is not for your code — APIs return "" + warnings when enabled.
  5. Migrate UIs to TextChannelWindow.
  6. Migrate commands to TextChatCommand.
  7. Migrate presets to Quick Words.
  8. Plan prefixes for native early-2027 badges — don’t bet on PrefixText.
  9. Feb 2027 auto opt-in window — put it on the board.
  10. Default unmodified chat: no action expected.
  11. Authority: DevForum announcement + docs.
  12. Sign L12 with a named May 2027 owner.

FAQ

What is the Roblox TextChatService May 2027 migration?

The required move to platform-integrated TextChatService for custom chat: Roblox delivers/renders messages; creators use native windows/commands/presets; message bodies are not accessible in scripts.

How do I start testing?

In Studio, select TextChatService → set PlatformIntegratedChat to Enabled on a test place. See platform-integrated chat docs.

Do default chat games need to migrate?

Staff says games using default Roblox chat with no customizations should not need action and should not see a change. Still verify you truly have no custom chat code or off-TCS conversation surfaces.

What happens to TextChatMessage.Text?

Under platform-integrated chat, message text is not accessible to your code. Opted-in APIs return an empty string (not nil) and log a warning.

What replaces custom chat UIs?

TextChannelWindow targeted at a TextChannel, with size/color/position customization. Roblox handles delivery, filtering, and rendering.

When is automatic opt-in?

February 2027 for all new and existing games, with an opt-out option (details to be shared). Property docs describe Disabled until about March 2027 — re-verify nearer the date.

What is the hard deadline?

May 2027 — updated TextChatService is the only way to have custom chat in new and existing games.

Are signs and boards part of this update?

Staff clarified the update changes chat; other player text follows existing sign/board rules, with clearer guidance promised. Phase 0 still expects you not to run conversation off TCS — rate-limit or route.

Sources

What to do Monday

Print the phase calendar. Finish L1–L3. Enable PlatformIntegratedChat on a copy place. Grep for .Text / Chatted / preset SendAsync. Stand up one TextChannelWindow. Name the May 2027 owner. For Studio orientation, use the Roblox Studio guide. Paste the Discord brief if your team only reads one message. Re-check the DevForum thread at the start of every month until May 2027.