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

@ramonclaudio ramonclaudio commented May 21, 2026

Copy link
Copy Markdown
Contributor

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 guard shape as the two sibling phases in this package (#52133 and #49812) as well as in #48495.

Changelog:

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

Test Plan:

I ran pod install and xcodebuild on RN 0.85.3 with the default prebuilt Hermes.

  • The warning on the Hermes phase turns into a note, the same as the phases that were already fixed.
  • Pods.xcodeproj/project.pbxproj has alwaysOutOfDate = 1; on the phase.
  • The phase still runs and still replaces the binary for the right 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
@ramonclaudio
ramonclaudio force-pushed the fix/hermes-podspec-always-out-of-date branch from 6cf68e3 to 19af5c8 Compare June 2, 2026 20:18
@ramonclaudio
ramonclaudio force-pushed the fix/hermes-podspec-always-out-of-date branch from 19af5c8 to aca2373 Compare July 16, 2026 20:00
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 aca2373 to 518da8e Compare July 30, 2026 12:44
@ramonclaudio

Copy link
Copy Markdown
Contributor Author

Mind taking a look? @cipolleschi @cortinico

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