Skip to content

Commit 4ad3cdd

Browse files
committed
🔧
1 parent 24fe208 commit 4ad3cdd

10 files changed

Lines changed: 1800 additions & 3039 deletions

File tree

apps/example/ios/Podfile.lock

Lines changed: 814 additions & 1359 deletions
Large diffs are not rendered by default.

apps/example/package.json

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"postinstall": "node -e \"if (process.platform !== 'darwin') { console.log('Skipping iOS pod install on non-macOS environment.'); process.exit(0); } const { execSync } = require('child_process'); execSync('yarn pod:install:ios', { stdio: 'inherit' });\""
1919
},
2020
"dependencies": {
21-
"@callstack/react-native-visionos": "^0.74.0",
21+
"@callstack/react-native-visionos": "^0.79.6",
2222
"@react-navigation/native": "^6.1.17",
2323
"@react-navigation/stack": "^6.4.0",
2424
"@react-three/fiber": "^9.4.0",
@@ -28,11 +28,11 @@
2828
"@tensorflow/tfjs-vis": "^1.5.1",
2929
"async-mutex": "^0.5.0",
3030
"fast-text-encoding": "^1.0.6",
31-
"react": "19.1.0",
32-
"react-dom": "19.1.0",
33-
"react-native": "0.81.4",
31+
"react": "19.2.3",
32+
"react-dom": "19.2.3",
33+
"react-native": "0.84.0",
3434
"react-native-gesture-handler": "^2.28.0",
35-
"react-native-macos": "^0.79.0",
35+
"react-native-macos": "^0.81.2",
3636
"react-native-reanimated": "4.2.1",
3737
"react-native-safe-area-context": "^5.4.0",
3838
"react-native-web": "^0.21.2",
@@ -47,14 +47,15 @@
4747
"@babel/core": "^7.25.0",
4848
"@babel/preset-env": "^7.25.0",
4949
"@babel/runtime": "^7.25.0",
50-
"@react-native/babel-preset": "0.81.0",
51-
"@react-native/eslint-config": "0.81.0",
52-
"@react-native/metro-config": "0.81.0",
53-
"@react-native/typescript-config": "0.81.0",
50+
"@react-native-community/cli": "^18.0.0",
51+
"@react-native/babel-preset": "0.84.0",
52+
"@react-native/eslint-config": "0.84.0",
53+
"@react-native/metro-config": "0.84.0",
54+
"@react-native/typescript-config": "0.84.0",
5455
"@rnx-kit/metro-config": "^2.0.0",
5556
"@types/node": "^20.14.7",
56-
"@types/react": "19.1.0",
57-
"@types/react-dom": "19.1.0",
57+
"@types/react": "19.2.0",
58+
"@types/react-dom": "19.2.0",
5859
"@types/react-test-renderer": "^18.0.0",
5960
"@types/three": "0.172.0",
6061
"@webgpu/types": "0.1.65",
@@ -64,11 +65,11 @@
6465
"eslint-plugin-prettier": "^5.4.0",
6566
"jest": "^29.6.3",
6667
"prettier": "2.8.8",
67-
"react-native-test-app": "4.4.10",
68-
"react-test-renderer": "18.2.0",
68+
"react-native-test-app": "5.0.13",
69+
"react-test-renderer": "19.2.3",
6970
"typescript": "5.0.4"
7071
},
7172
"engines": {
72-
"node": ">=18"
73+
"node": ">=22.11"
7374
}
7475
}

apps/example/src/Cube/Cubemap.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,10 @@ export const Cubemap = () => {
108108
require("../assets/cubemap/posz.jpg"),
109109
require("../assets/cubemap/negz.jpg"),
110110
];
111+
// TODO: use response.blob() once RN 0.84 blob bug is fixed
111112
const promises = imgSrcs.map(async (src) => {
112113
const response = await fetchAsset(src);
113-
return createImageBitmap(await response.blob());
114+
return createImageBitmap(await response.arrayBuffer());
114115
});
115116
const imageBitmaps = await Promise.all(promises);
116117

