Skip to content

Commit c00061b

Browse files
authored
fix: add more webstream polyfills (#391)
Required for data track usage
1 parent cde0a59 commit c00061b

12 files changed

Lines changed: 109 additions & 84 deletions

File tree

.changeset/fuzzy-tables-relate.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@livekit/react-native': patch
3+
---
4+
5+
Update `livekit-client` to 2.19.0

.changeset/slick-deserts-join.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@livekit/react-native': patch
3+
---
4+
5+
Update `web-streams-polyfill` to 4.3.0

.changeset/vast-laws-travel.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@livekit/react-native': patch
3+
---
4+
5+
Add polyfills for `CountQueuingStrategy` and `TransformStream` for compatibility with livekit-client

ci/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"@livekit/react-native": "*",
1515
"@livekit/react-native-webrtc": "^144.1.0-beta.2",
1616
"@react-native/new-app-screen": "0.82.1",
17-
"livekit-client": "^2.15.8",
17+
"livekit-client": "^2.19.0",
1818
"react": "19.1.1",
1919
"react-native": "0.82.1",
2020
"react-native-safe-area-context": "^5.5.2"

ci/yarn.lock

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1944,12 +1944,12 @@ __metadata:
19441944
languageName: node
19451945
linkType: hard
19461946

1947-
"@livekit/protocol@npm:1.42.0":
1948-
version: 1.42.0
1949-
resolution: "@livekit/protocol@npm:1.42.0"
1947+
"@livekit/protocol@npm:1.45.8":
1948+
version: 1.45.8
1949+
resolution: "@livekit/protocol@npm:1.45.8"
19501950
dependencies:
19511951
"@bufbuild/protobuf": "npm:^1.10.0"
1952-
checksum: 10/a2780387fa6914f33b5585509c8ab96d2bf13e9972c8377091badeaefe91fa5ea338c9bac839f64146e81f06865ead6ccaf58b9850ac539885657d6c81a8e3b2
1952+
checksum: 10/53144553718a4fd71b85298201c8548b9a5d814a2f61a7b5d930442444f05a4e27c5f4cf29e0d7221fbda9209684a670ffba8d092d9aaf6b413396e036dd8500
19531953
languageName: node
19541954
linkType: hard
19551955

@@ -3602,7 +3602,7 @@ __metadata:
36023602
eslint: "npm:^8.19.0"
36033603
install-local: "npm:^3.0.1"
36043604
jest: "npm:^29.6.3"
3605-
livekit-client: "npm:^2.15.8"
3605+
livekit-client: "npm:^2.19.0"
36063606
prettier: "npm:2.8.8"
36073607
react: "npm:19.1.1"
36083608
react-native: "npm:0.82.1"
@@ -6537,23 +6537,22 @@ __metadata:
65376537
languageName: node
65386538
linkType: hard
65396539

6540-
"livekit-client@npm:^2.15.8":
6541-
version: 2.15.8
6542-
resolution: "livekit-client@npm:2.15.8"
6540+
"livekit-client@npm:^2.19.0":
6541+
version: 2.19.0
6542+
resolution: "livekit-client@npm:2.19.0"
65436543
dependencies:
65446544
"@livekit/mutex": "npm:1.1.1"
6545-
"@livekit/protocol": "npm:1.42.0"
6545+
"@livekit/protocol": "npm:1.45.8"
65466546
events: "npm:^3.3.0"
65476547
jose: "npm:^6.1.0"
65486548
loglevel: "npm:^1.9.2"
65496549
sdp-transform: "npm:^2.15.0"
6550-
ts-debounce: "npm:^4.0.0"
65516550
tslib: "npm:2.8.1"
65526551
typed-emitter: "npm:^2.1.0"
6553-
webrtc-adapter: "npm:^9.0.1"
6552+
webrtc-adapter: "npm:9.0.5"
65546553
peerDependencies:
65556554
"@types/dom-mediacapture-record": ^1
6556-
checksum: 10/bce9a5fa4d1d7abb716d520d6f6a72555b1e44c15b21e50493851056f026e377d1adb7ffa93c98a4f75826238f7a3d4027cf2c9d9f51b92ce18ff5a3d6d04f32
6555+
checksum: 10/66d6bf49e65652369419da4118690578cf372e8e4ae3d3c081ebb2b7931ea62418f10bc7e6ca5e39fae90ed97642ef01292082b602f469721a19bbdbc8777c6a
65576556
languageName: node
65586557
linkType: hard
65596558

@@ -8871,13 +8870,6 @@ __metadata:
88718870
languageName: node
88728871
linkType: hard
88738872

8874-
"ts-debounce@npm:^4.0.0":
8875-
version: 4.0.0
8876-
resolution: "ts-debounce@npm:4.0.0"
8877-
checksum: 10/346a5f753fd2d855befe351c29782ee998c0ecd309f7650082c438ef5833cc4e2c70d8eea5d8a277d5b42fa997a6e9ba9eab5b88edd8d1e8d292367dcd09ef8b
8878-
languageName: node
8879-
linkType: hard
8880-
88818873
"tslib@npm:2.8.1, tslib@npm:^2.1.0":
88828874
version: 2.8.1
88838875
resolution: "tslib@npm:2.8.1"
@@ -9211,12 +9203,12 @@ __metadata:
92119203
languageName: node
92129204
linkType: hard
92139205

9214-
"webrtc-adapter@npm:^9.0.1":
9215-
version: 9.0.3
9216-
resolution: "webrtc-adapter@npm:9.0.3"
9206+
"webrtc-adapter@npm:9.0.5":
9207+
version: 9.0.5
9208+
resolution: "webrtc-adapter@npm:9.0.5"
92179209
dependencies:
92189210
sdp: "npm:^3.2.0"
9219-
checksum: 10/5544cb38093a20b485d1d24eb23483f9ad3cdab0b0edd277cc44a90e871269dd78d124d9c45e91381e16361f79744648575fce762b258bc02c12c3c28ef5e138
9211+
checksum: 10/23c87b78b689b542ad52723c61c71aead3e07d8ddb4479daafa3fd9490ae3a199859149bb9fb4a16c7e9d13a9e0527e684e781791a221391c21781be2fb5c2e9
92209212
languageName: node
92219213
linkType: hard
92229214

example/ios/Podfile.lock

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ PODS:
88
- hermes-engine (0.82.0):
99
- hermes-engine/Pre-built (= 0.82.0)
1010
- hermes-engine/Pre-built (0.82.0)
11-
- livekit-react-native (2.10.1):
11+
- livekit-react-native (2.11.0-beta.1):
1212
- boost
1313
- DoubleConversion
1414
- fast_float
@@ -1814,7 +1814,7 @@ PODS:
18141814
- React-RCTFBReactNativeSpec
18151815
- ReactCommon/turbomodule/core
18161816
- SocketRocket
1817-
- react-native-safe-area-context (5.6.1):
1817+
- react-native-safe-area-context (5.7.0):
18181818
- boost
18191819
- DoubleConversion
18201820
- fast_float
@@ -1832,8 +1832,8 @@ PODS:
18321832
- React-graphics
18331833
- React-ImageManager
18341834
- React-jsi
1835-
- react-native-safe-area-context/common (= 5.6.1)
1836-
- react-native-safe-area-context/fabric (= 5.6.1)
1835+
- react-native-safe-area-context/common (= 5.7.0)
1836+
- react-native-safe-area-context/fabric (= 5.7.0)
18371837
- React-NativeModulesApple
18381838
- React-RCTFabric
18391839
- React-renderercss
@@ -1844,7 +1844,7 @@ PODS:
18441844
- ReactCommon/turbomodule/core
18451845
- SocketRocket
18461846
- Yoga
1847-
- react-native-safe-area-context/common (5.6.1):
1847+
- react-native-safe-area-context/common (5.7.0):
18481848
- boost
18491849
- DoubleConversion
18501850
- fast_float
@@ -1872,7 +1872,7 @@ PODS:
18721872
- ReactCommon/turbomodule/core
18731873
- SocketRocket
18741874
- Yoga
1875-
- react-native-safe-area-context/fabric (5.6.1):
1875+
- react-native-safe-area-context/fabric (5.7.0):
18761876
- boost
18771877
- DoubleConversion
18781878
- fast_float
@@ -2790,9 +2790,9 @@ SPEC CHECKSUMS:
27902790
fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
27912791
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
27922792
hermes-engine: 8642d8f14a548ab718ec112e9bebdfdd154138b5
2793-
livekit-react-native: d3bef98b710d5f0fb6ad1c7734c954ddde910150
2793+
livekit-react-native: a051e6aa4c21e1b2429d136a3d544ae0ccfa08a6
27942794
livekit-react-native-webrtc: 6fc2ff1df5af82d1adb25828ba14a90380a2073e
2795-
RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669
2795+
RCT-Folly: 59ec0ac1f2f39672a0c6e6cecdd39383b764646f
27962796
RCTDeprecation: f17e2ebc07876ca9ab8eb6e4b0a4e4647497ae3a
27972797
RCTRequired: e2c574c1b45231f7efb0834936bd609d75072b63
27982798
RCTTypeSafety: c693294e3993056955c3010eb1ebc574f1fcded6
@@ -2825,7 +2825,7 @@ SPEC CHECKSUMS:
28252825
React-logger: 500f2fa5697d224e63c33d913c8a4765319e19bf
28262826
React-Mapbuffer: 06d59c448da7e34eb05b3fb2189e12f6a30fec57
28272827
React-microtasksnativemodule: d1ee999dc9052e23f6488b730fa2d383a4ea40e5
2828-
react-native-safe-area-context: c6e2edd1c1da07bdce287fa9d9e60c5f7b514616
2828+
react-native-safe-area-context: befb5404eb8a16fdc07fa2bebab3568ecabcbb8a
28292829
React-NativeModulesApple: 46690a0fe94ec28fc6fc686ec797b911d251ded0
28302830
React-oscompat: 95875e81f5d4b3c7b2c888d5bd2c9d83450d8bdb
28312831
React-perflogger: 2e229bf33e42c094fd64516d89ec1187a2b79b5b

example/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"@react-navigation/native": "^7.1.18",
1616
"@react-navigation/native-stack": "^7.3.27",
1717
"@supersami/rn-foreground-service": "^2.2.5",
18-
"livekit-client": "^2.15.8",
18+
"livekit-client": "^2.19.0",
1919
"react": "19.1.1",
2020
"react-native": "0.82.1",
2121
"react-native-callkeep": "^4.3.14",

example/src/RoomPage.tsx

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import type {
66

77
import {
88
StyleSheet,
9-
View,
109
FlatList,
1110
type ListRenderItem,
1211
findNodeHandle,
@@ -28,6 +27,11 @@ import {
2827
useRNE2EEManager,
2928
} from '@livekit/react-native';
3029
import { Platform } from 'react-native';
30+
import {
31+
SafeAreaProvider,
32+
SafeAreaView,
33+
initialWindowMetrics,
34+
} from 'react-native-safe-area-context';
3135
// @ts-ignore
3236
import {
3337
mediaDevices,
@@ -70,19 +74,21 @@ export const RoomPage = ({
7074
let e2eeOptions = e2ee ? { e2eeManager } : undefined;
7175

7276
return (
73-
<LiveKitRoom
74-
serverUrl={url}
75-
token={token}
76-
connect={true}
77-
options={{
78-
adaptiveStream: { pixelDensity: 'screen' },
79-
e2ee: e2eeOptions,
80-
}}
81-
audio={false}
82-
video={true}
83-
>
84-
<RoomView navigation={navigation} e2ee={e2ee} />
85-
</LiveKitRoom>
77+
<SafeAreaProvider initialMetrics={initialWindowMetrics}>
78+
<LiveKitRoom
79+
serverUrl={url}
80+
token={token}
81+
connect={true}
82+
options={{
83+
adaptiveStream: { pixelDensity: 'screen' },
84+
e2ee: e2eeOptions,
85+
}}
86+
audio={false}
87+
video={true}
88+
>
89+
<RoomView navigation={navigation} e2ee={e2ee} />
90+
</LiveKitRoom>
91+
</SafeAreaProvider>
8692
);
8793
};
8894

@@ -176,7 +182,10 @@ const RoomView = ({ navigation, e2ee }: RoomViewProps) => {
176182
};
177183

178184
return (
179-
<View style={styles.container}>
185+
<SafeAreaView
186+
style={styles.container}
187+
edges={['top', 'bottom', 'left', 'right']}
188+
>
180189
{stageView}
181190
{otherParticipantsView}
182191
<RoomControls
@@ -241,7 +250,7 @@ const RoomView = ({ navigation, e2ee }: RoomViewProps) => {
241250
}}
242251
/>
243252
{screenCapturePickerView}
244-
</View>
253+
</SafeAreaView>
245254
);
246255
};
247256

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
"promise.allsettled": "^1.0.5",
6666
"react-native-url-polyfill": "^3.0.0",
6767
"typed-emitter": "^2.1.0",
68-
"web-streams-polyfill": "^4.1.0",
68+
"web-streams-polyfill": "^4.3.0",
6969
"well-known-symbols": "^4.1.0"
7070
},
7171
"devDependencies": {
@@ -86,7 +86,7 @@
8686
"eslint-config-prettier": "^10.1.8",
8787
"eslint-plugin-prettier": "^5.5.4",
8888
"jest": "^30.4.2",
89-
"livekit-client": "^2.15.8",
89+
"livekit-client": "^2.19.0",
9090
"pod-install": "^1.0.9",
9191
"prettier": "^3.6.2",
9292
"react": "19.2.0",
@@ -98,7 +98,7 @@
9898
},
9999
"peerDependencies": {
100100
"@livekit/react-native-webrtc": "^144.1.0-beta.2",
101-
"livekit-client": "^2.15.8",
101+
"livekit-client": "^2.19.0",
102102
"react": "*",
103103
"react-native": "*"
104104
},

src/e2ee/RNKeyProvider.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
} from '@livekit/react-native-webrtc';
77

88
const defaultRatchetSalt = 'LKFrameEncryptionKey';
9+
const defaultKeySize = 128;
910
const defaultMagicBytes = 'LK-ROCKS';
1011
const defaultRatchetWindowSize = 16;
1112
const defaultFailureTolerance = -1;
@@ -35,6 +36,7 @@ export default class RNKeyProvider extends BaseKeyProvider {
3536
keyRingSize: options.keyringSize ?? defaultKeyRingSize,
3637
keyringSize: options.keyringSize ?? defaultKeyRingSize,
3738
discardFrameWhenCryptorNotReady: defaultDiscardFrameWhenCryptorNotReady,
39+
keySize: options.keySize ?? defaultKeySize,
3840
};
3941

4042
let magicBytes = options.uncryptedMagicBytes ?? defaultMagicBytes;

0 commit comments

Comments
 (0)