Blog

How to Build a WhatsApp Clone with Bubble

Sep 20, 2025

Calculating...

Calculating...

Harish Malhi - founder of Goodspeed

Founder of Goodspeed

How to Build a WhatsApp Clone with Bubble – Goodspeed Studio blog

How to build a WhatsApp-style messaging application on Bubble covering private chats, group conversations, media sharing, read receipts, and contact management.

How to build a WhatsApp-style messaging application on Bubble covering private chats, group conversations, media sharing, read receipts, and contact management.

What WhatsApp Actually Does

WhatsApp is a messaging platform focused on private one-to-one and group conversations. Users send text messages, images, videos, voice notes, documents, and location pins. The app shows delivery status (sent, delivered, read) with tick indicators. Group chats support up to 256 participants with admin controls. Status updates (similar to Stories) let users share disappearing photos and text with their contacts.

WhatsApp's simplicity is its strength. There are no algorithms, no feeds, no discovery features. You message people you know. The contact list is synced from your phone's address book, which means the social graph is built on existing relationships rather than platform-created connections. End-to-end encryption is a core selling point but not something you need to replicate at the application level for an MVP.

Core Features to Build

Your MVP needs a contact or user system where people can find and add contacts by username or phone number. One-to-one conversations with text and image messages. Group conversations with the ability to add and remove members. Message status indicators showing sent, delivered, and read states. A conversation list sorted by most recent message. User profiles with name, avatar, and status text. Typing indicators showing when the other person is composing a message.

Media sharing including images and documents is important for a messaging app to feel complete. Voice notes can be phased in later but are a frequently used feature. Push notifications for new messages are essential for engagement since messaging apps live and die on notification responsiveness.

Data Types in Bubble

The core data types are User, Conversation, Message, Participant, Contact, and GroupSettings. User extends Bubble's built-in user with display name, avatar, phone number, about text, last seen timestamp, and online status (yes/no). Update the last seen timestamp whenever the user navigates within the app using a page load workflow.

Conversation is the central type that represents both one-to-one and group chats. Fields include conversation type (private or group), group name (for groups), group icon (for groups), last message text (denormalised for the conversation list), last message time, created date, and created by (User reference). Storing the last message text and time directly on the Conversation avoids an expensive search query when rendering the conversation list.

Message belongs to a Conversation and a sender (User reference) with fields for body text, message type (text, image, document, system), attachment (file), status (sent, delivered, read), created date, and is deleted flag. Do not actually delete messages from the database when a user deletes them. Instead, set is deleted to true and show a placeholder text on the front end.

Participant links a User to a Conversation with fields for role (member or admin, relevant for groups), joined date, last read message (Message reference for tracking read status), unread count (number), is muted flag, and is archived flag. This type is critical for managing each user's view of a conversation independently.

Contact links two Users together to represent a mutual or one-way contact relationship. Fields include owner (User), contact (User), custom name (optional nickname), and blocked flag. GroupSettings is optional and adds group-specific fields like description, invite link, and who can send messages (all members or admins only).

Messaging Architecture

When a user sends a message, the workflow creates a new Message thing with status set to sent, updates the Conversation's last message text and time, and increments the unread count on every other Participant in that conversation. The message status changes to delivered when the recipient's app loads the conversation list (indicating they have received but not opened the chat). It changes to read when the recipient opens the specific conversation and views the message.

Implement read receipts by updating the Participant's last read message field when they open a conversation. Then search for Messages in that conversation created before the last read message and update their status to read. Run this as a backend workflow to avoid slowing down the page load. On the sender's side, display single tick for sent, double tick for delivered, and blue double tick for read based on the message's status field.

For the conversation list, use a repeating group with data source set to search for Participants where user equals current user, sorted by the parent Conversation's last message time descending. This gives you the list of conversations the current user is in, sorted by most recent activity. Display the conversation name (contact name for private chats, group name for groups), last message text, time, and unread count badge.

Typing indicators work by setting a is typing field on the Participant type. When a user starts typing in the message input, set their Participant's is typing to yes. Use a custom event with a 3-second delay to set it back to no. On the other side, show a typing indicator when the other participant's is typing field is yes, using live updates on the conversation page.

Group Chat Implementation

Group chats use the same Conversation and Message types but with multiple Participants. Creating a group involves creating a Conversation with type set to group, a group name, and Participant entries for each invited user. The group creator gets the admin role on their Participant entry.

Admin actions include adding members (creating new Participant entries), removing members (deleting their Participant entry), promoting members to admin, changing the group name and icon, and setting message permissions. When an admin action occurs, create a system Message with type set to system and body text describing the action (for example, "Harish added Alex to the group"). These system messages display differently in the UI with centred grey text instead of the standard message bubble.

Group member management uses a separate page or popup showing all Participants with their roles. Admins see action buttons next to each member. Non-admins can leave the group, which deletes their Participant entry and creates a system message. If the last admin leaves, either promote the oldest member to admin automatically or prevent the action.

UI Components and Layout

The layout follows WhatsApp's two-panel structure on desktop: conversation list on the left, active chat on the right. On mobile, these are separate pages that navigate between each other. The conversation list panel shows a search bar at the top, then a repeating group of conversation cards with avatar, name, last message preview, time, and unread badge.

