You’ve seen this.
“Typing…” appears.
You wait.
Still typing…
10 seconds…
30 seconds…
…and then?
Nothing.
👉 No message. No reply. Just silence.
So I turned this into a coding challenge.
And surprisingly… it’s not just emotional.
It’s a real system problem.
😂 The Problem
The logic seems simple:
- User starts typing → show “Typing…”
- User stops typing → remove it
That’s it.
But real systems don’t behave perfectly.
⚠️ What Goes Wrong?
In real-world apps:
• User stops typing but event is never sent
• Network delay causes stale state
• System keeps showing “Typing…” forever
• No timeout to clean up
And suddenly:
👉 You’re waiting for a message that will never come 😭
🧠 What I Observed
When I explored this problem:
- Basic implementations rely fully on events
- But events can fail or get delayed
- No fallback mechanism
- Stale typing status stays forever
The code works.
But the experience?
👉 Completely broken.
🔍 The Real Issue
This is not just UI.
It’s about:
• Real-time systems
• Event reliability
• State consistency
• Handling failure cases
Because:
👉 Not every “stop typing” event reaches the server
💡 What a Better System Needs
A proper typing indicator should:
- Add timeout (auto-clear after a few seconds)
- Refresh typing status continuously
- Handle missed events
- Use real-time communication (WebSockets)
This ensures:
👉 No ghost typing
👉 No fake expectations
🔥 Try My Challenge
I turned this into a fun challenge on VibeCode Arena.
👉 Try it here:
https://vibecodearena.ai/duel/8a69e643-a7cc-43c5-8829-ca9ba8914a98
Can you:
- Fix “Typing forever” bug?
- Handle stale state?
- Build a reliable system?
🎯 Final Thought
Some bugs crash systems.
Some bugs stress users.
And this one…
👉 Does both.
So tell me 👇
Were they really typing… or just thinking? 😭

Top comments (0)