<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: lifetime Coding</title>
    <description>The latest articles on DEV Community by lifetime Coding (@lifetime_coding).</description>
    <link>https://dev.to/lifetime_coding</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2952763%2F1c9ae5eb-0817-4719-9b55-533afe0e9578.jpg</url>
      <title>DEV Community: lifetime Coding</title>
      <link>https://dev.to/lifetime_coding</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lifetime_coding"/>
    <language>en</language>
    <item>
      <title>Build a Video Calling App in React with ZEGOCLOUD SDK – Step-by-Step Guide 🚀</title>
      <dc:creator>lifetime Coding</dc:creator>
      <pubDate>Tue, 18 Mar 2025 03:22:53 +0000</pubDate>
      <link>https://dev.to/lifetime_coding/build-a-video-calling-app-in-react-with-zegocloud-sdk-step-by-step-guide-52hn</link>
      <guid>https://dev.to/lifetime_coding/build-a-video-calling-app-in-react-with-zegocloud-sdk-step-by-step-guide-52hn</guid>
      <description>&lt;p&gt;&lt;strong&gt;📢 Introduction&lt;/strong&gt;&lt;br&gt;
Have you ever wanted to build a fully functional video calling app in React with minimal effort? 🤯&lt;/p&gt;

&lt;p&gt;With ZEGOCLOUD SDK, you can integrate high-quality video calls into your React application within minutes!&lt;/p&gt;

&lt;p&gt;In this guide, we will walk through how to use ZEGOCLOUD SDK to build a video calling app step by step.&lt;/p&gt;

&lt;p&gt;This tutorial is perfect for beginners and intermediate React developers who want to learn about video call integration.&lt;/p&gt;

&lt;p&gt;🎯 By the end of this tutorial, you will have a working video calling app deployed online!&lt;/p&gt;

