Skip to content

Set always_out_of_date on hermes-engine Replace Hermes phase#56912

Open
ramonclaudio wants to merge 1 commit into
react:mainfrom
ramonclaudio:fix/hermes-podspec-always-out-of-date
Open

Set always_out_of_date on hermes-engine Replace Hermes phase#56912
ramonclaudio wants to merge 1 commit into
react:mainfrom
ramonclaudio:fix/hermes-podspec-always-out-of-date

Conversation

@ramonclaudio

Copy link
Copy Markdown

Summary:

hermes-engine.podspec's [Hermes] Replace Hermes for the right configuration, if needed script_phase is missing :always_out_of_date, so Xcode 14+ emits a will be run during every build because it does not specify any outputs warning on every clean iOS build of every project on the default prebuilt-release-tarball Hermes path. Set the flag using the same script_phase = {...} + Pod::VERSION >= 1.13.0 guard shape as the two sibling Replace X for the right configuration phases in this package (React-Core-prebuilt.podspec from #52133, ReactNativeDependencies.podspec from #49812). Same property previously accepted in #48495 for React-RCTFBReactNativeSpec.podspec. hermes-engine is the last Replace X phase in the package without it.

Changelog:

[IOS] [FIXED] - Set always_out_of_date on hermes-engine's Replace Hermes script phase

Test Plan:

pod install + xcodebuild on RN 0.85.3 against the default prebuilt Hermes path. The Hermes phase's warning: ... will be run during every build because it does not specify any outputs downgrades to note: ... "Based on dependency analysis" is unchecked, matching the three sibling phases already fixed. Generated Pods.xcodeproj/project.pbxproj carries alwaysOutOfDate = 1; on the phase. Script body unchanged, phase still runs every build, Hermes binary still replaced based on $CONFIGURATION.

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label May 21, 2026
@facebook-github-tools facebook-github-tools Bot added the Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team. label May 21, 2026
The `[Hermes] Replace Hermes for the right configuration, if needed`
script_phase has no declared outputs because it overwrites the prebuilt
Hermes binary in place based on `$CONFIGURATION`. Xcode 14+ emits
"will be run during every build because it does not specify any
outputs" on every clean build of every project on the prebuilt-release
tarball path.

Set `script_phase[:always_out_of_date] = "1"` guarded by a
`Pod::VERSION >= 1.13.0` check. Apple's documented opt-in for "yes,
this phase intentionally runs every build." The phase still runs every
build. The warning downgrades to a `note`.

Matches the existing shape of the two sibling `Replace X for the right
configuration` script_phases in the same package:
  - `React-Core-prebuilt.podspec` (react#52133)
  - `third-party-podspecs/ReactNativeDependencies.podspec` (react#49812)

Same property previously accepted in react#48495 (`088fcb1e5d`) for
`React-RCTFBReactNativeSpec.podspec` and the codegen podspecs (later
consolidated in react#50317). `hermes-engine` is the last `Replace X` phase
in the package without it.
@ramonclaudio ramonclaudio force-pushed the fix/hermes-podspec-always-out-of-date branch from 6cf68e3 to 19af5c8 Compare June 2, 2026 20:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant