# 🌊 Stream of typing effect

**URL:** <https://community.glideapps.com/t/stream-of-typing-effect/72796>\
**Category:** Project Showcase\
**Tags:** custom-css\
**Created:** [April 22, 2024, 3:59pm UTC](https://community.glideapps.com/t/stream-of-typing-effect/72796 "2024-04-22T15:59:21Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Eric\_Penn](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/eric_penn/32/73888_2.png) [@Eric\_Penn](https://community.glideapps.com/u/Eric_Penn)\
**Post date:** [April 22, 2024, 3:59pm UTC](https://community.glideapps.com/t/stream-of-typing-effect/72796/1 "2024-04-22T15:59:21Z")

</div>

Here’s a neat trick to level up your app with a stream of typing effect. Check out the all new [https://css-library.glide.page](https://css-library.glide.page) for this code and many more!

https://www.loom.com/embed/e42d8435ac2945ecb641397d52bcf250?sid=65c43ce6-c619-40b6-9fad-9e6373912d3f

Here is the HTML

```auto
<div style="
 text-align: center;
 width: 100%;
 margin-left: auto;
 margin-right: auto;
">
 <b class="writer" style="
  font-size: 40px; 
  color: black; 
  display: inline-block; 
 ">{Your Text Here}</b>
</div>

```

And Here is the CSS

```auto
.writer {
 display: inline-block;
  overflow: hidden;
  border-right: .07em solid black;
  white-space: nowrap;
  letter-spacing: .03em;
  line-height: 1.2;
  padding: 0.003em 0;
  width: auto;
  max-width: 0;
  animation:
    typing 2.5s steps(40, end) forwards,
    blink-caret .75s step-end infinite;
}

@keyframes typing {
  from { max-width: 0; }
  to { max-width: 100%; }
}

@keyframes blink-caret {
  from, to { border-color: transparent; }
  50% { border-color: black; }
}

```

---

<div class="post-metadata">

**Author:** ![Joe\_Gabriele](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/joe_gabriele/32/57595_2.png) [@Joe\_Gabriele](https://community.glideapps.com/u/Joe_Gabriele)\
**Post date:** [April 22, 2024, 5:12pm UTC](https://community.glideapps.com/t/stream-of-typing-effect/72796/2 "2024-04-22T17:12:46Z")

</div>

Wish we could have our AI responses be provided in this type writer style vs waiting for it to finish completely!

---

<div class="post-metadata">

**Author:** ![Eric\_Penn](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/eric_penn/32/73888_2.png) [@Eric\_Penn](https://community.glideapps.com/u/Eric_Penn)\
**Post date:** [April 22, 2024, 5:17pm UTC](https://community.glideapps.com/t/stream-of-typing-effect/72796/3 "2024-04-22T17:17:56Z")

</div>

Stream of API effect… now that would be sporty!

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [April 22, 2024, 11:20pm UTC](https://community.glideapps.com/t/stream-of-typing-effect/72796/4 "2024-04-22T23:20:55Z")

</div>

Streaming would be super neat, but I wonder how it affects the API usage… It would be disastrous if you have a long response and the API calls kill your usage.

---

<div class="post-metadata">

**Author:** ![Eric\_Penn](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/eric_penn/32/73888_2.png) [@Eric\_Penn](https://community.glideapps.com/u/Eric_Penn)\
**Post date:** [April 23, 2024, 1:16pm UTC](https://community.glideapps.com/t/stream-of-typing-effect/72796/5 "2024-04-23T13:16:17Z")

</div>

Perhaps Glide could still limit the number of results per call… a stream limit that would truncate the response. If not it’s kind of like a Make scenario that accidentally fires 20k operations… buyer beware!

---

<div class="post-metadata">

**Author:** ![nathanaelb](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/nathanaelb/32/43079_2.png) [@nathanaelb](https://community.glideapps.com/u/nathanaelb)\
**Post date:** [April 25, 2024, 1:47pm UTC](https://community.glideapps.com/t/stream-of-typing-effect/72796/6 "2024-04-25T13:47:09Z")

</div>

This is so neat!

Am I actually going to start playing around with all of these wondrous acronyms? 😅

---

<div class="post-metadata">

**Author:** ![Eric\_Penn](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/eric_penn/32/73888_2.png) [@Eric\_Penn](https://community.glideapps.com/u/Eric_Penn)\
**Post date:** [April 25, 2024, 2:19pm UTC](https://community.glideapps.com/t/stream-of-typing-effect/72796/7 "2024-04-25T14:19:33Z")

</div>

You Only Live Once

---

<div class="post-metadata">

**Author:** ![nathanaelb](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/nathanaelb/32/43079_2.png) [@nathanaelb](https://community.glideapps.com/u/nathanaelb)\
**Post date:** [April 25, 2024, 2:20pm UTC](https://community.glideapps.com/t/stream-of-typing-effect/72796/8 "2024-04-25T14:20:54Z")

</div>

You are so right! Life’s too short for acronyms 🤭

---

<div class="post-metadata">

**Author:** ![Lennart\_Kooy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/lennart_kooy/32/65097_2.png) [@Lennart\_Kooy](https://community.glideapps.com/u/Lennart_Kooy)\
**Post date:** [August 30, 2024, 2:46pm UTC](https://community.glideapps.com/t/stream-of-typing-effect/72796/9 "2024-08-30T14:46:45Z")

</div>

Hi @Eric_Penn I implemented the effect. it’s great. tnx!  
I did not get the part of the ‘now formula’ to refresh the text though. could you give me an idication to get this rolling?

thanks a lot

---

<div class="post-metadata">

**Author:** ![Eric\_Penn](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/eric_penn/32/73888_2.png) [@Eric\_Penn](https://community.glideapps.com/u/Eric_Penn)\
**Post date:** [August 30, 2024, 3:28pm UTC](https://community.glideapps.com/t/stream-of-typing-effect/72796/10 "2024-08-30T15:28:02Z")

</div>

Hey @Lennart_Kooy glad you liked it!

What I did to get the text to refresh is use the now formula as the seed of a Roll Dice column. Then I used the Roll Dice column for the `Row` in a Single Value column and targeted a table with a few different phrases.

I hope this helps!

 ![Screenshot 2024-08-30 at 11.39.55 AM](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/0/4/0495cf9d83ef53607f5fe99a5376f6aacca200f7.png)

 ![Screenshot 2024-08-30 at 11.26.32 AM](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/3/d/3d59c0ef20d266245ebe523512f4135babf04e50.png)

 ![Screenshot 2024-08-30 at 11.24.56 AM](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/f/a/fa0b6e1e01fe5add6cd3e43187abfcab5db41ab6.png)

---

<div class="post-metadata">

**Author:** ![Lennart\_Kooy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/lennart_kooy/32/65097_2.png) [@Lennart\_Kooy](https://community.glideapps.com/u/Lennart_Kooy)\
**Post date:** [September 22, 2024, 5:59pm UTC](https://community.glideapps.com/t/stream-of-typing-effect/72796/11 "2024-09-22T17:59:42Z")

</div>

never got to thankyou/deploy this.

for future fans: it took me a while to realize that I had to create a template column too as final input (to JOIN html code with my {dynamic diced field}) but it seems I am getting there

tnx again!!!
