Skip to content

[ci][macos] Bump macOS workflow to Xcode 26.4.1 and fmt to 12.1.0#46581

Merged
tsapeta merged 2 commits into
mainfrom
tsapeta/macos-ci-xcode-fmt
Jun 4, 2026
Merged

[ci][macos] Bump macOS workflow to Xcode 26.4.1 and fmt to 12.1.0#46581
tsapeta merged 2 commits into
mainfrom
tsapeta/macos-ci-xcode-fmt

Conversation

@tsapeta

@tsapeta tsapeta commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Why

Two related fixes for the macOS Test Suite workflow:

  1. Xcode bump. test-suite-macos.yml was still pinned to Xcode 26.2 — it missed the repo-wide bump to 26.4.1 ([ci] bump xcode to 26.4, use maestro 2.4.0 on android #46160) because the workflow was added afterward ([network][macOS] Add macOS platform support #46535). Every other iOS workflow is on 26.4.1.

  2. fmt bump. 26.4.1's Clang fails to compile fmt 11.0.2 (fmt/src/format.cc), which react-native-macos@0.81.7 still pulls in via its third-party-podspecs/fmt.podspec. This bumps the pinned fmt to 12.1.0 — the same fix React Native made upstream in Bump fmt to 12.1.0 to fix xcode 26.4 react/react-native#56099 — applied through the existing macOS react-native-macos patch (apps/bare-expo/scripts/fixtures/macos/patches/).

What

  • .github/workflows/test-suite-macos.yml: switch to Xcode 26.4.1.
  • apps/bare-expo/scripts/fixtures/macos/patches/react-native-macos@0.81.7.patch: add a hunk bumping fmt.podspec spec.version/:tag from 11.0.2 to 12.1.0. The setup script copies this into patches/ and registers it in pnpm-workspace.yaml.

Test plan

  • The macOS Test Suite workflow runs on this PR and should now build on 26.4.1 with fmt 12.1.0.
  • Verified the patch hunk applies cleanly to the installed react-native-macos@0.81.7 fmt.podspec (git apply --check).

Surfaced while bumping the same workflow on #46555; this splits the macOS-CI fixes out so that PR stays focused on the Module.emit feature.

The macOS test-suite workflow was still pinned to Xcode 26.2 — it missed the
repo-wide bump to 26.4.1 (#46160) because the workflow was added afterwards
(#46535). Aligns it with every other iOS workflow.

26.4.1's Clang fails to compile fmt 11.0.2 (`fmt/src/format.cc`), which
`react-native-macos@0.81.7` still pulls in. Bumps the pinned `fmt` podspec to
12.1.0 via the macOS rn-macos patch, matching what React Native did upstream
(react/react-native#56099).
@expo-bot expo-bot added contributor: internal PR author is a member, owner, or collaborator of the expo org bot: passed checks ExpoBot has nothing to complain about labels Jun 4, 2026
@expo-bot

expo-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

The Pull Request introduced fingerprint changes against the base commit: c16cce5

Fingerprint diff
[
  {
    "op": "changed",
    "beforeSource": {
      "type": "dir",
      "filePath": "../../packages/@expo/log-box",
      "reasons": [
        "expoAutolinkingIos",
        "expoAutolinkingAndroid"
      ],
      "hash": "e77022717d42f0be840977f4826403a9637b65be"
    },
    "afterSource": {
      "type": "dir",
      "filePath": "../../packages/@expo/log-box",
      "reasons": [
        "expoAutolinkingIos",
        "expoAutolinkingAndroid"
      ],
      "hash": "498e60d45ff464db16b4bcbc9bfabfb9b9451f61"
    }
  },
  {
    "op": "changed",
    "beforeSource": {
      "type": "dir",
      "filePath": "../../packages/expo",
      "reasons": [
        "expoAutolinkingIos",
        "expoAutolinkingAndroid",
        "expoConfigPlugins",
        "expoConfigPlugins",
        "rncoreAutolinkingAndroid",
        "rncoreAutolinkingIos"
      ],
      "hash": "96aac96434739db91880a6268f989e020b519a9c"
    },
    "afterSource": {
      "type": "dir",
      "filePath": "../../packages/expo",
      "reasons": [
        "expoAutolinkingIos",
        "expoAutolinkingAndroid",
        "expoConfigPlugins",
        "expoConfigPlugins",
        "rncoreAutolinkingAndroid",
        "rncoreAutolinkingIos"
      ],
      "hash": "d7f77c4d7754a82c52a82fcc6524c7512ee7fb36"
    }
  },
  {
    "op": "changed",
    "beforeSource": {
      "type": "dir",
      "filePath": "../../packages/expo-dev-launcher",
      "reasons": [
        "expoAutolinkingIos",
        "expoAutolinkingAndroid"
      ],
      "hash": "65bd60f85c19d156ded843035f09b9bfeafcdf56"
    },
    "afterSource": {
      "type": "dir",
      "filePath": "../../packages/expo-dev-launcher",
      "reasons": [
        "expoAutolinkingIos",
        "expoAutolinkingAndroid"
      ],
      "hash": "064e2d761eb4e9a926b565225041fbe75beeee51"
    }
  },
  {
    "op": "changed",
    "beforeSource": {
      "type": "dir",
      "filePath": "../../packages/expo-dev-menu",
      "reasons": [
        "expoAutolinkingIos",
        "expoAutolinkingAndroid"
      ],
      "hash": "d33690ea81486979b6cdc376e16b913248abb481"
    },
    "afterSource": {
      "type": "dir",
      "filePath": "../../packages/expo-dev-menu",
      "reasons": [
        "expoAutolinkingIos",
        "expoAutolinkingAndroid"
      ],
      "hash": "82ae876754d09c812c4932076f4e47efb47b67df"
    }
  },
  {
    "op": "changed",
    "beforeSource": {
      "type": "dir",
      "filePath": "../../packages/expo-gl",
      "reasons": [
        "expoAutolinkingIos",
        "expoAutolinkingAndroid"
      ],
      "hash": "004fbfdb83f3ba2b5eda2b957c89dcec0a85ca4e"
    },
    "afterSource": {
      "type": "dir",
      "filePath": "../../packages/expo-gl",
      "reasons": [
        "expoAutolinkingIos",
        "expoAutolinkingAndroid"
      ],
      "hash": "53b4409ee69f302f7d6120e1c1d9ddfd17fcd350"
    }
  },
  {
    "op": "changed",
    "beforeSource": {
      "type": "dir",
      "filePath": "../../packages/expo-modules-core",
      "reasons": [
        "expoAutolinkingIos",
        "expoAutolinkingAndroid",
        "expoAutolinkingIos"
      ],
      "hash": "21c8bf2e595aa60760418833c7bd9aaf40121d91"
    },
    "afterSource": {
      "type": "dir",
      "filePath": "../../packages/expo-modules-core",
      "reasons": [
        "expoAutolinkingIos",
        "expoAutolinkingAndroid",
        "expoAutolinkingIos"
      ],
      "hash": "b1ce54b465bbbfb8620b8957e1c0bd69ba65dc0e"
    }
  },
  {
    "op": "changed",
    "beforeSource": {
      "type": "dir",
      "filePath": "node_modules/@shopify/react-native-skia",
      "reasons": [
        "rncoreAutolinkingAndroid"
      ],
      "hash": "4504c1f47440ab77923c2231edf8b06899578cdc"
    },
    "afterSource": {
      "type": "dir",
      "filePath": "node_modules/@shopify/react-native-skia",
      "reasons": [
        "rncoreAutolinkingAndroid"
      ],
      "hash": "3f9e1aacb7f75a36f2668ba943381096ba26eac4"
    }
  }
]

Generated by PR labeler 🤖

The earlier fmt podspec bump alone wasn't enough — `RCT-Folly.podspec` pins
`fmt` to an exact version (`spec.dependency "fmt", "11.0.2"`), so leaving it at
11.0.2 made CocoaPods unable to resolve a compatible `fmt`. Bumps that pin to
12.1.0 too (matching react/react-native#56099), and regenerates the macOS
`Podfile.lock` so the committed lock matches what `pod install` produces.
@tsapeta

tsapeta commented Jun 4, 2026

Copy link
Copy Markdown
Contributor Author

Pushed the lockfile fix. The fmt bump needed two more pieces beyond fmt.podspec:

  • RCT-Folly.podspec pins fmt to an exact version (spec.dependency "fmt", "11.0.2"), so it had to be bumped to 12.1.0 too — otherwise CocoaPods can't resolve a compatible fmt ("could not find compatible versions for pod fmt"). This matches what Bump fmt to 12.1.0 to fix xcode 26.4 react/react-native#56099 did (it bumped the pin everywhere, not just the fmt podspec).
  • Regenerated apps/bare-expo/macos/Podfile.lock via pod update fmt so the committed lock matches what pod install produces (fmt 12.1.0 + refreshed checksums). Reproduced the original CI failure locally and confirmed pod install now completes with Installing fmt (12.1.0) and Podfile.lock == Pods/Manifest.lock.

@tsapeta tsapeta marked this pull request as ready for review June 4, 2026 20:34
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Subscribed to pull request

File Patterns Mentions
.github/workflows/** @brentvatne, @Kudo

Generated by CodeMention

chatgpt-codex-connector[bot]

This comment was marked as resolved.

@tsapeta tsapeta merged commit 4842b0e into main Jun 4, 2026
10 checks passed
@tsapeta tsapeta deleted the tsapeta/macos-ci-xcode-fmt branch June 4, 2026 21:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot: fingerprint changed bot: passed checks ExpoBot has nothing to complain about contributor: internal PR author is a member, owner, or collaborator of the expo org

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants