Going Mobile with React Native and WebRTC
GoingMobile
withReactNativeandWebRTC
SAÚL IBARRA CORRETGÉ | @SAGHUL | @JITSINEWS
Set of Open Source projects
Easily deploy scalable and secure video
conferencing infrastructure.
APIs and mobile SDKs
Effortlessly integrate Jitsi into existing products to
add video conferencing capabilities.
Community
Open Source enthusiasts from all around the world
contribute to Jitsi.
Going Mobile with React Native and WebRTC
Going Mobile with React Native and WebRTC
HD audio / video conferencing
Screen sharing
Calendar integration
Record meetings
Dial in / out
Authentication
Mobile apps
Detailed individual audio controls
Raise your hand
Join anonymouslyModeration controls
Live streaming Speaker stats
"Follow me" mode
Cascaded routing
Room passwords
Stage vs Tile layouts
Mobile SDKs
Shared document editing
Call quality management
Chat
Push to talk
Language selection
Stats
Going mobile
ARCHITECTURE
…
Jitsi Meet
Main UI, uses lib-jitsi-meet for the heavy lifting.
strophe.jsWebRTC
lib-jitsi-meet
Signaling, stream management, simulcast, analytics, …
~40k LoC
~30k LoC
Experiments with native on mobile
~20K LoC gave us 10% of the features. ☠
What if we could share all the logic in lib-jitsi-meet
(and potentially some of the UI logic)? 🤔
We also wanted to migrate away from jQuery and
React looked like a solid plan. 🤓
React Native emerged to bridge the gap between
React and mobile. 📱
It’s not a web view
Full access to native APIs, and you get native
views and the performance of native code.
Thriving ecosystem
Tons of modules to expose native APIs to
JavaScript.
It’s just React and JavaScript
Logic can be easily shared between web and
mobile apps. Web developers can do mobile too!
React Native
How does React Native work?
React Native bridge
JavaScript thread

(JSC — JavaScriptCore)
Native thread
Going Mobile with React Native and WebRTC
WebRTC on React Native
WebRTC APIs
Use WebRTC APIs like you
would in a browser. **
Battle-tested
We’ve been running it on
Jitsi Meet for years. Others
have too!
Up to date
Currently on M69. Generally
very close to upstream
stable.
react-native-webrtc
React Native: all that glitter is not gold
You’ll need to write
native code
The cake was a lie.
Codecs
Some devices don’t support H.264,
some have HW accelerated VP8, …
Audio routing
You’ll need to implement it yourself.

See react-native-incall-manager.
Timers
Timers don’t run in the background!
Use react-native-background-timer.
CallKit /
ConnectionService
They greatly simplify call management.
See react-native-callkeep.
Cross platform
shenanigans
Android can only have 3 OpenGL
layers, iOS doesn’t have PiP, …
github.com/react-native-webrtc
react-native-webrtc.discourse.group
Jitsi Meet SDK
JitsiMeetView
RTCRootView
Available for Android and iOS
Easy to integrate into existing native applications.
Example: 8x8 Virtual Office, Riot.IM, Los Reyes
Magos TV, …
Everything taken care of
Audio routing, CallKit, recording, … completely
React Native agnostic.
Version 2 released!
Revamped native API. Better. Faster. Stronger.
- (void)viewDidLoad {
[super viewDidLoad];
JitsiMeetView *view = (JitsiMeetView *) self.view;
view.delegate = self;
JitsiMeetConferenceOptions *options
= [JitsiMeetConferenceOptions
fromBuilder:^(JitsiMeetConferenceOptionsBuilder *builder) {
builder.room = @“test123”;
builder.audioMuted = NO;
builder.videoMuted = YES;
}];
[view join:options];
}
- (void)conferenceJoined:(NSDictionary *)data {
// You are now in the conference!
}
- (void)conferenceTerminated:(NSDictionary *)data {
// The conference ended, dismiss this controller!
}
public void onButtonClick(View v) {
JitsiMeetConferenceOptions options
= new JitsiMeetConferenceOptions.Builder()
.setRoom(“test123”)
.setAudioMuted(false)
.setVideoMuted(true)
.build();
JitsiMeetActivity.launch(this, options);
}
github.com/jitsi/jitsi-meet-sdk-samples
HOW DID IT GO?
…
Jitsi Meet
Main UI, uses lib-jitsi-meet for the heavy lifting.
strophe.jsWebRTC
lib-jitsi-meet
Signaling, stream management, simulcast, analytics, …
~40k LoC
~30k LoC
100%
code share
85%
code share
<Toolbox />
Going Mobile with React Native and WebRTC
JitsiMeet
React Native

