Learn
Engine Class
ChatInputBarConfiguration
Not Creatable

Code Samples
Get Total Chat UI Bounds
local Players = game:GetService("Players")
local TextChatService = game:GetService("TextChatService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local windowConfig = TextChatService.ChatWindowConfiguration
local inputBarConfig = TextChatService.ChatInputBarConfiguration
local function getTotalChatBounds()
local windowPos = windowConfig.AbsolutePosition
local windowSize = windowConfig.AbsoluteSize
local inputPos = inputBarConfig.AbsolutePosition
local inputSize = inputBarConfig.AbsoluteSize
-- Compute the union of both rectangles to get total chat UI bounds.
-- The reported values do not include the decorative bevel at the top
-- and bottom edges of the chat window.
local topLeft = Vector2.new(
math.min(windowPos.X, inputPos.X),
math.min(windowPos.Y, inputPos.Y)
)
local bottomRight = Vector2.new(
math.max(windowPos.X + windowSize.X, inputPos.X + inputSize.X),
math.max(windowPos.Y + windowSize.Y, inputPos.Y + inputSize.Y)
)
return topLeft, bottomRight - topLeft
end
-- Wait for chat UI to initialize and report absolute values
task.wait(2)
local position, size = getTotalChatBounds()
print("Total chat UI position:", position)
print("Total chat UI size:", size)
-- Overlay a semi-transparent frame to visually verify the bounds
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ChatBoundsDebug"
screenGui.DisplayOrder = 100
screenGui.Parent = playerGui
local frame = Instance.new("Frame")
frame.Position = UDim2.fromOffset(position.X, position.Y)
frame.Size = UDim2.fromOffset(size.X, size.Y)
frame.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
frame.BackgroundTransparency = 0.5
frame.BorderSizePixel = 2
frame.BorderColor3 = Color3.fromRGB(255, 0, 0)
frame.Parent = screenGui

API Reference
Properties
AbsolutePosition
Read Only
Not Replicated
Capabilities: Chat
ChatInputBarConfiguration.AbsolutePosition:Vector2

AbsoluteSize
Read Only
Not Replicated
Capabilities: Chat
ChatInputBarConfiguration.AbsoluteSize:Vector2

AutocompleteEnabled
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.AutocompleteEnabled:boolean

BackgroundColor3
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.BackgroundColor3:Color3

BackgroundTransparency
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.BackgroundTransparency:number

Enabled
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.Enabled:boolean

FontFace
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.FontFace:Font

IsFocused
Read Only
Not Replicated
Capabilities: Chat
ChatInputBarConfiguration.IsFocused:boolean
Code Samples
Typing Indicator Bubble
local Players = game:GetService("Players")
local TextChatService = game:GetService("TextChatService")
local ChatInputBarConfiguration = TextChatService:FindFirstChildOfClass("ChatInputBarConfiguration")
local BubbleChatConfiguration = TextChatService:FindFirstChildOfClass("BubbleChatConfiguration")
local LocalPlayer = Players.LocalPlayer
local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
-- Set up TextLabel
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.fromScale(1, 1)
textLabel.Text = ". . ."
textLabel.BackgroundColor3 = BubbleChatConfiguration.BackgroundColor3
textLabel.BorderColor3 = BubbleChatConfiguration.BackgroundColor3
textLabel.BackgroundTransparency = BubbleChatConfiguration.BackgroundTransparency
textLabel.TextColor3 = BubbleChatConfiguration.TextColor3
textLabel.FontFace = BubbleChatConfiguration.FontFace
textLabel.TextSize = BubbleChatConfiguration.TextSize
-- Parent a UICorner to the TextLabel to have rounded corners
local uiCorner = Instance.new("UICorner")
uiCorner.CornerRadius = UDim.new(0, 12)
uiCorner.Parent = textLabel
-- Set up Billboard
local typingIndicatorBillboard = Instance.new("BillboardGui")
typingIndicatorBillboard.Enabled = false
typingIndicatorBillboard.Size = UDim2.fromScale(1, 1)
typingIndicatorBillboard.StudsOffsetWorldSpace = Vector3.new(-0, 4, 0)
typingIndicatorBillboard.Adornee = Character
textLabel.Parent = typingIndicatorBillboard
typingIndicatorBillboard.Parent = LocalPlayer:FindFirstChildOfClass("PlayerGui")
ChatInputBarConfiguration:GetPropertyChangedSignal("IsFocused"):Connect(function()
-- Enable the typing indicator when the input bar is focused and disable otherwise
typingIndicatorBillboard.Enabled = ChatInputBarConfiguration.IsFocused
end)

KeyboardKeyCode
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.KeyboardKeyCode:Enum.KeyCode

PlaceholderColor3
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.PlaceholderColor3:Color3

TargetTextChannel
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.TargetTextChannel:TextChannel

TextBox
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.TextBox:TextBox

TextColor3
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.TextColor3:Color3

TextSize
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.TextSize:number

TextStrokeColor3
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.TextStrokeColor3:Color3

TextStrokeTransparency
Read Parallel
Capabilities: Chat
ChatInputBarConfiguration.TextStrokeTransparency:number

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.