The Good Tech Companies - How I Built a React Native App With In-App Chat and Calls

Episode Date: January 16, 2026

This story was originally published on HackerNoon at: https://hackernoon.com/how-i-built-a-react-native-app-with-in-app-chat-and-calls. Learn how to build a React Native... app with chat, voice, and video calling using prebuilt SDKs and WebRTC—step by step. Check more stories related to programming at: https://hackernoon.com/c/programming. You can also check exclusive content about #react-native-development, #react-native-chat-app, #create-react-native-app, #react-native-video-calling, #react-native-voice-calling, #messaging-sdk, #webrtc-react-native, #good-company, and more. This story was written by: @sam. Learn more about this writer by checking @sam's about page, and for more stories, please visit hackernoon.com. This guide walks developers through building a React Native app with messaging, voice calls, and video calls using a prebuilt SDK, avoiding the complexity of manual WebRTC implementation.

Transcript
Discussion (0)
Starting point is 00:00:00 This audio is presented by Hacker Noon, where anyone can learn anything about any technology. How I built a React Native app with an app chat and calls by Alex Sam. As a developer, manually writing code line by line to develop an app is a nightmare. The codes may work or end up in critical errors right before deployment, and no one really knows what happens after days and nights of effort. But what if there's a fail-proof option? This is where pre-built SDKs come into play. In this sample project, I will show you how to build a whole.
Starting point is 00:00:30 whole new React Native app with custom messaging, video calling and voice calling features using SDKs. For this, I will use Mirrorfly that supports WebRTC for real-time communication. Let's get started. Step 1. Make sure your environment is ready. Before starting with the project, let's check if the system meets all the necessary requirements. Minimum requirements react native version between 0.73.0 and 0.79.5. Node.js version 18.20.4 or above. NPM version 10.7.0. Important note about NEW architecture i.f your React Native version is above 0.76. You need to disable the new architecture after setup. For iOS, open your pod file and set. For Android, open Gradle. Properties and set. I recommend doing this early.
Starting point is 00:01:23 Why, so you do not have to debug native issues later. Step 2. Get your SDK license key. You will need a license key to authenticate the SDK with the server. Here is how I got mine. 1. Contacted the sales team. 2.
Starting point is 00:01:39 Got my developer account. 3. Log in to the dashboard. 4. Copy the license key from the application overview section. If you already have 1, you can skip this step. Step 3. Install the chat SDK.
Starting point is 00:01:53 Run this command in your React Native project. After installation, import the SDK wherever you want to initialize it, usually an app. js or app.tskx. Step 4. Install required dependencies. The chat and call features rely on a few native and JavaScript dependencies. Add them explicitly so you can avoid version conflicts. The React Native WebRTC must be in version 124.4.
Starting point is 00:02:20 I learned this the hard way after trying a newer version that broke call functionality. Step 5. Initialize the messaging SDK. Before initializing, I usually set up a connection listener. This helps me track IF my app is connected to the server or not. Now create the initialization object. If everything is set up correctly, you will be receiving a success response with status code 200.
Starting point is 00:02:45 Step 6. Register a user. In your app, a user needs to be registered. before they make a call or start chatting. That's what we'll do in this step. If the user is registered successfully, the SDK will return a username and password. Step 7. Connect to the server.
Starting point is 00:03:02 Once registered, connecting the user is simple. If the connection is successful, your connection listener will also be triggered. This is how I usually confirm everything is working as I need it. Step 8. Send your first message. To send a message, you require the recipient's JID. If the response status code is 200, it means your message has been sent successfully. Step 9. Receive messages. Your app will need a message listener to start receiving messages. Every time your app has an
Starting point is 00:03:33 incoming message or any event related to messaging happens, this listener will be triggered. Make sure this listener is added during SDK initialization under call back listeners. Step 10. Enable audio and video calls. Once chat is working, adding calls feels like a natural next step. Initialize call listeners calls require more listeners since there are more events involved. Add these to the same initialize SDK call. Step 11. Make a voice call. To make an audio call, if the call is successful, you will receive a room ID and call status via the call status listener. Step 12. Make a video call. Video calls work almost the same way. You will receive both audio and video tracks in the user track listener. Do not play your own audio.
Starting point is 00:04:19 track to avoid echo. Step 13. Receive and handle incoming calls. When another user calls you, the incoming call listener fires with all call details. To answer the call, to end the call, to decline an incoming call, okay. That was really quick. We completed building a whole new React native app with chat and calling features. Now, as this article is getting too longer, I will recommend you to visit Mirrorfly docs to continue with adding more advanced features. I've mentioned the link below. Mirror Fly API documentation. Thanks for reading the article. I hope you learned something new. If you have any questions, feedback, feel free to leave a comment. This article is published under Hacker Noon's business blogging program. Thank you for listening to this Hackernoon story,
Starting point is 00:05:06 read by artificial intelligence. Visit Hackernoon.com to read, write, learn and publish.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.