The chat panel has a header with the contact or group name, online status or member count, and action buttons (call, search, menu). The message area is a repeating group scrolled to the bottom showing messages with bubbles aligned left for received and right for sent. Each bubble shows the message text, timestamp, and status ticks for sent messages. Group messages show the sender's name above their bubble in a colour-coded format.

The message input area at the bottom includes a text input, attachment button (opening a file picker), emoji button (opening an emoji picker popup), and send button. The send button should also support pressing Enter to send. Use a workflow triggered by the input's key press event to detect the Enter key.

Message bubbles use conditional formatting: green or teal background for sent messages, white or light grey for received. Images in messages display inline within the bubble with a click to expand into a full-screen viewer. Use a popup with the image element set to fill the space for the viewer.

Privacy Rules and Permissions

Messages are only visible to participants of their conversation. Set privacy rules on Message to check that the current user has a Participant entry in the message's Conversation. Conversations are only visible to their participants via the same check. User profiles are visible to contacts only, or to everyone depending on the user's privacy settings. The last seen timestamp and online status should be configurable per user (share with everyone, contacts only, or nobody).

Block functionality works through the Contact type's blocked flag. When a user blocks a contact, set the flag to true. In searches for conversations and messages involving blocked contacts, add a constraint excluding blocked contacts. The blocked user should not see updated last seen or online status for the user who blocked them.

What to Skip in V1

Skip end-to-end encryption (Bubble handles data security at the platform level), voice and video calls (requires WebRTC), disappearing messages, status updates (Stories), payment transfers, location sharing, and multi-device sync. These are all features WhatsApp added over a decade of development. Your V1 should prove that users want a messaging platform with your specific value proposition, whether that is a niche community focus, business features, or regional targeting.

Cost and Timeline

A WhatsApp clone with private chats, group messaging, media sharing, and read receipts takes 6 to 9 weeks for an experienced Bubble developer. The read receipt system and typing indicators add complexity beyond basic messaging. Bubble's Growth plan at $119 per month handles moderate message volumes. For push notifications, integrate OneSignal (free tier available) via API Connector.

DIY costs run $500 to $700 for the first quarter. Hiring a developer costs $7,000 to $16,000. If you need a companion mobile app, consider wrapping the Bubble app with a tool like BDK Native or building native apps that connect to Bubble's API, which adds $5,000 to $15,000.

DIY vs Hiring a Bubble Developer

Messaging apps require careful attention to performance and real-time updates. The conversation list, message loading, and status updates all need to be optimised to feel snappy. Common mistakes include loading too many messages at once, not denormalising the last message on the conversation, and running read receipt updates on the front end instead of backend workflows.

An experienced Bubble developer will set up efficient data loading patterns, implement proper read receipt tracking without slowing down the UI, and configure privacy rules that actually secure conversations at the data level. For a messaging app where reliability and speed are the product, professional development is worth the investment.

Ready to Build?

Related guides:

  • Bubble twilio integration guide

  • Bubble firebase integration guide

A messaging platform needs to be fast and reliable from day one. Talk to Goodspeed Studio about building your messaging app on Bubble with proper real-time performance and message delivery tracking.

Ship Your Messaging Platform

WhatsApp's messaging model maps well to Bubble's data architecture. The key challenges are real-time message delivery, read receipt tracking, and keeping the conversation list performant as message volume grows. Nail the one-to-one chat experience first, add groups, and expand with media and notifications. Talk to our Bubble developers.

Harish Malhi - founder of Goodspeed

Harish Malhi

Founder of Goodspeed

Harish Malhi is the founder of Goodspeed, one of the top-rated Bubble agencies globally and winner of Bubble’s Agency of the Year award in 2024. He left Google to launch his first app, Diaspo, built entirely on Bubble, which gained press coverage from the BBC, ITV and more. Since then, he has helped ship over 200 products using Bubble, Framer, n8n and more - from internal tools to full-scale SaaS platforms. Harish now leads a team that helps founders and operators replace clunky workflows with fast, flexible software without writing a line of code.

Frequently Asked Questions (FAQs)

Can Bubble handle real-time messaging like WhatsApp?

Bubble's live updates provide near-real-time messaging with 1 to 3 second delays. For a messaging app, this is acceptable for most use cases. Integrate Pusher or Ably for sub-second delivery if needed.

How do I implement read receipts in Bubble?

Track a last read message reference on each participant. When a user opens a conversation, update their last read field and run a backend workflow to set message statuses to read. Display single, double, or blue ticks based on the status field.

Can I build group messaging in Bubble?

Yes. Use the same Conversation and Message types with multiple Participant entries. Admin controls are managed through a role field on the Participant type. System messages log admin actions like adding or removing members.

How do I handle message performance in a Bubble chat app?

Denormalise last message text and time on the Conversation type. Limit message repeating groups to 50 items with load-more pagination. Run read receipt updates as backend workflows to keep the UI responsive.

Can I add push notifications to a Bubble messaging app?

Yes. Integrate OneSignal via Bubble's API Connector plugin. Trigger notification sends in backend workflows whenever a new message is created. OneSignal handles delivery to iOS and Android devices.

How much does a WhatsApp clone cost on Bubble?

DIY costs $500 to $700 for the first quarter. Hiring an experienced Bubble developer runs $7,000 to $16,000. Add $5,000 to $15,000 if you need a native mobile app wrapper alongside the web version.

The smartest AI builds, in your inbox

Every week, you'll get first hand insights of building with no code and AI so you get a competitive advantage