is ready
It’s a solid development
platform which will accelerate
your development.
Jitsi Meet SDK is here
to help
Use Jitsi Meet SDK and save
some time, we got this.
Conclusions
jitsi.org
SAÚL IBARRA CORRETGÉ | @SAGHUL | @JITSINEWS

More Related Content

PDF
Jitsi Meet: Video conferencing for the privacy minded
PDF
Get a room! Spot: the ultimate physical meeting room experience
PDF
Challenges running Jitsi Meet at scale during the pandemic
PDF
Going Mobile with React Native and WebRTC
PDF
Jitsi: state-of-the-art video conferencing you can self-host
PDF
How to conduct an online class using Jitsi
PDF
Jitsi: Open Source Video Conferencing
PDF
Jitsi Videobridge
Jitsi Meet: Video conferencing for the privacy minded
Get a room! Spot: the ultimate physical meeting room experience
Challenges running Jitsi Meet at scale during the pandemic
Going Mobile with React Native and WebRTC
Jitsi: state-of-the-art video conferencing you can self-host
How to conduct an online class using Jitsi
Jitsi: Open Source Video Conferencing
Jitsi Videobridge

What's hot (19)

PPTX
7. Pano VR: Reverse Pitch FINALISTS 6.14.17
PPTX
Sailfish operating system
PPTX
It’s All About Developers. Discover Cisco DevNet. - Jason Goecke - Codemotion...
PDF
Concerto motionsummer2011week1
PPTX
Connect(); 2018 Japan IoT <Hiroshi Ota>
PPTX
SailFish OS latest Report (2016)
PPTX
Sailfish operating system
PPTX
Frida - Objection Tool Usage
PDF
Intro to Open source. Amit Bhayani
PPTX
Cross Platform HTML5 Mobile Development
PPTX
Differentiating your apps using software tools (Qualcomm, Dr.Bernd Schulze) I...
PDF
Project Humix overview
PDF
A Deep Dive into Open Source Android Development
PPTX
Peegar: a new prototyping starter kit for everyone
PPTX
Application trends
PDF
Mobile Delivery Run Through
PDF
Various Mobile Operating Systems in Market presented by Ashish Gaikwad
PDF
Cisco Activities at 4G World
PPTX
Thrive 2019 Building intelligent bots for your modern workplace best practic...
7. Pano VR: Reverse Pitch FINALISTS 6.14.17
Sailfish operating system
It’s All About Developers. Discover Cisco DevNet. - Jason Goecke - Codemotion...
Concerto motionsummer2011week1
Connect(); 2018 Japan IoT <Hiroshi Ota>
SailFish OS latest Report (2016)
Sailfish operating system
Frida - Objection Tool Usage
Intro to Open source. Amit Bhayani
Cross Platform HTML5 Mobile Development
Differentiating your apps using software tools (Qualcomm, Dr.Bernd Schulze) I...
Project Humix overview
A Deep Dive into Open Source Android Development
Peegar: a new prototyping starter kit for everyone
Application trends
Mobile Delivery Run Through
Various Mobile Operating Systems in Market presented by Ashish Gaikwad
Cisco Activities at 4G World
Thrive 2019 Building intelligent bots for your modern workplace best practic...

Similar to Going Mobile with React Native and WebRTC (20)

PDF
The internet of things in now , see how golang is a part of this evolution
PPTX
Sviluppo x platform con xamarin
PPTX
PDF
An introduction to Titanium
PPTX
Flutter Leap of Faith
PDF
node.js is made for IoT - node.hh 07/16, Hamburg by Michael Kuehne
PPTX
OSCON 2012: Design and Debug HTML5 Apps for Devices with RIB and Web Simulator
PDF
Html5 workshop part 1
PDF
PDF
ShopMaster Presentation
PDF
Slides bootcamp21
PDF
Meego의 현재와 미래(2)
PPT
Introduction to Android
PDF
Kotlin native for iOS and Android
PPTX
A Special Introduction to the Upcoming InduSoft Web Studio 8.0
PDF
Streaming Multimedia content distribution system using mobile application by...
PPTX
The Right Tools for IoT Developers – Dan Gross @ Eclipse IoT Day ThingMonk 2016
PPTX
Google Developer Group(GDG) DevFest Event 2012 Android talk
PDF
Webinar WebRTC HTML5 (english)
PDF
What is codename one
The internet of things in now , see how golang is a part of this evolution
Sviluppo x platform con xamarin
An introduction to Titanium
Flutter Leap of Faith
node.js is made for IoT - node.hh 07/16, Hamburg by Michael Kuehne
OSCON 2012: Design and Debug HTML5 Apps for Devices with RIB and Web Simulator
Html5 workshop part 1
ShopMaster Presentation
Slides bootcamp21
Meego의 현재와 미래(2)
Introduction to Android
Kotlin native for iOS and Android
A Special Introduction to the Upcoming InduSoft Web Studio 8.0
Streaming Multimedia content distribution system using mobile application by...
The Right Tools for IoT Developers – Dan Gross @ Eclipse IoT Day ThingMonk 2016
Google Developer Group(GDG) DevFest Event 2012 Android talk
Webinar WebRTC HTML5 (english)
What is codename one