&lt;p&gt;Let’s get started! 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📌 Prerequisites&lt;/strong&gt;&lt;br&gt;
Before we start, make sure you have:&lt;br&gt;
✅ Basic React knowledge&lt;br&gt;
✅ Node.js installed&lt;br&gt;
✅ A ZEGOCLOUD account (Sign up - &lt;a href="https://www.zegocloud.com/" rel="noopener noreferrer"&gt;https://www.zegocloud.com/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;🔹Step 1: Set Up a ZEGOCLOUD Account&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hnv3g8zthzybz7iytew.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hnv3g8zthzybz7iytew.PNG" alt="Image description" width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1️⃣ Go to ZEGOCLOUD's website → Sign Up&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkrs8and8qfxg3qofnf21.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkrs8and8qfxg3qofnf21.PNG" alt="Image description" width="800" height="374"&gt;&lt;/a&gt;&lt;br&gt;
2️⃣ Create a new project and get your AppID &amp;amp; AppSign&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq93ubgkwwrchujtuy56l.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq93ubgkwwrchujtuy56l.PNG" alt="Image description" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📸 Make sure to note down the AppID &amp;amp; AppSign – we’ll use them in the code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9c42bzrop1f0vp9o1y1v.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9c42bzrop1f0vp9o1y1v.PNG" alt="Image description" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating a video call app&lt;/strong&gt;&lt;br&gt;
 The following steps show you how to create a video call app using ZEGOCLOUD and react. &lt;/p&gt;

&lt;p&gt;1.Create a new React project.&lt;br&gt;
2.Install the ZEGOCLOUD React SDK.&lt;br&gt;
3.Import the ZEGOCLOUD SDK into your project.&lt;br&gt;
4.Join a room.&lt;br&gt;
5.Create a local audio and video stream.&lt;br&gt;
6.Start a video call.&lt;br&gt;
7.Render the video streams.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add user controls (Mute, Camera Toggle, Leave Call, etc.)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 1: Create a new React Project &lt;br&gt;
To start, create a new React app using Vite&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm create vite@latest video-call-app&lt;br&gt;
npm run dev&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;After running the above commands, your React project is successfully set up. Now, open the project folder in VS Code and start the development server.&lt;/p&gt;

&lt;p&gt;Next, let’s install the ZEGOCLOUD SDK to integrate video calling! 🚀&lt;/p&gt;

&lt;p&gt;step 2 : Install the ZEGOCLOUD React SDK&lt;/p&gt;

&lt;p&gt;Now that our React project is set up, let's install the ZEGOCLOUD React SDK, which will help us integrate video calling functionality.&lt;/p&gt;

&lt;p&gt;Run the following command in your project directory:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install zego-express-engine-react&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;What Does This Package Do?&lt;br&gt;
📹 zego-express-engine-react → Provides real-time audio/video communication features using ZEGOCLOUD SDK.&lt;/p&gt;

&lt;p&gt;Once installed, we’re ready to integrate ZEGOCLOUD into our React project! 🚀&lt;/p&gt;

&lt;p&gt;Next, let's set up the SDK and join a video call! 🎥&lt;/p&gt;

&lt;p&gt;step 3: Import the ZEGOCLOUD SDK into your project.&lt;/p&gt;

&lt;p&gt;Now that we have installed the ZEGOCLOUD React SDK, let's import it into our React project and initialize it.&lt;/p&gt;

&lt;p&gt;1️⃣ Open your project and navigate to App.jsx or create a new component VideoCall.jsx.&lt;/p&gt;

&lt;p&gt;2️⃣ Import the required ZEGOCLOUD SDK components:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import {zegoUiKitPrebuilt} from "@zegocloud/zego-uikit-prebuilt";&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Step 4: join a room.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useParams&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-router-dom&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ZegoUIKitPrebuilt&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@zegocloud/zego-uikit-prebuilt&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;APP_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;SERVER_SECRET&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./constant&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;VideoPage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useParams&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;roomID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;myMeeting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="c1"&gt;// generate Kit Token&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;appID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;APP_ID&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;serverSecret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;SERVER_SECRET&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;kitToken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="nx"&gt;ZegoUIKitPrebuilt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generateKitTokenForTest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;appID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;serverSecret&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;roomID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;aanchalmittal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
   &lt;span class="c1"&gt;// Create instance object from Kit Token.&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;zp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ZegoUIKitPrebuilt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;kitToken&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// start the call&lt;/span&gt;
    &lt;span class="nx"&gt;zp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;joinRoom&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;container&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;sharedLinks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Copy link&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
           &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;protocol&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;//&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; 
           &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;host&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pathname&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;?roomID=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
            &lt;span class="nx"&gt;roomID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="na"&gt;scenario&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZegoUIKitPrebuilt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;OneONoneCall&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// To implement 1-on-1 calls, modify the parameter here to [ZegoUIKitPrebuilt.OneONoneCall].&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;


&lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;myMeeting&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;VideoPage&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What This Code Does?&lt;br&gt;
✅ Imports ZEGOCLOUD SDK into the project.&lt;br&gt;
✅ Generates a Kit Token for authentication.&lt;br&gt;
✅ Creates &amp;amp; joins a video call room.&lt;br&gt;
✅ Renders the video call UI inside a &lt;/p&gt;.

&lt;p&gt;Now, you can import VideoCall.jsx inside App.jsx and render it! 🚀&lt;/p&gt;

&lt;p&gt;Step 5: Create a Local Audio and Video Stream.&lt;/p&gt;

&lt;p&gt;Now that we have joined a room, the next step is to create a local audio and video stream using the ZEGOCLOUD SDK. This will allow the user to capture their video and audio and stream it in real time.&lt;/p&gt;

&lt;p&gt;📌 Implementing Local Stream in React&lt;br&gt;
1️⃣ Import the required dependencies and initialize the stream.&lt;br&gt;
2️⃣ Use ZegoUIKitPrebuilt to access the user’s camera and microphone.&lt;br&gt;
3️⃣ Render the local video stream inside a &lt;/p&gt;.

&lt;p&gt;Here’s the code snippet to set up the local stream in VideoCall.jsx:&lt;/p&gt;

&lt;p&gt;🛠️ What This Code Does?&lt;br&gt;
✅ Initializes a unique user and room ID.&lt;br&gt;
✅ Uses ZegoUIKitPrebuilt.create() to create an instance.&lt;br&gt;
✅ Calls joinRoom() to start the local audio &amp;amp; video stream.&lt;br&gt;
✅ Renders the video stream inside a div.&lt;/p&gt;

&lt;p&gt;Now, the user’s local video and audio will be streamed in the video call! 🎥🎙️&lt;/p&gt;

&lt;p&gt;✅ Next Step: Start a Video Call&lt;/p&gt;

&lt;p&gt;step 6 : Start a video call .&lt;br&gt;
Now that we have set up the local audio and video stream, the next step is to start a video call where multiple participants can join and communicate in real time.&lt;/p&gt;

&lt;p&gt;📌 Implementing a Video Call in React&lt;br&gt;
1️⃣ Use ZegoUIKitPrebuilt.create() to initialize the call.&lt;br&gt;
2️⃣ Join the video call room with camera and microphone enabled.&lt;br&gt;
3️⃣ Display all participants’ video streams dynamically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4eqw0uwf6eqy9iidudu4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4eqw0uwf6eqy9iidudu4.png" alt="Image description" width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠️ What This Code Does?&lt;br&gt;
✅ Initializes a video call room where users can join.&lt;br&gt;
✅ Allows multiple participants to communicate in real time.&lt;br&gt;
✅ Displays video streams of all users.&lt;br&gt;
✅ Adds call features like room timer, user list, and leave confirmation.&lt;/p&gt;

&lt;p&gt;Now, when users join the room, their video and audio will be streamed live! 🎥📞&lt;/p&gt;

&lt;p&gt;✅ Next Step: Render the Video Streams&lt;br&gt;
Now that we have started the call, let’s proceed to Step 7: Render the Video Streams to display all participants' videos dynamically! 🚀&lt;/p&gt;

&lt;p&gt;step 7:Render the video streams.&lt;/p&gt;

&lt;p&gt;Now that we have started a video call, we need to display the video streams of all participants dynamically. The ZEGOCLOUD SDK makes this easy by automatically handling the rendering of video streams for users in a call.&lt;/p&gt;

&lt;p&gt;📌 Rendering Video Streams in React&lt;br&gt;
1️⃣ Use the ZegoUIKitPrebuilt component to manage video streams.&lt;br&gt;
2️⃣ Dynamically update the UI as participants join or leave.&lt;br&gt;
3️⃣ Handle multiple participants seamlessly in the video grid.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdq8u29uj9qw6g7l9ckye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdq8u29uj9qw6g7l9ckye.png" alt="Image description" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠️ What This Code Does?&lt;br&gt;
✅ Joins the video call room and streams live video.&lt;br&gt;
✅ Displays multiple users’ video feeds dynamically.&lt;br&gt;
✅ Handles user entries and exits smoothly.&lt;br&gt;
✅ Uses a grid layout to arrange video streams neatly.&lt;/p&gt;

&lt;p&gt;✅ Next Step: Add User Controls (Mute, Camera Toggle, Leave Call, etc.)&lt;br&gt;
Now that the video streams are being rendered, let's add user controls like mute, camera toggle, and leave call to enhance the user experience! 🚀&lt;/p&gt;

&lt;p&gt;step 8:Add user controls (Mute, Camera Toggle, Leave Call, etc.)&lt;br&gt;
To improve the user experience, we will add controls that allow users to:&lt;br&gt;
✅ Mute/Unmute their microphone 🎤&lt;br&gt;
✅ Turn their camera ON/OFF 📷&lt;br&gt;
✅ Leave the call 🚪&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb0973r27fqolemo5t0sw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb0973r27fqolemo5t0sw.png" alt="Image description" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠️ What This Code Does?&lt;br&gt;
✅ Provides UI buttons for Mute, Camera Toggle, and Leave Call.&lt;br&gt;
✅ Allows users to enable/disable screen sharing.&lt;br&gt;
✅ Displays call duration, participant list, and layouts.&lt;br&gt;
✅ Auto-turns ON the camera and microphone when joining.&lt;/p&gt;

&lt;p&gt;🎯 Conclusion&lt;br&gt;
Congratulations! 🎉 You have successfully built a fully functional video calling app using React and ZEGOCLOUD SDK. 🚀&lt;/p&gt;

&lt;p&gt;Through this guide, you have learned how to:&lt;br&gt;
✅ Set up a ZEGOCLOUD account and create a project.&lt;br&gt;
✅ Install and integrate the ZEGOCLOUD React SDK.&lt;br&gt;
✅ Join a room and manage audio/video streams.&lt;br&gt;
✅ Render video streams and add user controls (Mute, Camera Toggle, Leave Call).&lt;/p&gt;

&lt;p&gt;You can further improve your app by:&lt;br&gt;
🎨 Customizing the UI to match your branding.&lt;br&gt;
🔐 Adding authentication for secure calls.&lt;br&gt;
📡 Integrating real-time chat for better user interaction.&lt;/p&gt;

&lt;p&gt;Now, you’re all set to build and enhance your own video calling experience! 🚀🔥&lt;/p&gt;

&lt;p&gt;Happy coding .&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>react</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