apps/example/src/Particles/Particles.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,9 @@ export function Particules() {
185185
let numMipLevels = 1;
186186
let texture: GPUTexture;
187187
{
188+
// TODO: use response.blob() once RN 0.84 blob bug is fixed
188189
const response = await fetchAsset(require("../assets/react.png"));
189-
const imageBitmap = await createImageBitmap(await response.blob());
190+
const imageBitmap = await createImageBitmap(await response.arrayBuffer());
190191

191192
// Calculate number of mip levels required to generate the probability map
192193
while (

apps/example/src/RenderBundles/RenderBundles.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,11 @@ export const RenderBundles = () => {
9797

9898
// Fetch the images and upload them into a GPUTexture.
9999
// Fetch the images and upload them into a GPUTexture.
100+
// TODO: use response.blob() once RN 0.84 blob bug is fixed
100101
let planetTexture: GPUTexture;
101102
{
102103
const response = await fetchAsset(require("../assets/saturn.png"));
103-
const imageBitmap = await createImageBitmap(await response.blob());
104+
const imageBitmap = await createImageBitmap(await response.arrayBuffer());
104105

105106
planetTexture = device.createTexture({
106107
size: [imageBitmap.width, imageBitmap.height, 1],
@@ -120,7 +121,7 @@ export const RenderBundles = () => {
120121
let moonTexture: GPUTexture;
121122
{
122123
const response = await fetchAsset(require("../assets/moon.png"));
123-
const imageBitmap = await createImageBitmap(await response.blob());
124+
const imageBitmap = await createImageBitmap(await response.arrayBuffer());
124125

125126
moonTexture = device.createTexture({
126127
size: [imageBitmap.width, imageBitmap.height, 1],

apps/example/src/components/useAssets.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ export const fetchAsset = async (mod: number) => {
1010
export const decodeImage = async (mod: number) => {
1111
const { uri } = Image.resolveAssetSource(mod);
1212
const response = await fetch(uri);
13-
const blob = await response.blob();
14-
const image = await createImageBitmap(blob);
13+
// TODO: use response.blob() once RN 0.84 blob bug is fixed
14+
const arrayBuffer = await response.arrayBuffer();
15+
const image = await createImageBitmap(arrayBuffer);
1516
return image;
1617
};
1718

package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,13 @@
66
"apps/*"
77
],
88
"resolutions": {
9-
"@types/react": "^18.2.44",
9+
"@types/react": "^19.2.0",
1010
"@webgpu/types": "^0.1.42",
11-
"@react-three/fiber@^9.4.0": "patch:@react-three/fiber@npm%3A9.4.0#./.yarn/patches/@react-three-fiber-npm-9.4.0-77fe8ee9bd.patch"
11+
"@react-three/fiber@^9.4.0": "patch:@react-three/fiber@npm%3A9.4.0#./.yarn/patches/@react-three-fiber-npm-9.4.0-77fe8ee9bd.patch",
12+
"react-native-reanimated@^4.2.1": "patch:react-native-reanimated@npm%3A4.2.1#./.yarn/patches/react-native-reanimated-npm-4.2.1-8be3b216b9.patch",
13+
"react-native-reanimated@4.2.1": "patch:react-native-reanimated@npm%3A4.2.1#./.yarn/patches/react-native-reanimated-npm-4.2.1-8be3b216b9.patch",
14+
"react-native-worklets@^0.7.0": "patch:react-native-worklets@npm%3A0.7.2#./.yarn/patches/react-native-worklets-npm-0.7.2-dd0e6c2e74.patch",
15+
"react-native-worklets@0.7.2": "patch:react-native-worklets@npm%3A0.7.2#./.yarn/patches/react-native-worklets-npm-0.7.2-dd0e6c2e74.patch"
1216
},
1317
"packageManager": "yarn@3.6.1",
1418
"scripts": {

packages/webgpu/apple/WebGPUModule.mm

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,35 +58,30 @@ - (void)invalidate {
5858
return [NSNumber numberWithBool:NO];
5959
}
6060

61-
jsi::Runtime *runtime = (jsi::Runtime *)bridge.runtime;
61+
// In Bridgeless mode, self.bridge is an RCTBridgeProxy which exposes runtime
62+
RCTCxxBridge *cxxBridge = (RCTCxxBridge *)bridge;
63+
jsi::Runtime *runtime = (jsi::Runtime *)cxxBridge.runtime;
6264
if (!runtime) {
6365
NSLog(@"Failed to install react-native-wgpu: jsi::Runtime* was null!");
6466
return [NSNumber numberWithBool:NO];
6567
}
6668

67-
// In Bridgeless mode, CallInvoker is injected via setCallInvoker:
68-
// In Bridge mode, fall back to jsCallInvoker from the bridge
69-
std::shared_ptr<react::CallInvoker> jsInvoker = _callInvoker;
70-
if (!jsInvoker) {
71-
RCTCxxBridge *cxxBridge = (RCTCxxBridge *)bridge;
72-
jsInvoker = cxxBridge.jsCallInvoker;
73-
}
74-
if (!jsInvoker) {
69+
if (!_callInvoker) {
7570
NSLog(@"Failed to install react-native-wgpu: react::CallInvoker was "
7671
@"null!");
7772
return [NSNumber numberWithBool:NO];
7873
}
7974

8075
std::shared_ptr<rnwgpu::PlatformContext> platformContext =
8176
std::make_shared<rnwgpu::ApplePlatformContext>();
82-
// TODO: remove allocation here
83-
webgpuManager = std::make_shared<rnwgpu::RNWebGPUManager>(runtime, jsInvoker,
84-
platformContext);
77+
webgpuManager =
78+
std::make_shared<rnwgpu::RNWebGPUManager>(runtime, _callInvoker, platformContext);
8579
return @true;
8680
}
8781

8882
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
8983
(const facebook::react::ObjCTurboModule::InitParams &)params {
84+
_callInvoker = params.jsInvoker;
9085
return std::make_shared<facebook::react::NativeWebGPUModuleSpecJSI>(params);
9186
}
9287

packages/webgpu/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
"@types/node": "^20.14.7",
6262
"@types/pixelmatch": "5.2.4",
6363
"@types/pngjs": "^6.0.5",
64-
"@types/react": "^18.2.44",
64+
"@types/react": "^19.2.0",
6565
"@types/seedrandom": "^3.0.8",
6666
"@types/ws": "^8.5.10",
6767
"@webgpu/types": "0.1.65",
@@ -79,8 +79,8 @@
7979
"pngjs": "^7.0.0",
8080
"prettier": "^3.0.3",
8181
"puppeteer": "24.24.1",
82-
"react": "19.1.0",
83-
"react-native": "0.81.4",
82+
"react": "19.2.3",
83+
"react-native": "0.84.0",
8484
"react-native-builder-bob": "^0.23.2",
8585
"react-native-reanimated": "^4.2.1",
8686
"react-native-web": "^0.21.2",

0 commit comments

Comments
 (0)