More from Saúl Ibarra Corretgé (20)

PDF
JanusCon 2024: Mom there are robots in my meeting
PDF
The Road to End-to-End Encryption in Jitsi Meet
PDF
Jitsi: State of the Union 2020
PDF
Jitsi Meet: our tale of blood, sweat, tears and love
PDF
Jitsi - Estado de la unión 2019
PDF
Jitsi: Estado de la Unión (2018)
PDF
WebRTC: El epicentro de la videoconferencia y IoT
PDF
Jitsi: State of the Union
PDF
libuv: cross platform asynchronous i/o
PDF
Videoconferencias: el santo grial de WebRTC
PDF
SylkServer: State of the art RTC application server
PDF
Escalabilidad horizontal desde las trincheras
PDF
A deep dive into libuv
PDF
Planning libuv v2
PDF
libuv, NodeJS and everything in between
PDF
From SIP to WebRTC and vice versa
PDF
Extendiendo SIP con WebRTC
PDF
De SIP a WebRTC y vice versa
PDF
Python, WebRTC and You (v2)
PDF
CDRTool: CDR mediation and rating engine for OpenSIPS
JanusCon 2024: Mom there are robots in my meeting
The Road to End-to-End Encryption in Jitsi Meet
Jitsi: State of the Union 2020
Jitsi Meet: our tale of blood, sweat, tears and love
Jitsi - Estado de la unión 2019
Jitsi: Estado de la Unión (2018)
WebRTC: El epicentro de la videoconferencia y IoT
Jitsi: State of the Union
libuv: cross platform asynchronous i/o
Videoconferencias: el santo grial de WebRTC
SylkServer: State of the art RTC application server
Escalabilidad horizontal desde las trincheras
A deep dive into libuv
Planning libuv v2
libuv, NodeJS and everything in between
From SIP to WebRTC and vice versa
Extendiendo SIP con WebRTC
De SIP a WebRTC y vice versa
Python, WebRTC and You (v2)
CDRTool: CDR mediation and rating engine for OpenSIPS

Recently uploaded (20)

PDF
Technical Debt in the AI Coding Era - By Antonio Bianco
PDF
CEH Module 2 Footprinting CEH V13, concepts
PDF
CCUS-as-the-Missing-Link-to-Net-Zero_AksCurious.pdf
PDF
Examining Bias in AI Generated News Content.pdf
PDF
State of AI in Business 2025 - MIT NANDA
PPTX
Rise of the Digital Control Grid Zeee Media and Hope and Tivon FTWProject.com
PDF
Internet of Things (IoT) – Definition, Types, and Uses
PDF
Altius execution marketplace concept.pdf
PDF
ELLIE29.pdfWETWETAWTAWETAETAETERTRTERTER
PPTX
How to use fields_get method in Odoo 18
PDF
substrate PowerPoint Presentation basic one
PDF
ment.tech-Siri Delay Opens AI Startup Opportunity in 2025.pdf
PPTX
AQUEEL MUSHTAQUE FAKIH COMPUTER CENTER .
PPTX
From Curiosity to ROI — Cost-Benefit Analysis of Agentic Automation [3/6]
PDF
Optimizing bioinformatics applications: a novel approach with human protein d...
PPTX
Report in SIP_Distance_Learning_Technology_Impact.pptx
PDF
Introduction to c language from lecture slides
PDF
Secure Java Applications against Quantum Threats
PDF
Uncertainty-aware contextual multi-armed bandits for recommendations in e-com...
PPTX
Strategic Picks — Prioritising the Right Agentic Use Cases [2/6]
Technical Debt in the AI Coding Era - By Antonio Bianco
CEH Module 2 Footprinting CEH V13, concepts
CCUS-as-the-Missing-Link-to-Net-Zero_AksCurious.pdf
Examining Bias in AI Generated News Content.pdf
State of AI in Business 2025 - MIT NANDA
Rise of the Digital Control Grid Zeee Media and Hope and Tivon FTWProject.com
Internet of Things (IoT) – Definition, Types, and Uses
Altius execution marketplace concept.pdf
ELLIE29.pdfWETWETAWTAWETAETAETERTRTERTER
How to use fields_get method in Odoo 18
substrate PowerPoint Presentation basic one
ment.tech-Siri Delay Opens AI Startup Opportunity in 2025.pdf
AQUEEL MUSHTAQUE FAKIH COMPUTER CENTER .
From Curiosity to ROI — Cost-Benefit Analysis of Agentic Automation [3/6]
Optimizing bioinformatics applications: a novel approach with human protein d...
Report in SIP_Distance_Learning_Technology_Impact.pptx
Introduction to c language from lecture slides
Secure Java Applications against Quantum Threats
Uncertainty-aware contextual multi-armed bandits for recommendations in e-com...
Strategic Picks — Prioritising the Right Agentic Use Cases [2/6]

