From 52649c215e4670e22b8854f8b0a44abe41d2a362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Fri, 14 Nov 2025 15:02:35 +0100 Subject: [PATCH 1/3] Prevent weak-node-api from being stripped when building with ferric --- packages/ferric/src/cargo.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/ferric/src/cargo.ts b/packages/ferric/src/cargo.ts index 4eee45b2..d3fc8ae7 100644 --- a/packages/ferric/src/cargo.ts +++ b/packages/ferric/src/cargo.ts @@ -219,8 +219,9 @@ export function getTargetEnvironmentVariables({ CARGO_ENCODED_RUSTFLAGS: [ "-L", weakNodeApiPath, - "-l", - "weak-node-api", + "-C", + // Passing --no-as-needed to prevent weak-node-api from being optimized away + "link-arg=-Wl,--push-state,--no-as-needed,-lweak-node-api,--pop-state", ].join(String.fromCharCode(0x1f)), CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER: joinPathAndAssertExistence( toolchainBinPath, From 91190a01db3a87f950d355ecb2cf1865006158e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Fri, 14 Nov 2025 15:02:57 +0100 Subject: [PATCH 2/3] Updating napi-rs crates --- packages/ferric-example/Cargo.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/ferric-example/Cargo.toml b/packages/ferric-example/Cargo.toml index 2524a0e8..a884b2ac 100644 --- a/packages/ferric-example/Cargo.toml +++ b/packages/ferric-example/Cargo.toml @@ -8,17 +8,17 @@ license = "MIT" crate-type = ["cdylib"] [dependencies.napi] -version = "3.1" -default-features = false +version = "3.4.0" # see https://nodejs.org/api/n-api.html#node-api-version-matrix +default-features = false features = ["napi3"] [dependencies.napi-derive] -version = "3.1" +version = "3.3.0" features = ["type-def"] [build-dependencies] -napi-build = "2" +napi-build = "2.2.4" [profile.release] lto = true From baf25fcf622192c06c65f0244c480a22a2094ee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Sat, 15 Nov 2025 00:03:22 +0100 Subject: [PATCH 3/3] Pinning napi and napi-sys --- packages/ferric-example/Cargo.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/ferric-example/Cargo.toml b/packages/ferric-example/Cargo.toml index a884b2ac..a301bce0 100644 --- a/packages/ferric-example/Cargo.toml +++ b/packages/ferric-example/Cargo.toml @@ -8,7 +8,7 @@ license = "MIT" crate-type = ["cdylib"] [dependencies.napi] -version = "3.4.0" +version = "=3.4.0" # see https://nodejs.org/api/n-api.html#node-api-version-matrix default-features = false features = ["napi3"] @@ -17,6 +17,10 @@ features = ["napi3"] version = "3.3.0" features = ["type-def"] +# See https://github.com/callstackincubator/react-native-node-api/issues/331 +[dependencies.napi-sys] +version = "=3.0.1" + [build-dependencies] napi-build = "2.2.4"