From 9207eef3455757e67936ae0312fc040aa71c11f7 Mon Sep 17 00:00:00 2001 From: Riccardo Cipolleschi Date: Fri, 24 Apr 2026 12:04:57 +0100 Subject: [PATCH 1/2] Skip prebuilds for DynamicFrameworks CI jobs DynamicFrameworks jobs should always build from source to catch CocoaPods misconfigurations with use_frameworks. Previously, prebuilds were always downloaded and used, masking potential failures. --- .github/actions/test-ios-helloworld/action.yml | 10 +++++++--- .github/actions/test-ios-rntester/action.yml | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/actions/test-ios-helloworld/action.yml b/.github/actions/test-ios-helloworld/action.yml index 5064d1184920..8e15485a675a 100644 --- a/.github/actions/test-ios-helloworld/action.yml +++ b/.github/actions/test-ios-helloworld/action.yml @@ -38,19 +38,23 @@ runs: if: ${{ inputs.use-hermes-nightly == 'true' }} uses: ./.github/actions/yarn-install - name: Download ReactNativeDependencies + if: ${{ inputs.use-frameworks != 'DynamicFrameworks' }} uses: actions/download-artifact@v4 with: name: ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz path: /tmp/third-party - name: Print third-party folder + if: ${{ inputs.use-frameworks != 'DynamicFrameworks' }} shell: bash run: ls -lR /tmp/third-party - name: Download React Native Prebuilds + if: ${{ inputs.use-frameworks != 'DynamicFrameworks' }} uses: actions/download-artifact@v4 with: name: ReactCore${{ inputs.flavor }}.xcframework.tar.gz path: /tmp/ReactCore - name: Print ReactCore folder + if: ${{ inputs.use-frameworks != 'DynamicFrameworks' }} shell: bash run: ls -lR /tmp/ReactCore - name: Install iOS dependencies - Configuration ${{ inputs.flavor }}; @@ -61,11 +65,11 @@ runs: if [[ ${{ inputs.use-frameworks }} == "DynamicFrameworks" ]]; then args+=(--frameworks dynamic) + else + export RCT_USE_LOCAL_RN_DEP="/tmp/third-party/ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz" + export RCT_TESTONLY_RNCORE_TARBALL_PATH="/tmp/ReactCore/ReactCore${{ inputs.flavor }}.xcframework.tar.gz" fi - export RCT_USE_LOCAL_RN_DEP="/tmp/third-party/ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz" - export RCT_TESTONLY_RNCORE_TARBALL_PATH="/tmp/ReactCore/ReactCore${{ inputs.flavor }}.xcframework.tar.gz" - yarn bootstrap ios "${args[@]}" | cat - name: Run Helloworld tests diff --git a/.github/actions/test-ios-rntester/action.yml b/.github/actions/test-ios-rntester/action.yml index 28654a14cc3e..f7350b6f785d 100644 --- a/.github/actions/test-ios-rntester/action.yml +++ b/.github/actions/test-ios-rntester/action.yml @@ -49,29 +49,33 @@ runs: if: ${{ inputs.run-unit-tests == 'true' }} uses: ./.github/actions/prepare-ios-tests - name: Download ReactNativeDependencies + if: ${{ inputs.use-frameworks != 'DynamicFrameworks' }} uses: actions/download-artifact@v4 with: name: ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz path: /tmp/third-party/ - name: Print third-party folder + if: ${{ inputs.use-frameworks != 'DynamicFrameworks' }} shell: bash run: ls -lR /tmp/third-party - name: Download React Native Prebuilds + if: ${{ inputs.use-frameworks != 'DynamicFrameworks' }} uses: actions/download-artifact@v4 with: name: ReactCore${{ inputs.flavor }}.xcframework.tar.gz path: /tmp/ReactCore - name: Print ReactCore folder + if: ${{ inputs.use-frameworks != 'DynamicFrameworks' }} shell: bash run: ls -lR /tmp/ReactCore - name: Install CocoaPods dependencies shell: bash run: | - export RCT_USE_LOCAL_RN_DEP="/tmp/third-party/ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz" - export RCT_TESTONLY_RNCORE_TARBALL_PATH="/tmp/ReactCore/ReactCore${{ inputs.flavor }}.xcframework.tar.gz" - if [[ ${{ inputs.use-frameworks }} == "DynamicFrameworks" ]]; then export USE_FRAMEWORKS=dynamic + else + export RCT_USE_LOCAL_RN_DEP="/tmp/third-party/ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz" + export RCT_TESTONLY_RNCORE_TARBALL_PATH="/tmp/ReactCore/ReactCore${{ inputs.flavor }}.xcframework.tar.gz" fi cd packages/rn-tester From 837b9b1373f8ad00f16a035b5fc8cc1f8daaec74 Mon Sep 17 00:00:00 2001 From: Riccardo Cipolleschi Date: Fri, 24 Apr 2026 13:33:00 +0100 Subject: [PATCH 2/2] Use pinned Hermes version when version.properties is not 1000.0.0 The use-hermes-nightly flag was computed from the branch name, which evaluates incorrectly for PR branches targeting stable. Instead, read the actual HERMES_VERSION_NAME from version.properties and only use nightly when it is the 1000.0.0 development placeholder. --- .github/actions/test-ios-helloworld/action.yml | 5 ++++- .github/actions/test-ios-rntester/action.yml | 5 ++++- .github/workflows/prebuild-ios-core.yml | 5 ++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/actions/test-ios-helloworld/action.yml b/.github/actions/test-ios-helloworld/action.yml index 8e15485a675a..52e55b21799c 100644 --- a/.github/actions/test-ios-helloworld/action.yml +++ b/.github/actions/test-ios-helloworld/action.yml @@ -33,7 +33,10 @@ runs: if: ${{ inputs.use-hermes-nightly == 'true' }} shell: bash run: | - node ./scripts/releases/use-hermes-nightly.js + HERMES_VERSION=$(sed -n 's/^HERMES_VERSION_NAME=//p' packages/react-native/sdks/hermes-engine/version.properties) + if [ "$HERMES_VERSION" == "1000.0.0" ]; then + node ./scripts/releases/use-hermes-nightly.js + fi - name: Run yarn install again, with the correct hermes version if: ${{ inputs.use-hermes-nightly == 'true' }} uses: ./.github/actions/yarn-install diff --git a/.github/actions/test-ios-rntester/action.yml b/.github/actions/test-ios-rntester/action.yml index f7350b6f785d..3157a0a742f6 100644 --- a/.github/actions/test-ios-rntester/action.yml +++ b/.github/actions/test-ios-rntester/action.yml @@ -41,7 +41,10 @@ runs: if: ${{ inputs.use-hermes-nightly == 'true' }} shell: bash run: | - node ./scripts/releases/use-hermes-nightly.js + HERMES_VERSION=$(sed -n 's/^HERMES_VERSION_NAME=//p' packages/react-native/sdks/hermes-engine/version.properties) + if [ "$HERMES_VERSION" == "1000.0.0" ]; then + node ./scripts/releases/use-hermes-nightly.js + fi - name: Run yarn install again, with the correct hermes version if: ${{ inputs.use-hermes-nightly == 'true' }} uses: ./.github/actions/yarn-install diff --git a/.github/workflows/prebuild-ios-core.yml b/.github/workflows/prebuild-ios-core.yml index 5e234961fc53..a36570d8ee97 100644 --- a/.github/workflows/prebuild-ios-core.yml +++ b/.github/workflows/prebuild-ios-core.yml @@ -49,10 +49,9 @@ jobs: - name: Set Hermes version shell: bash run: | - if [ "${{ inputs.use-hermes-nightly }}" == "true" ]; then + HERMES_VERSION=$(sed -n 's/^HERMES_VERSION_NAME=//p' packages/react-native/sdks/hermes-engine/version.properties) + if [ "$HERMES_VERSION" == "1000.0.0" ]; then HERMES_VERSION="nightly" - else - HERMES_VERSION=$(sed -n 's/^HERMES_VERSION_NAME=//p' packages/react-native/sdks/hermes-engine/version.properties) fi echo "Using Hermes version: $HERMES_VERSION" echo "HERMES_VERSION=$HERMES_VERSION" >> $GITHUB_ENV