Going Mobile with React Native and WebRTC

  • 3. Set of Open Source projects Easily deploy scalable and secure video conferencing infrastructure. APIs and mobile SDKs Effortlessly integrate Jitsi into existing products to add video conferencing capabilities. Community Open Source enthusiasts from all around the world contribute to Jitsi.
  • 6. HD audio / video conferencing Screen sharing Calendar integration Record meetings Dial in / out Authentication Mobile apps Detailed individual audio controls Raise your hand Join anonymouslyModeration controls Live streaming Speaker stats "Follow me" mode Cascaded routing Room passwords Stage vs Tile layouts Mobile SDKs Shared document editing Call quality management Chat Push to talk Language selection Stats
  • 8. ARCHITECTURE … Jitsi Meet Main UI, uses lib-jitsi-meet for the heavy lifting. strophe.jsWebRTC lib-jitsi-meet Signaling, stream management, simulcast, analytics, … ~40k LoC ~30k LoC
  • 9. Experiments with native on mobile ~20K LoC gave us 10% of the features. ☠ What if we could share all the logic in lib-jitsi-meet (and potentially some of the UI logic)? 🤔 We also wanted to migrate away from jQuery and React looked like a solid plan. 🤓 React Native emerged to bridge the gap between React and mobile. 📱
  • 10. It’s not a web view Full access to native APIs, and you get native views and the performance of native code. Thriving ecosystem Tons of modules to expose native APIs to JavaScript. It’s just React and JavaScript Logic can be easily shared between web and mobile apps. Web developers can do mobile too! React Native
  • 11. How does React Native work?
  • 12. React Native bridge JavaScript thread
 (JSC — JavaScriptCore) Native thread
  • 14. WebRTC on React Native
  • 15. WebRTC APIs Use WebRTC APIs like you would in a browser. ** Battle-tested We’ve been running it on Jitsi Meet for years. Others have too! Up to date Currently on M69. Generally very close to upstream stable. react-native-webrtc
  • 16. React Native: all that glitter is not gold You’ll need to write native code The cake was a lie. Codecs Some devices don’t support H.264, some have HW accelerated VP8, … Audio routing You’ll need to implement it yourself.
 See react-native-incall-manager. Timers Timers don’t run in the background! Use react-native-background-timer. CallKit / ConnectionService They greatly simplify call management. See react-native-callkeep. Cross platform shenanigans Android can only have 3 OpenGL layers, iOS doesn’t have PiP, …
  • 20. Available for Android and iOS Easy to integrate into existing native applications. Example: 8x8 Virtual Office, Riot.IM, Los Reyes Magos TV, … Everything taken care of Audio routing, CallKit, recording, … completely React Native agnostic. Version 2 released! Revamped native API. Better. Faster. Stronger.
  • 21. - (void)viewDidLoad { [super viewDidLoad]; JitsiMeetView *view = (JitsiMeetView *) self.view; view.delegate = self; JitsiMeetConferenceOptions *options = [JitsiMeetConferenceOptions fromBuilder:^(JitsiMeetConferenceOptionsBuilder *builder) { builder.room = @“test123”; builder.audioMuted = NO; builder.videoMuted = YES; }]; [view join:options]; }
  • 22. - (void)conferenceJoined:(NSDictionary *)data { // You are now in the conference! } - (void)conferenceTerminated:(NSDictionary *)data { // The conference ended, dismiss this controller! }
  • 23. public void onButtonClick(View v) { JitsiMeetConferenceOptions options = new JitsiMeetConferenceOptions.Builder() .setRoom(“test123”) .setAudioMuted(false) .setVideoMuted(true) .build(); JitsiMeetActivity.launch(this, options); }
  • 25. HOW DID IT GO? … Jitsi Meet Main UI, uses lib-jitsi-meet for the heavy lifting. strophe.jsWebRTC lib-jitsi-meet Signaling, stream management, simulcast, analytics, … ~40k LoC ~30k LoC 100% code share 85% code share
  • 29. React Native
 is ready It’s a solid development platform which will accelerate your development. Jitsi Meet SDK is here to help Use Jitsi Meet SDK and save some time, we got this. Conclusions
  • 30. jitsi.org SAÚL IBARRA CORRETGÉ | @SAGHUL | @JITSINEWS