From 6aa6995ade7b726cedcbb444be5e07c2f0f61336 Mon Sep 17 00:00:00 2001 From: Milosz Filimowski Date: Tue, 15 Sep 2026 13:56:28 +0200 Subject: [PATCH 1/3] Set Android minSdkVersion 26 in fishjam-chat react-native-webgpu uses AHardwareBuffer APIs from Android 8.0 (API 26), and Expo SDK 57 builds for API 24 by default, so a clean prebuild of the example failed to compile react-native-webgpu. Raise minSdkVersion with expo-build-properties, which the example already depends on. --- examples/mobile-client/fishjam-chat/app.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/examples/mobile-client/fishjam-chat/app.json b/examples/mobile-client/fishjam-chat/app.json index 4d1e7ecd..c3f21ff3 100644 --- a/examples/mobile-client/fishjam-chat/app.json +++ b/examples/mobile-client/fishjam-chat/app.json @@ -61,6 +61,14 @@ } } ], + [ + "expo-build-properties", + { + "android": { + "minSdkVersion": 26 + } + } + ], [ "expo-splash-screen", { From 2bd7bf62582921f7544bd44d51133c7cdaef8e52 Mon Sep 17 00:00:00 2001 From: Milosz Filimowski Date: Wed, 16 Sep 2026 11:27:20 +0200 Subject: [PATCH 2/3] chore: bump react-native-webgpu to 0.10.1 0.10.1 releases the imported camera frame on GPUExternalTexture.destroy() (wcandillon/react-native-webgpu#478). On 0.5.15 every WebGPU camera effect leaks about one frame of graphics memory per frame on Android until the JS garbage collector runs (200 MB to 1 GB saw-tooth on a Galaxy S23). --- .../mobile-client/fishjam-chat/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- yarn.lock | 70 +++++++++++++++++-- 4 files changed, 66 insertions(+), 10 deletions(-) diff --git a/examples/mobile-client/fishjam-chat/package.json b/examples/mobile-client/fishjam-chat/package.json index 9b3d1886..7e5bb96f 100644 --- a/examples/mobile-client/fishjam-chat/package.json +++ b/examples/mobile-client/fishjam-chat/package.json @@ -42,7 +42,7 @@ "react-native-safe-area-context": "~5.7.0", "react-native-screens": "~4.26.0", "react-native-web": "~0.21.0", - "react-native-webgpu": "0.5.15", + "react-native-webgpu": "0.10.1", "react-native-worklets": "0.12.1" }, "devDependencies": { diff --git a/packages/react-native-custom-video-source/package.json b/packages/react-native-custom-video-source/package.json index 7651ee6f..b406ca27 100644 --- a/packages/react-native-custom-video-source/package.json +++ b/packages/react-native-custom-video-source/package.json @@ -101,7 +101,7 @@ "react": "19.2.3", "react-native": "0.86.3", "react-native-builder-bob": "^0.18.2", - "react-native-webgpu": "0.5.15", + "react-native-webgpu": "0.10.1", "typescript": "^5.8.3", "unplugin-typegpu": "^0.11.5" }, diff --git a/packages/react-native-vision-camera-source/package.json b/packages/react-native-vision-camera-source/package.json index 91e96d10..f3b2b6fd 100644 --- a/packages/react-native-vision-camera-source/package.json +++ b/packages/react-native-vision-camera-source/package.json @@ -109,7 +109,7 @@ "react-native-nitro-modules": "0.35.7", "react-native-vision-camera": "5.0.10", "react-native-vision-camera-worklets": "5.0.10", - "react-native-webgpu": "0.5.15", + "react-native-webgpu": "0.10.1", "react-native-worklets": "0.12.1", "typescript": "^5.8.3" }, diff --git a/yarn.lock b/yarn.lock index 35ca4ca4..7010d03d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5472,7 +5472,7 @@ __metadata: react: "npm:19.2.3" react-native: "npm:0.86.3" react-native-builder-bob: "npm:^0.18.2" - react-native-webgpu: "npm:0.5.15" + react-native-webgpu: "npm:0.10.1" typegpu: "npm:^0.11.8" typescript: "npm:^5.8.3" unplugin-typegpu: "npm:^0.11.5" @@ -5507,7 +5507,7 @@ __metadata: react-native-nitro-modules: "npm:0.35.7" react-native-vision-camera: "npm:5.0.10" react-native-vision-camera-worklets: "npm:5.0.10" - react-native-webgpu: "npm:0.5.15" + react-native-webgpu: "npm:0.10.1" react-native-worklets: "npm:0.12.1" typescript: "npm:^5.8.3" peerDependencies: @@ -5634,6 +5634,38 @@ __metadata: languageName: node linkType: hard +"@fishjam-cloud/video-effects@npm:0.1.4": + version: 0.1.4 + resolution: "@fishjam-cloud/video-effects@npm:0.1.4" + dependencies: + "@webgpu/types": "npm:0.1.65" + typed-binary: "npm:^4.3.3" + typegpu: "npm:^0.12.0" + peerDependencies: + "@fishjam-cloud/react-client": "*" + "@fishjam-cloud/react-native-client": "*" + "@fishjam-cloud/react-native-webrtc": ">=0.30.2" + react: ">=18" + react-native: "*" + react-native-webgpu: ">=0.5.15" + react-native-worklets: ">=0.12.1" + peerDependenciesMeta: + "@fishjam-cloud/react-client": + optional: true + "@fishjam-cloud/react-native-client": + optional: true + "@fishjam-cloud/react-native-webrtc": + optional: true + react-native: + optional: true + react-native-webgpu: + optional: true + react-native-worklets: + optional: true + checksum: 10c0/1249019e2026b76402fa96cf77ca9d5c692564f627fff45215f9d44bc6b668427f4a6b55aa827d6ee7da466ef0c5fcaf36c100df17b3b0cd0464b16b9edb153f + languageName: node + linkType: hard + "@fishjam-cloud/webrtc-client@workspace:*, @fishjam-cloud/webrtc-client@workspace:packages/webrtc-client": version: 0.0.0-use.local resolution: "@fishjam-cloud/webrtc-client@workspace:packages/webrtc-client" @@ -11405,6 +11437,30 @@ __metadata: languageName: node linkType: hard +"docs-camera-effects-e2e@workspace:examples/mobile-client/docs-camera-effects-e2e": + version: 0.0.0-use.local + resolution: "docs-camera-effects-e2e@workspace:examples/mobile-client/docs-camera-effects-e2e" + dependencies: + "@babel/plugin-transform-class-static-block": "npm:^7.28.3" + "@fishjam-cloud/react-native-client": "workspace:*" + "@fishjam-cloud/react-native-worklets": "npm:0.12.1" + "@fishjam-cloud/video-effects": "npm:0.1.4" + "@types/react": "npm:~19.2.0" + babel-preset-expo: "npm:~57.0.10" + expo: "npm:~57.0.20" + expo-asset: "npm:~57.0.16" + expo-build-properties: "npm:~57.0.17" + expo-file-system: "npm:~57.0.6" + react: "npm:19.2.3" + react-native: "npm:0.86.3" + react-native-webgpu: "npm:0.10.1" + react-native-worklets: "npm:0.12.1" + typegpu: "npm:^0.12.0" + typescript: "npm:~5.9.2" + unplugin-typegpu: "npm:^0.12.0" + languageName: unknown + linkType: soft + "doctrine@npm:^2.1.0": version: 2.1.0 resolution: "doctrine@npm:2.1.0" @@ -13412,7 +13468,7 @@ __metadata: react-native-safe-area-context: "npm:~5.7.0" react-native-screens: "npm:~4.26.0" react-native-web: "npm:~0.21.0" - react-native-webgpu: "npm:0.5.15" + react-native-webgpu: "npm:0.10.1" react-native-worklets: "npm:0.12.1" typescript: "npm:~5.9.2" unplugin-typegpu: "npm:^0.12.0" @@ -18517,9 +18573,9 @@ __metadata: languageName: node linkType: hard -"react-native-webgpu@npm:0.5.15": - version: 0.5.15 - resolution: "react-native-webgpu@npm:0.5.15" +"react-native-webgpu@npm:0.10.1": + version: 0.10.1 + resolution: "react-native-webgpu@npm:0.10.1" peerDependencies: react: "*" react-native: ">=0.81.0" @@ -18530,7 +18586,7 @@ __metadata: optional: true react-native-worklets: optional: true - checksum: 10c0/91430eb36a5ff5f7e43519a79b384bc9648776c2b4788900e8f9154a706cc8c60c101decc3ef32631cef300f2f636e9aeb038ccf90b15dd8cbb7f8381f39fa4b + checksum: 10c0/fd72b41e19819008d6966159a153589fd04f06c1d8ef1665ed37f3ba76af1096ff9e8eff0bbbf1f4d0ee2f59377e675e95d41286166f4e58488e845a038b93ca languageName: node linkType: hard From 6402026509e7d9a28441c3c094411c25e023cde8 Mon Sep 17 00:00:00 2001 From: Milosz Filimowski Date: Wed, 16 Sep 2026 11:32:20 +0200 Subject: [PATCH 3/3] chore: drop stray lockfile entries --- yarn.lock | 56 ------------------------------------------------------- 1 file changed, 56 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7010d03d..fc099bd4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5634,38 +5634,6 @@ __metadata: languageName: node linkType: hard -"@fishjam-cloud/video-effects@npm:0.1.4": - version: 0.1.4 - resolution: "@fishjam-cloud/video-effects@npm:0.1.4" - dependencies: - "@webgpu/types": "npm:0.1.65" - typed-binary: "npm:^4.3.3" - typegpu: "npm:^0.12.0" - peerDependencies: - "@fishjam-cloud/react-client": "*" - "@fishjam-cloud/react-native-client": "*" - "@fishjam-cloud/react-native-webrtc": ">=0.30.2" - react: ">=18" - react-native: "*" - react-native-webgpu: ">=0.5.15" - react-native-worklets: ">=0.12.1" - peerDependenciesMeta: - "@fishjam-cloud/react-client": - optional: true - "@fishjam-cloud/react-native-client": - optional: true - "@fishjam-cloud/react-native-webrtc": - optional: true - react-native: - optional: true - react-native-webgpu: - optional: true - react-native-worklets: - optional: true - checksum: 10c0/1249019e2026b76402fa96cf77ca9d5c692564f627fff45215f9d44bc6b668427f4a6b55aa827d6ee7da466ef0c5fcaf36c100df17b3b0cd0464b16b9edb153f - languageName: node - linkType: hard - "@fishjam-cloud/webrtc-client@workspace:*, @fishjam-cloud/webrtc-client@workspace:packages/webrtc-client": version: 0.0.0-use.local resolution: "@fishjam-cloud/webrtc-client@workspace:packages/webrtc-client" @@ -11437,30 +11405,6 @@ __metadata: languageName: node linkType: hard -"docs-camera-effects-e2e@workspace:examples/mobile-client/docs-camera-effects-e2e": - version: 0.0.0-use.local - resolution: "docs-camera-effects-e2e@workspace:examples/mobile-client/docs-camera-effects-e2e" - dependencies: - "@babel/plugin-transform-class-static-block": "npm:^7.28.3" - "@fishjam-cloud/react-native-client": "workspace:*" - "@fishjam-cloud/react-native-worklets": "npm:0.12.1" - "@fishjam-cloud/video-effects": "npm:0.1.4" - "@types/react": "npm:~19.2.0" - babel-preset-expo: "npm:~57.0.10" - expo: "npm:~57.0.20" - expo-asset: "npm:~57.0.16" - expo-build-properties: "npm:~57.0.17" - expo-file-system: "npm:~57.0.6" - react: "npm:19.2.3" - react-native: "npm:0.86.3" - react-native-webgpu: "npm:0.10.1" - react-native-worklets: "npm:0.12.1" - typegpu: "npm:^0.12.0" - typescript: "npm:~5.9.2" - unplugin-typegpu: "npm:^0.12.0" - languageName: unknown - linkType: soft - "doctrine@npm:^2.1.0": version: 2.1.0 resolution: "doctrine@npm:2.1.0"