diff --git a/package-lock.json b/package-lock.json
index 270119234c40..5d7be208477a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -100,7 +100,7 @@
"react-native-url-polyfill": "2.0.0",
"react-native-video": "6.0.0-alpha.11",
"react-native-watch-connectivity": "1.1.0",
- "react-native-webrtc": "124.0.4",
+ "react-native-webrtc": "git+https://git@github.com/react-native-webrtc/react-native-webrtc.git#6953b21a33382478c9d56674e4d4bd35a30149f9",
"react-native-webview": "13.8.7",
"react-native-youtube-iframe": "2.3.0",
"react-redux": "7.2.9",
@@ -16063,8 +16063,9 @@
},
"node_modules/react-native-webrtc": {
"version": "124.0.4",
- "resolved": "https://registry.npmjs.org/react-native-webrtc/-/react-native-webrtc-124.0.4.tgz",
- "integrity": "sha512-ZbhSz1f+kc1v5VE0B84+v6ujIWTHa2fIuocrYzGUIFab7E5izmct7PNHb9dzzs0xhBGqh4c2rUa49jbL+P/e2w==",
+ "resolved": "git+https://git@github.com/react-native-webrtc/react-native-webrtc.git#6953b21a33382478c9d56674e4d4bd35a30149f9",
+ "integrity": "sha512-JMunPsk83dw+Vn1YaK8VuzBkJtE6WznjdIn4tj84DWqzj0h8L+JGBaYTR6QRQArNvL9Dh+0dwadmXPjuh3DtUw==",
+ "license": "MIT",
"dependencies": {
"base64-js": "1.5.1",
"debug": "4.3.4",
@@ -30642,9 +30643,9 @@
}
},
"react-native-webrtc": {
- "version": "124.0.4",
- "resolved": "https://registry.npmjs.org/react-native-webrtc/-/react-native-webrtc-124.0.4.tgz",
- "integrity": "sha512-ZbhSz1f+kc1v5VE0B84+v6ujIWTHa2fIuocrYzGUIFab7E5izmct7PNHb9dzzs0xhBGqh4c2rUa49jbL+P/e2w==",
+ "version": "git+https://git@github.com/react-native-webrtc/react-native-webrtc.git#6953b21a33382478c9d56674e4d4bd35a30149f9",
+ "integrity": "sha512-JMunPsk83dw+Vn1YaK8VuzBkJtE6WznjdIn4tj84DWqzj0h8L+JGBaYTR6QRQArNvL9Dh+0dwadmXPjuh3DtUw==",
+ "from": "react-native-webrtc@git+https://git@github.com/react-native-webrtc/react-native-webrtc.git#6953b21a33382478c9d56674e4d4bd35a30149f9",
"requires": {
"base64-js": "1.5.1",
"debug": "4.3.4",
diff --git a/package.json b/package.json
index 4eb40d99a4b1..56b11448d8b3 100644
--- a/package.json
+++ b/package.json
@@ -106,7 +106,7 @@
"react-native-url-polyfill": "2.0.0",
"react-native-video": "6.0.0-alpha.11",
"react-native-watch-connectivity": "1.1.0",
- "react-native-webrtc": "124.0.4",
+ "react-native-webrtc": "git+https://git@github.com/react-native-webrtc/react-native-webrtc.git#6953b21a33382478c9d56674e4d4bd35a30149f9",
"react-native-webview": "13.8.7",
"react-native-youtube-iframe": "2.3.0",
"react-redux": "7.2.9",
diff --git a/react/features/app/reducers.native.ts b/react/features/app/reducers.native.ts
index 0ffc5800b794..a0a632cc4009 100644
--- a/react/features/app/reducers.native.ts
+++ b/react/features/app/reducers.native.ts
@@ -3,6 +3,7 @@ import '../mobile/background/reducer';
import '../mobile/call-integration/reducer';
import '../mobile/external-api/reducer';
import '../mobile/full-screen/reducer';
+import '../mobile/picture-in-picture/reducer';
import '../mobile/watchos/reducer';
import '../share-room/reducer';
diff --git a/react/features/app/types.ts b/react/features/app/types.ts
index 272d5bd2ca9c..898b27338f8f 100644
--- a/react/features/app/types.ts
+++ b/react/features/app/types.ts
@@ -52,6 +52,7 @@ import { IBackgroundState } from '../mobile/background/reducer';
import { ICallIntegrationState } from '../mobile/call-integration/reducer';
import { IMobileExternalApiState } from '../mobile/external-api/reducer';
import { IFullScreenState } from '../mobile/full-screen/reducer';
+import { IMobilePictureInPictureState } from '../mobile/picture-in-picture/reducer';
import { IMobileWatchOSState } from '../mobile/watchos/reducer';
import { INoAudioSignalState } from '../no-audio-signal/reducer';
import { INoiseDetectionState } from '../noise-detection/reducer';
@@ -142,6 +143,7 @@ export interface IReduxState {
'features/lobby': ILobbyState;
'features/mobile/audio-mode': IMobileAudioModeState;
'features/mobile/external-api': IMobileExternalApiState;
+ 'features/mobile/picture-in-picture': IMobilePictureInPictureState;
'features/mobile/watchos': IMobileWatchOSState;
'features/no-audio-signal': INoAudioSignalState;
'features/noise-detection': INoiseDetectionState;
diff --git a/react/features/base/media/components/AbstractVideoTrack.tsx b/react/features/base/media/components/AbstractVideoTrack.tsx
index 03c405153901..9f7917c98774 100644
--- a/react/features/base/media/components/AbstractVideoTrack.tsx
+++ b/react/features/base/media/components/AbstractVideoTrack.tsx
@@ -1,4 +1,4 @@
-import React, { Component } from 'react';
+import React, { Component, ReactElement } from 'react';
import { IStore } from '../../../app/types';
import { trackVideoStarted } from '../../tracks/actions';
@@ -16,6 +16,11 @@ export interface IProps {
*/
dispatch: IStore['dispatch'];
+ /**
+ * IOS component for PiP view.
+ */
+ fallbackView?: ReactElement;
+
/**
* Callback to invoke when the {@link Video} of {@code AbstractVideoTrack}
* is clicked/pressed.
@@ -111,6 +116,7 @@ export default class AbstractVideoTrack
extends Component
{
return (