PING
A React Native app with real-time messaging
PING provides users with a seamless chat experience where they can send messages, share images, and their location. The app uses Google Firebase for real-time data storage and authentication.

Project Objective
The goal of PING is to provide a seamless chat experience with features like:
- Anonymous login via Firebase Authentication
- Support for sending images and location sharing
- Offline message storage using AsyncStorage
- Real-time messaging with Firestore
Technology Behind PING
- Expo - Simplified development and testing
- AsyncStorage - Local storage for offline functionality
- Gifted Chat - Library for chat UI components
- Firebase Firestore - Real-time cloud database
- Firebase Authentication - Secure user login
Case Study – PING
Introduction
Project Overview
PING is a cross-platform React Native chat application designed to provide users with a real-time messaging experience, including the ability to send text messages, share images, and transmit location data. Developed using Expo and backed by Google Firebase, the app leverages several modern mobile development tools to create a seamless and reliable chat interface.
- Project Type: This project was built as part of a mobile development course and further refined as a personal portfolio project to explore real-time communication and cross-platform development.
- Duration: 2 weeks
- Tech Stack: React Native, Expo, Firebase (Database, Auth, Storage), Gifted Chat
- Role: Sole developer — responsible for UI design, Firebase integration, testing, and performance optimization
In this case study, you will learn how I designed and implemented the core features of this mobile app, navigated real-time data challenges, and ensured a smooth user experience on both Android and iOS devices.

Process & Approach
Laying the Foundation with Expo & Firebase
I started by setting up the development environment using Expo, which simplified deployment and allowed me to test rapidly on both Android and iOS simulators. Firebase was integrated to handle several core functions:
- Anonymous Authentication: Users are signed in automatically with Firebase Auth, requiring no user input.
- Real-time Database: Chat messages are stored and synced via Cloud Firestore, updating in real time.
- Cloud Storage: Uploaded images are stored securely and efficiently in Firebase Storage.
Implementing the Chat Interface with Gifted Chat
To streamline the user interface and reduce development overhead, I used the Gifted Chat library.
It provided robust out-of-the-box components for chat bubbles, avatars, timestamps, and message input—all customizable.
Key functionality added:
- Sending and receiving text messages.
- Uploading and displaying image attachments.
- Sharing real-time location data through the device's GPS
I customized Gifted Chat to support these features and connected each message type to Firebase storage and database layers.
Offline Data Storage
Using AsyncStorage, I implemented local caching so users could view previous messages even without an internet connection. This was critical for maintaining a consistent user experience in areas with poor connectivity.
Overcoming Development Challenges
- Challenge: Managing Firebase's real-time updates alongside local state without data duplication
Solution: Used snapshot listeners with precise message deduplication logic to ensure accurate syncs. - Challenge: Sending images and location data reliably across devices
Solution: Created distinct upload and send flows using Firebase Storage and native location services through Expo's Location API. - Challenge: Ensuring performance on low-end devices
Solution: Used FlatList optimizations within Gifted Chat and minimized re-renders via memoization techniques.
Conclusion
Final Outcome
The final app provides users with a smooth and reliable chat experience that supports real-time messaging, image sharing, and live location updates. Messages are stored in Firebase for persistence and synced across devices instantly. The UI is polished, functional, and responsive across both iOS and Android.
Challenges [&] Growth
This project deepened my understanding of real-time database interactions, Firebase service integration, and React Native UI design.
I learned how to manage asynchronous data flows effectively and handle common mobile development pain points like network instability and device compatibility.
I also gained practical experience in:
- Structuring a React Native app for scalability and reusability.
- mplementing secure, anonymous authentication.
- Managing cloud and local data together for a seamless user experience.
Future Directions
One key feature I plan to implement next is audio messaging. This will allow users to record and send voice messages directly within the chat interface—enhancing accessibility, convenience, and expressiveness in conversations. To achieve this, I will integrate Expo's Audio API for recording and playback, and store audio files in Firebase Cloud Storage alongside existing image data. Audio message metadata will be saved in Firestore, just like text and image messages, to ensure real-time syncing and playback across devices. Adding this feature will involve UI enhancements to the chat composer and careful handling of media permissions, background tasks, and file size optimizations. It's an exciting next step that will move the app closer to feature parity with modern messaging platforms.