LowCodeStacks™
Sign in

NewPower Apps · canvas componentData display✓ Tested in StudioMIT License

Chat thread

Messages from a table as bubbles, yours on the right in your accent colour and theirs on the left with initials, each with its time and sent, delivered, read or not sent with Retry; a typing indicator with bouncing dots; a composer with OnSend; light and dark, a new bubble popping in.

Name in Studio
lcsChatThread
Version
0.1.0
Properties
13 inputs · 3 outputs · 2 events · 3 actions
Sign in to copy

Free with an account

No ratings yet

Sign in to copy

Variations

As it is when you paste it, with every input at its default.

Hi, the projector in room 4 won't connect. Can someone take a look before the 2 o'clock?

6:12 AM

On it. Is it the HDMI or the wireless?

6:14 AM · Read

Wireless. The HDMI works but the cable is too short for the lectern.

6:16 AM

I'll bring a longer cable and reset the receiver. Ten minutes.

6:52 AM · Delivered

Draft: "" · Count: 4 · LastKey: m4

Formulas on this screen

Set the same ones in Studio to try it the same way; there, each Notify shows its event in a banner, which this preview leaves out so nothing covers the component. The instance names are the ones Studio gives the first copy on a screen.

  • lcsChatThread_1.OnSend = Collect(colChat, {Key: Text(GUID()), Text: Text, From: "me", When: Now(), Status: "sent", Initials: ""}); Notify("Sent: " & Text)

  • lcsChatThread_1.OnRetry = Notify("Retry " & Key)

  • Text1.Text = "Draft: """ & lcsChatThread_1.Draft & """ · Count: " & lcsChatThread_1.Count & " · LastKey: " & lcsChatThread_1.LastKey

A web replica that behaves as the component does in Power Apps. In Studio it uses Microsoft's controls, which can look slightly different.

Add it in five steps

  1. In Power Apps Studio, open Settings > Updates and check that Modern controls and themes and Enhanced component properties are on.
  2. Open the Components tab in the tree view and select New component.
  3. Select an empty part of Studio, so the new component isn't selected.
  4. Copy the YAML on this page and press Ctrl+V. lcsChatThread appears with all its properties.
  5. On a screen, insert it from Insert > Custom > lcsChatThread.

What it needs

  • No premium licence: standard controls, no connectors
  • Modern controls and themes: on
  • Enhanced component properties: on
  • Tested in Power Apps Studio 3.26094.9 on November 2, 2026
  • Version 0.1.0

Properties (21)

Read from the component's own YAML, so they always match what you paste.

Inputs
PropertyKindTypeDefault
Messages

The messages, as a table with Key, Text, From, When (a date and time), Status (sent, delivered, read or failed) and Initials columns, oldest first.

InputTableTable({Key: "m1", Text: "Hi, the projector in room 4 won't connect. Can someone take a look before the 2 o'clock?", From: "Dana Kaur", When: DateAdd(Now(), -42, TimeUnit.Minutes), Status: "read", Initials: "DK"}, {Key: "m2", Text: "On it. Is it the HDMI or the wireless?", From: "me", When: DateAdd(Now(), -40, TimeUnit.Minutes), Status: "read", Initials: ""}, {Key: "m3", Text: "Wireless. The HDMI works but the cable is too short for the lectern.", From: "Dana Kaur", When: DateAdd(Now(), -38, TimeUnit.Minutes), Status: "read", Initials: "DK"}, {Key: "m4", Text: "I'll bring a longer cable and reset the receiver. Ten minutes.", From: "me", When: DateAdd(Now(), -2, TimeUnit.Minutes), Status: "delivered", Initials: ""})
Me

The From value that is the person using the app; those messages sit on the right in your accent colour.

InputText"me"
IsTyping

Shows a bubble of bouncing dots under the last message, for when the other side is typing or an agent is thinking.

InputBooleanfalse
TypingName

Who is typing, shown beside the dots. Empty shows the dots alone.

InputText""
Placeholder

The hint in the composer.

InputText"Write a message"
ShowComposer

Shows the composer with its Send button. Off, the thread is read-only.

InputBooleantrue

Guide

Use lcsChatThread for a conversation on a case, a help desk chat, the back-and-forth with an agent built in Copilot Studio, or any screen where two sides take turns. The usual build is a gallery of labels that all look the same; this component gives the conversation its shape:

  • Bubbles from a table of Key, Text, From, When, Status and Initials: yours (From equal to Me) on the right in your accent colour, theirs on the left in grey with a circle of initials on the first message of each run; the bubbles are well rounded, with a nearly square bottom corner on the sender's side for the first bubble of a run;
  • Delivery state under your messages: sent, delivered, read, or not sent with Retry, which raises OnRetry(Key, Text);
  • A typing indicator of bouncing dots, with a name, for when the other side is typing or an agent is thinking;
  • A composer with a Send button that raises OnSend(Text) and clears itself; SetDraft for a suggested reply, Draft out while they type;
  • Newest at the bottom as chats read, or NewestFirst so ScrollToLatest always reaches the latest.

Did it work for you?

No ratings yet.Nobody has said it worked in their app yet.

Sign in to rate it or to say it worked in your app.

Comments

No comments yet. Share how you used it, or ask something.

Sign in to comment or reply. Comments show under a display name you choose, never your email.