Tracking the TODO in the test-ios job of .github/workflows/check.yml.
The iOS integration tests only ever run in the default (Debug) configuration; the Release invocation is present but commented out:
|
- name: Run tests (iOS) |
|
run: pnpm run test:ios:allTests |
|
# TODO: Enable release mode when it works |
|
# run: pnpm run test:ios:allTests --mode Release |
|
working-directory: apps/test-app |
Debug-only coverage leaves the configuration users actually ship untested. Release differs in ways that matter for this project specifically: optimisation and dead-stripping can drop symbols the addon loader looks up at runtime, NDEBUG removes the asserts that the C++ host relies on for its invariants, and code-signing/bitcode behaviour differs for the dynamic libraries inside the prebuilt XCFrameworks.
The TODO says "when it works", so the first step is to find out how it currently fails — run pnpm run test:ios:allTests --mode Release locally against apps/test-app and capture the failure. Depending on what it is, the fix may live in the prebuild pipeline (packages/host/src/node/prebuilds/apple.ts) rather than in the workflow.
Related: Logger.cpp unconditionally emits debug logs, which a Release run would surface (see the "disable debug logging in release builds" issue).
Tracking the
TODOin thetest-iosjob of.github/workflows/check.yml.The iOS integration tests only ever run in the default (Debug) configuration; the Release invocation is present but commented out:
react-native-node-api/.github/workflows/check.yml
Lines 236 to 240 in 29a527d
Debug-only coverage leaves the configuration users actually ship untested. Release differs in ways that matter for this project specifically: optimisation and dead-stripping can drop symbols the addon loader looks up at runtime,
NDEBUGremoves theasserts that the C++ host relies on for its invariants, and code-signing/bitcode behaviour differs for the dynamic libraries inside the prebuilt XCFrameworks.The
TODOsays "when it works", so the first step is to find out how it currently fails — runpnpm run test:ios:allTests --mode Releaselocally againstapps/test-appand capture the failure. Depending on what it is, the fix may live in the prebuild pipeline (packages/host/src/node/prebuilds/apple.ts) rather than in the workflow.Related:
Logger.cppunconditionally emits debug logs, which a Release run would surface (see the "disable debug logging in release builds" issue).