This document charts the optimal progression of a messaging app from a likely starting place to best-in-class. It's designed to help you think about scaling your app over time, and what features to implement when. While every media app is different, consider these recommendations to achieve a best-in-class app.
Basic messaging app
A basic messaging app provides users with a foundational text-based communications experience, which may include:
Offline message support
Ensure messages can be queued when offline, with strategies for local caching and retry attempts. UI cues such as 'sending…' or 'failed to send' indicators help manage user expectations.Error handling
Offer clear, informative feedback for different failure scenarios, like network issues or blocked recipients. Include actionable steps or explanations to reduce user frustration.Notifications
Provide notifications when messages are received in the background.Firebase Cloud Messaging (FCM)
Leverage Firebase Cloud Messaging to notify the app of new messages.Spellcheck
Implement and access spell checking in your app.Accessibility
Follow Material Design guidelines to design and develop your app for accessibility.Sharing
Better messaging app
A better messaging app gives users more tools to enhance their communication and provide self-expression, including:
Emoji
Support modern emoji.Push notifications with Intent
Use payloads with Firebase Cloud Messaging (FCM) to direct users to specific conversations or sections of the app from the notification. This reduces the steps users have to take to reach important content. ()Threaded conversations
Implement replies to specific messages within group chats to maintain the context and flow of conversations. This feature is crucial for keeping group communications organized and understandable.Image keyboards, drag and drop, and other rich content
Receive rich content such as images, videos, and audio files. The API includes support for image keyboards and being a drag-and-drop target to make it easy for users to add stickers, animations, and other media to their messages. Also, make sure your app works as a drag-and-drop source to share content with other apps.Search in conversations
Enable full-text search within conversations so that users can quickly find messages, images, links, and files. Support filtering by date, person, or type of content for efficient searching.Media and file support
Integrate seamless support for sending and receiving images, videos, documents, and other files with inline previews and clear indicators for download and upload statuses.Notifications
- Wait to show the notification permission until the user is familiar with your app. Trigger the permission from a user action if possible.
- Support notification badges.
- Support direct replies in notifications.
- Make thoughtful use of notification channels, potentially including custom importance level and notification behaviors for notification channels.
- Support conversation notifications with long-lived shortcuts so users can add people and group shortcuts to their homescreens.
Advanced Firebase Cloud Messaging (FCM)
Make use of advanced Firebase Cloud Messaging features such as data payloads to minimize latency and expensive server round trips.Read receipts
Provide the option for users to manage the visibility of read receipts. This could be a simple toggle in the settings, allowing users to choose privacy over acknowledgment.
Best messaging app
The best messaging app builds on the previous recommendations to create a seamless multidevice experience for users, along with more advanced expressive capabilities, including:
Emoji picker
Support the emoji picker.Simplified login
Invest in seamless identity across surfaces using CredentialManager with either Passkeys or federated sign-in.End-to-end encryption
Implement industry-standard encryption protocols to ensure that messages are secure and only readable by the intended recipient.Add and edit rich content
Add and edit rich content to text previews when sharing.Synchronization across devices
Enable users to access their conversations cohesively across multiple devices, ensuring that their communication experience is seamless, whether they're on their phone, tablet, or computer.Check out the codelab to create a chat app with Firebase Realtime Database.
Message reactions
Allow users to react to messages with emoji or custom graphics, providing a quick and fun way to respond without typing out a message.Message editing and deletion
Give users control over their messages after sending, including editing and deletion within a specified time frame.Customizable notifications
Offer detailed customization options for notifications, including sounds, vibration patterns, and LED colors, on a per-conversation or per-contact basis. Check out Create a custom notification layout.Conversation bubbles
Support bubbles for conversations.Direct share targets
Provide direct share targets to allow your users to share directly with contacts within your app.Animate the software keyboard
Control and animate the software keyboard for extra polish.Voice and video chat
Incorporate high-quality, real-time voice and video communication capabilities. The Jetpack Telecom Library includes helpful features like dedicated foreground service support, audio routing, and cross-device capabilities between phones, watches, cars, and more, while technologies like WebRTC can provide peer-to-peer connectivity.Wear OS app
Build a Wear OS app to help people stay connected from their smartwatch.