You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(iOS): stage Hermes headers in prebuild compose job so ReactNativeHeaders resolves <hermes/...>
The iOS prebuild workflow splits into two jobs on separate runners.
`build-rn-slice` stages the hermes-ios headers during setup
(`.build/artifacts/hermes/destroot/include/hermes`) but never hands them
to the `compose-xcframework` job. Compose (`-c` -> `buildXCFrameworks`)
computed the hermes include path from a directory that never exists on the
compose runner, silently got `null`, and skipped the hermes-header fold in
`headers-compose.js`. The published ReactNativeHeaders.xcframework therefore
shipped without `hermes/`, so consumers couldn't resolve `<hermes/...>`. No
warning fired, so every nightly regressed silently.
Fix (build-time, matches the artifact's self-contained design):
- compose-xcframework now re-stages the hermes-ios headers before composing
("Set Hermes version" + "Stage Hermes headers"), guarded by the same
cache-hit condition as its sibling steps.
- Extract the hermes-header resolution into an exported
`resolveHermesHeaders(buildFolder, required)` with a `findFirst` fallback,
and fail closed (throw) when a version-stamped CI cut can't find the
headers instead of shipping without them. Gated behind a new
`--require-hermes` flag, passed by the workflow only when `version-type`
is set (local dev keeps the previous no-fold behavior).
Adds unit tests for the resolver (found / findFirst fallback /
absent-not-required -> null / absent-required -> throws).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments