MARKETPLACE
PLUGINS
FLUID CHAT (PRO)
Fluid Chat (Pro) logo

Fluid Chat (Pro)

Published December 2025
   β€’    Updated May 2026

Plugin details

πŸš€ Stop fighting with Repeating Groups. Fluid Chat is a professional, high-performance visual element designed to replace the standard Bubble repeating group for messaging apps. It renders your entire conversation using a virtualized list, ensuring 60fps scrolling even with thousands of messages.
🌊 Native-Like Experience It mimics the behavior of top-tier apps like WhatsApp, Telegram, and iMessage. Content starts at the bottom (inverse scroll) and stays anchored there when new messages arrive.

Fluid Chat Native πŸ’¬
Transform your Bubble application with a premium, native-feeling messaging experience. Fluid Chat Native is the ultimate All-in-One chat element, designed to look and feel exactly like top-tier apps such as WhatsApp and iMessage.

No more clunky repeating groups or messy inputs! This single element handles the entire chat UI, media uploads, voice recording, and real-time interactions with incredible performance and smooth animations.

✨ Key Features:

πŸ“± Native Layout: "Pill" style text input, smart scroll-to-bottom, and modern message bubbles.

🎀 Built-in Voice Recorder: Record audio directly inside the input bar with a live timer and visualizer playback.

πŸ“Έ Image Uploads & Previews: Seamless image selection with a beautiful in-chat preview and cancel button.

@ Smart Mentions: Type @ to open a floating, filterable dropdown of users. Mentions are automatically highlighted in the chat!

βœ… Read Receipts: Grey and Blue ticks indicating sent and read status based on your custom view counts.

πŸ‘† Context Menu (Long Press/Right-Click): Beautiful floating menu with native icons for Reply, Forward, Edit, Delete, and Emoji Reactions.

✍️ Typing Indicators: Animated "is typing..." bubbles.

🎨 Highly Customizable: Change background colors, images, bubble colors, and highlight colors easily via properties.

πŸ’¬ Contextual Replies: Users can now reply directly to specific messages! Features a sleek preview box above the input and a clickable quote block inside the message bubble that smoothly scrolls to the original message.

πŸ–ΌοΈ Multi-Image Galleries: Say goodbye to single-image uploads! Users can now select and upload multiple images at once. The plugin intelligently auto-generates beautiful, responsive CSS photo grids (albums) directly inside the chat bubble.

πŸ˜€ Native Emoji Picker: A lightning-fast, built-in emoji panel right inside the chat interface. No more relying on clunky OS keyboards!

βž• Free Reactions: Expanded the long-press context menu with a new "+" button, allowing users to react to messages with any emoji from the picker.

⚑ Performance Boost: Upgraded parallel uploading (Promise.all) for multiple files, ensuring lightning-fast AWS uploads.

Instead of just blindly stacking emojis, the plugin's JavaScript engine now links reactions to the Current User's ID. This unlocks:

Smart Toggling: Users can click their own reaction to remove it, or click a different emoji to swap it instantly.

Premium UI Highlights: The Current User's active reaction gets a sleek blue background/border highlight, making it obvious what they reacted with.

CSS Overflow Fix: Fixed a layout bug where extremely long strings (like URLs or "hahahahaha" without spaces) would overflow the chat bubble on mobile screens. Word-wrapping is now perfectly contained!


✨ What's New in V5:

πŸ“Ž Multi-File Uploads: Users can now attach documents (PDF, DOCX, ZIP, CSV, XLS). The plugin automatically generates a sleek, clickable "File Card" inside the chat bubble with the original file name, extension, and a native download button.

🎧 Pro Audio Player: Your voice notes just got a massive upgrade. Users can now change playback speed (1x, 1.5x, 2x) with a single click, and the waveform visualizer is now fully interactiveβ€”click anywhere on the bars to skip/seek to that exact second!

πŸ”— Rich URL Previews (Snippets): Pasting a link now automatically generates a beautiful preview card below the message, fetching the website's image, title, and description. It includes a custom, zero-delay native bypass for YouTube links to prevent API rate limits!

πŸ› Input Overflow Fix: Fixed a UI bug where extremely long words (without spaces) would break the Flexbox layout of the input bar on mobile devices.


Demo Test: https://demo-app-56978.bubbleapps.io/version-test/fluidchat_pro/1765242624089x959822174042466200

Editor: https://bubble.io/page?id=demo-app-56978&test_plugin=1765219101977x460573439119589400_current&tab=Design&name=fluidchat_pro&ai_generated=true&type=page&elements=bTKlL

$15

One time  β€’  Or  $5/mo

stars   β€’   0 ratings
5 installs  
This plugin does not collect or track your personal data.

Platform

Web

Contributor details

NoCoddo logo
NoCoddo
Joined 2025   β€’   96 Plugins
View contributor profile

Instructions

