Need a Snapchat-Style “Seen Then Disappear” Inbox in Adalo

What I’m trying to build is a combination of Snapchat’s UX and X (Twitter)’s timeline UI.

Users open an Inbox and scroll through message cards in a vertical feed.

When a message card reaches around the center of the screen and remains visible for a short period of time, I want a “Seen” icon to appear on that specific card.

However, I do not want the message to disappear immediately.

As long as the user stays on the Inbox page, they should still be able to react to or reply to that message as many times as they want.

Only when the user leaves the Inbox page should messages that have already been seen disappear from the Inbox.

Messages that were never actually viewed should remain.

For example:

  • A user has 10 unread messages.

  • Only the first 3 are visible on screen.

  • The user reads those 3 messages.

  • Then leaves the Inbox page.

In that case, I want only those 3 messages to be marked as Seen = true and removed from the Inbox. The remaining 7 messages should stay because they were never viewed.

Ideally, I would like something like this:

  • A list item reaches roughly the center of the screen.

  • It remains visible for 2+ seconds.

  • That specific message is marked as Seen = true.

  • When the user later leaves the Inbox page, only messages with Seen = true disappear from the Inbox.

I understand this may not be possible with standard Adalo functionality.

If so, I would love to hear about any workarounds, custom components, external databases, Make scenarios, or alternative UX approaches that could get me as close as possible to this experience while staying inside Adalo.

Hi @Yuki.O,

So the list doesn’t have any actions which not directs them to a chat page? (for chat, it’s through the send tab which you’re trying to setup in the other forum thread?) It should display new messages, change a label in the list to ‘seen’, and remove the seen messages once the user leave the page?

Thank you and have a great day!

Hi @Dilon I’ve solved this problem by using two countdown component! Thanks for our help. Appreciate it.