New Bubble Chat and TextChatService Customization APIs

Finally! I am really sure that this will affect the gameplay in a good way. Thank you!

60 Likes

I think he meant having a button to select emojis.

50 Likes

This is great news, Developers including me are able to fully customise chat bubbles in TextChatService to fully fit the vibe of the game!

42 Likes

The chat interface requires enhancements to reach its full potential. Currently, its customization options are rather limited, and there is a noticeable absence of features such as gradient transparency. Most critically, the system lacks the functionality to reconfigure chat binding, a feature that many users would find valuable. These improvements are essential for a more streamlined and personalized user experience.

38 Likes

wow, great update! i don’t see any drawbacks with this.

42 Likes

Here’s a rapid fire list of responses, sorry for the lack of cohesion here.


This is the team’s next priority!

A great idea, I don’t believe it supports this right now but feel free to file a feature request so we can track this.

Feels like a good opportunity to enable an auto complete for developers (with or without TextChatCommands… needs research) We’ll keep this in mind as we investigate!

This looks like a snippet for the legacy system… There’s an analog for BubbleChat’s Background Color already though: BubbleChatMessageProperties | Documentation - Roblox Creator Hub

TextChannels currently exist already, but they are not reflected in the UI well yet. This is one of the team’s next priority as hinted towards the end of the OP.

If I understand this feature correctly, you should be able to set the TextSource.CanSend property to false from a server script context to do what you are asking for today!

Do you mean rebinding the chat hotkey? This is a new addition that was added to ChatInputBarConfiguration.KeyboardKeyCode and announced in the OP!

42 Likes

Yes it is, because the new textchatservice does not support what I’m trying to do. @Clasifex already looked at it and filed it internally, and I’m just trying to see what I can do on my side and hopefully what I requested will be here soon.The BubbleChatMessageProperties does all of them, I just want whenever the speaker says a message, not for everything.

32 Likes

Simply Awesome! Thanks, Roblox for this. A whole new level of customization.

31 Likes

Hey team, thank you for all your hard work in improving TextChatService and making sure that its feature set is on par with what was capable when leveraging the Legacy Chat System’s API or adding features that were not possible without forking (for example, I created a resource for targeted modification of chat bubbles with the Legacy Chat System). I am now gravitating much closer towards adopting TextChatService going forward in contrast to my initial vocal pushback.

I currently maintain an experience that runs a fork of the bubble chat and have removed CoreScript dependencies to further customise bubbles. Although we are still reliant on some parts of the Legacy Chat System API (e.g. chat states and commands), one of the reasons we forked the bubble chat was to add images beside the text as team chat identifiers. Does this release support that?

An example of how this looks in-experience:


Not sure why the image became grainy on upload so hopefully it’s still visible what I want to do.

48 Likes

In my honest opinion it looks like a cool thing on paper but I already know this is going to look horrendous when its actually being used.

Default white bubble chat will always be better because the whole point is to just read the message, all this extra nonsense that’s on screen is truly offensive to look at and very impractical.

The best way to use this is to make sleek designs where the text is the main focus of the speech bubble while trying to not make the background design look like a whole game thumbnail.

32 Likes

On the contrary! It’s an option that’s available to you as a developer, and developers like myself have reason for wanting to have further customisation on bubbles. I really think that it’s up to the developer to figure out what works for their experiences best, and if they want to be silly, then so be it.

My community was very upset when I first attempted transitioning to TextChatService because we had white bubbles on black text that was difficult to see and preferred inverted colours. We would not be able to achieve that without native customisation support or forking which is in itself an arduous process now compared to the Legacy Chat System’s BubbleChat LocalScript.

There are certainly goofy and unreadable combinations that could be implemented with this but I think most developers aiming for readability with customisation aren’t going to have goofy deployments of customised bubble chats. They make for a great monetisation opportunity: there are games outside of Roblox that grant chat frames for example. They can also help intuitively determine who you’re communicating with - in a team-heavy experience such as a roleplay group with team chat requirements, it may be difficult to know who the recipients of messages are without customisation.

I get that you’ve already recognised this though at the bottom of your post by giving advice on how to best use customisation, so that’s a welcome tip I’m sure a lot will appreciate. Though it’s great to have native support either way, even if it opens the door for “visually offensive” bubbles. Trying to customise bubbles in the past was way too difficult.

47 Likes

If I’m not mistaken, that’s exactly what this release aims to enable. You could set the background color to red if the user’s id matches a specific number like this now:

local TextChatService = game:GetService("TextChatService")

-- You'd change this variable to match the UserId you're expecting...
local SPECIAL_USER_ID = 0

TextChatService.OnBubbleAdded = function(textChatMessage)
	local textSource = textChatMessage.TextSource
	if textSource and textSource.UserId == SPECIAL_USER_ID then
		local bubbleChatOverrides = Instance.new("BubbleChatMessageProperties")
		bubbleChatOverrides.BackgroundColor3 = Color3.fromRGB(255, 150, 150)
		return bubbleChatOverrides
	end

	return nil
end
34 Likes

While this release doesn’t seem to support inline custom ui at the moment, you could maybe get an approximate outcome with some 9-slice and some extra whitespace (ehh). Perhaps if UIPadding or allowing for custom inline ui were supported you’d be able to achieve this a lot easier (not sure if/when that is actually planned at the moment, but this is a great example usecase to strive for)

30 Likes

Icons are definitely our biggest use case for inlining UI elements to bubble chat and one of our reasons on why we forked the bubble chat scripts, the other two being conditional bubble chat colouring (now supported) and lack of certainty on the feasibility of being able to create indicators and chat states as users typed, matching the custom chat states of the Legacy Chat System for switching channels as users typed.

It’s something that we can live without since bubble colours are visually clearer right away, but if that’s ever something that comes up in the future I would be happy if TextChatService could support it. :grin:

23 Likes

FINALLY! LET’S GO! I’m glad Roblox is getting better!

28 Likes

Great update!

Now we just need customization support for the player list such as custom icons, custom sort order, max visible elements, etc. Having to create a custom player list UI because it overlaps HUD elements is annoying.

22 Likes

How do I apply MaxBubbles and BubbleDuration to specific NPCs? BubbleChatMessageProperties doesn’t have properties for this. This was possible to do in LegacyChatService.

The only way I can seem to do this is by editing BubbleChatConfiguration, but that applies to all chat bubbles in the entire place, which is not what I want.

22 Likes

But, TextChatService doesn’t support chat channels yet, and legency does currently waiting until it does then, I’ll switch over.

21 Likes

Love this update! I can already see so many use cases for TextChatService.onBubbleAdded, a few of these are:

  • NPCs vs Players - we can now tell them apart!
  • Also being able to change the colour and gradient is going to be fantastic
  • Adding images to bubbles is also really going to help distinguish team and public text channels!

Can’t wait to dive into these new features, big thanks to the team behind this update, this is going to be sick!

20 Likes

Did anyone check? Maybe, I’ll check it out later idk.

20 Likes