How to use Fluid Chat Native:
Place the Element: Drag and drop the Fluid Chat Native element onto your page. Make it fill the desired height and width (it's fully responsive!).

Load your Data (Update Action/Fields): In the property editor, map your database "Messages" to the corresponding lists (Text, Images, Audios, Creator IDs, Timestamps, etc.). Ensure all lists are sorted the exact same way (usually by Creation Date).

Setup Mentions: Map your "Users" data to the three mention fields (mention_names_list, mention_ids_list, mention_avatars_list) so the @ dropdown knows who to display.

Handle Sending (Workflow): Create a workflow: When Fluid Chat Native's message_sent is triggered. Use the exposed states (draft_text, draft_image_base64, draft_audio_base64) to create a new Message in your database.Β΄

πŸ“‚ How to handle Files (The String Engine):
To keep your Bubble database incredibly lightweight, Fluid Chat uses a powerful "Nested String" architecture instead of clunky database relations.

Your database should have a single text field for files (e.g., Files_List) and another for file names (e.g., Files_Names).

When loading the chat, feed your list of messages into the plugin using the :formatted as text operator.

The Golden Rule: Separate different messages using ||. If a single message contains multiple uploaded files, separate those files using a comma ,.

Example Output for the Plugin: url1.pdf,url2.pdf || url3.docx || url4.zip,url5.pdf

βš™οΈ Workflow for Sending Files/Audio:
The plugin unifies ALL media (Voice Notes, PDFs, Images) into a single event: A message is sent.

Use the trigger: When Fluid Chat (Pro) A message is sent

Create your Message in the DB.

For your Files field, simply Add list = This Fluid Chat (Pro)'s uploaded_files_urls.

For your File Names field, Add list = This Fluid Chat (Pro)'s uploaded_files_names.

(Note: Voice notes recorded via the mic will automatically be outputted as a 1-item list in the file states!)

Handle Actions (Workflow): Create a workflow: When Fluid Chat Native's long_press_triggered. Check the state last_action (e.g., "delete", "edit") and modify the database item matching the selected_message_id.

How to upgrade to the new Smart Reactions System:
Good news! You do not need to change your database structure. Your Reactions field remains a standard Text field. The plugin will automatically handle backward compatibility for older messages.

To enable the new smart toggling, just update your Bubble Workflow:

Delete your old reaction workflow (the one triggered by long_press_triggered).

Create a NEW Workflow Trigger: * Select When Fluid Chat (Pro) A message reaction was toggled.

Add the Action: * Data (Things) -> Make changes to a thing.

Thing to change: Do a search for the Message where Unique ID = This Fluid Chat (Pro)'s selected_message_id.

Field to change: Set your Reactions text field = This Fluid Chat (Pro)'s updated_reactions_string.

That's it! The plugin's engine will instantly calculate the math (adding, removing, or swapping the user's emoji based on their ID) and hand you the perfect, formatted string to save!

Handle Notifications: Use the user_mentioned event and the mentioned_user_ids state to send push notifications or emails to users tagged in a message!


πŸ’¬ Setting up the Reply System:

Database: Add a new text field in your Messages database called Reply To ID.

Saving: In your "Message Sent" workflow, save the plugin's draft_reply_to_id state into this new database field.

Displaying: Map the plugin's reply_to_id_list property to Search for Messages's Reply To ID. The plugin will automatically connect the dots and draw the reply blocks!


πŸ–ΌοΈ Setting up Multi-Image Galleries (Crucial Step):
To support multiple images per message without messing up Bubble's list indexes, the images_list property is now a single Text field (not a list).

In your database, store multiple image URLs as a single text string, separated by commas (e.g., url1.jpg, url2.jpg).

In the plugin properties, map images_list using the :format as text operator on your Search for Messages:

Content to show: This Message's Images :each item's URL join with ","

Delimiter: ||

The plugin will read the commas to create the photo grids, and the || to separate messages!


πŸ’¬ How to setup the "Is Typing..." Indicator

πŸ—„οΈ Step 1: Database Setup
Instead of messing with your Messages table, create a lightweight bridge table.

Create a new Data Type called Typing_Status (or Chat_Member).

Add these 3 fields:

Conversation (Type: Your Conversation Data Type)

User (Type: User)

is_typing (Type: yes/no, Default: no)

⚑ Step 2: The Workflows
Use the plugin's exposed is_typing state to toggle this database field.

When User Starts Typing:

Event: Do when condition is true -> Fluid Chat Pro's is_typing is yes

Action: Make changes to a thing -> Search for Typing_Status (Where User = Current User & Conversation = Current Chat) -> Set is_typing = yes.

When User Stops Typing (or sends the message):

Event: Do when condition is true -> Fluid Chat Pro's is_typing is no

Action: Make changes to a thing -> Set is_typing = no.

πŸ”Œ Step 3: Plugin Configuration
Now, just tell the plugin when to show the animation on the other user's screen!

Go to the Show Typing Indicator property of the Fluid Chat Pro element.

Insert this dynamic expression:
Do a search for Typing_Status (Constraints: Conversation = Current Chat, User β‰  Current User, is_typing = yes) :count > 0

Types

This plugin can be found under the following types:
Element   β€’   Event

Categories

This plugin can be found under the following categories:
Chat   β€’   Mobile   β€’   Social Network   β€’   Visual Elements

Resources

Support contact
Tutorial

Rating and reviews

No reviews yet

This plugin has not received any reviews.
Bubble