Use the prebuilt Hermes archive for iOS builds - #441
Merged
Conversation
Base automatically changed from
claude/hermes-source-build-cache-zk13mc
to
next
August 13, 2026 15:00
This was referenced Aug 13, 2026
kraenhansen
force-pushed
the
claude/hermes-prebuilt-consume-zk13mc
branch
from
August 13, 2026 16:51
b086bcf to
1b3af19
Compare
kraenhansen
changed the base branch from
next
to
claude/hermes-prebuilt-visionos-env-zk13mc
August 13, 2026 16:51
Base automatically changed from
claude/hermes-prebuilt-visionos-env-zk13mc
to
next
August 13, 2026 17:07
Hermes is the iOS build: 17m15s of an 18m58s "Build test app" step. Point pod install at the archive built by `prebuilt-hermes` through HERMES_ENGINE_TARBALL_PATH, so hermes-engine.podspec vendors the prebuilt frameworks and its two Hermes script phases don't run at all. Building from source stays available behind REACT_NATIVE_NODE_API_HERMES_FROM_SOURCE=1, which is the faster loop while iterating on Hermes itself. react-native-macos stays on that path for now, see #392. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UkNbgdyuKgHaFwT27RahGH
kraenhansen
force-pushed
the
claude/hermes-prebuilt-consume-zk13mc
branch
from
August 13, 2026 17:16
1b3af19 to
233fe34
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hermes is the iOS build: 17m15s of an 18m58s
Build test appstep, measured in #439. This pointspod installat the prebuilt archive instead.What changes
scripts/patch-hermes.rbsetsHERMES_ENGINE_TARBALL_PATHfromprebuilt-hermesinstead ofREACT_NATIVE_OVERRIDE_HERMES_DIRfromvendor-hermes.hermes_source_type()then returnsLOCAL_PREBUILT_TARBALL, and the[RN] [1] Build Hermesc/[RN] [2] Build Hermesscript phases don't run at all.Building from source stays available as a manually-activated fallback, and is the faster loop while iterating on Hermes itself — Xcode rebuilds it incrementally, rather than re-packaging an archive every cycle:
Setting
REACT_NATIVE_OVERRIDE_HERMES_DIRorHERMES_ENGINE_TARBALL_PATHyourself still takes precedence over both. Android is untouched — it keeps building from thevendor-hermescheckout through Gradle.react-native-macosalso stays on the source path, since the archive is only produced and exercised for the iOS platforms. The steps to move it over are written up in #392, which is where that work is already gated.CI
test-iosgets anactions/cachekeyed by the archive name, and an explicitBuild prebuilt Hermesstep. The step is explicit so a cold cache shows up in the job log as its own step rather than as a mysteriously slowpod install.The archive for this pin and React Native version is already published, so that step downloads 118 MB rather than building. It only builds locally — around half an hour — when neither the cache nor the release has a matching archive, which is what a bumped pin looks like before its
Hermes prebuiltrun finishes.Test plan
Test app (iOS)passes (label-gated onApple 🍎, attached)Build prebuilt Hermesdownloads the published archive instead of buildingpod installlogs[Node-API] Using prebuilt Hermes from ..., and no[RN] [1]/[2] Build Hermes*phase appears in the Xcode buildTest app (Android)still resolvesREACT_NATIVE_OVERRIDE_HERMES_DIRthroughvendor-hermesThis is the first exercise of the consuming side: everything merged so far only proves the archive can be produced, not that
pod installaccepts one and the app runs. That can't be checked from a Linux worker. The type-check, lint, prettier, depcheck and publint all pass.