Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build_ios_simulator_app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ on:
description: "Should a parent repo be used for customizations? (Required for branded builds)"
runner-label:
type: string
default: "macos-latest"
default: "macos-15"
customizations_env_content:
required: false
type: string
Expand Down Expand Up @@ -61,7 +61,7 @@ jobs:
- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
xcode-version: 16.4

- name: Build release .app for simulators by @${{ github.actor }}
run: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build_tvos_simulator_app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ on:
description: "Should a parent repo be used for customizations? (Required for branded builds)"
runner-label:
type: string
default: "macos-latest"
default: "macos-15"
customizations_env_content:
required: false
type: string
Expand Down Expand Up @@ -61,7 +61,7 @@ jobs:
- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
xcode-version: 16.4

- name: Build release tvOS .app for simulators by @${{ github.actor }}
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/deploy-static-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
- name: Set macos runner
id: set-macos-runner
run: |
echo "runner-label=${{ vars.PREFERRED_MACOS_RUNNER || 'macos-latest' }}" >> $GITHUB_OUTPUT
echo "runner-label=${{ vars.PREFERRED_MACOS_RUNNER || 'macos-15' }}" >> $GITHUB_OUTPUT

build_info:
runs-on: ubuntu-latest
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/testflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ on:
description: Upload iOS (iphoneos) or tvOS (appletvos) app
runner-label:
type: string
default: "macos-latest"
default: "macos-15"
customizations_env_content:
required: false
type: string
Expand Down Expand Up @@ -135,7 +135,7 @@ jobs:
- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
xcode-version: 16.4

- name: Build and archive app for upload to Testflight by @${{ github.actor }}
env:
Expand Down
10 changes: 10 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,16 @@ Examples: `cust-app-blender`, `cust-app-xrtube`, `cust-app-basspistol`, `cust-ap
- App Store Connect and Google Play accounts
- Certificate/signing keys in GitHub Secrets

### macOS Runner & Xcode Version

iOS/tvOS build workflows pin both the macOS runner image and Xcode version to ensure compatibility with Expo SDK 52 / React Native 0.76:

- **Xcode:** Pinned to `16.4` via `maxim-lobanov/setup-xcode@v1`. Do NOT use `latest-stable` — the `macos-15` runner now ships both Xcode 16.x and Xcode 26.3 RC, and `latest-stable` resolves to 26.x which is incompatible with React Native 0.76. Apple skipped versions 17–25 (jumped from 16 to 26).
Copy link

Copilot AI Feb 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The statement "latest-stable resolves to 26.x" should be more specific. According to the issue description and PR context, it resolves to "Xcode 26.3 RC" (Release Candidate), not a general "26.x" version. Using "26.x" might imply any 26.x version would be problematic, when the specific issue is with the RC version that's currently marked as latest-stable.

Consider revising to: "latest-stable resolves to Xcode 26.3 RC which is incompatible..." for accuracy.

Suggested change
- **Xcode:** Pinned to `16.4` via `maxim-lobanov/setup-xcode@v1`. Do NOT use `latest-stable` — the `macos-15` runner now ships both Xcode 16.x and Xcode 26.3 RC, and `latest-stable` resolves to 26.x which is incompatible with React Native 0.76. Apple skipped versions 17–25 (jumped from 16 to 26).
- **Xcode:** Pinned to `16.4` via `maxim-lobanov/setup-xcode@v1`. Do NOT use `latest-stable` — the `macos-15` runner now ships both Xcode 16.x and Xcode 26.3 RC, and `latest-stable` currently resolves to Xcode 26.3 RC, which is incompatible with React Native 0.76. Apple skipped versions 17–25 (jumped from 16 to 26).

Copilot uses AI. Check for mistakes.
- **Runner:** `macos-15` (default in reusable workflow inputs). Do NOT use `macos-latest` — it resolves to macOS 26.
Comment on lines +244 to +245
Copy link

Copilot AI Feb 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The statement "it resolves to macOS 26" is incorrect. The macos-latest runner resolves to the latest stable macOS version (currently macOS 14 or 15), not "macOS 26".

The confusion appears to be between macOS versions and Xcode versions. While Xcode did skip from version 16 to 26, macOS versions follow a different sequential pattern (macOS 11, 12, 13, 14, 15, etc.).

The actual issue is that macos-latest currently points to a runner that may have different Xcode versions available than macos-15, which could cause build inconsistencies. The documentation should clarify this distinction.

Suggested change
- **Xcode:** Pinned to `16.4` via `maxim-lobanov/setup-xcode@v1`. Do NOT use `latest-stable` — the `macos-15` runner now ships both Xcode 16.x and Xcode 26.3 RC, and `latest-stable` resolves to 26.x which is incompatible with React Native 0.76. Apple skipped versions 17–25 (jumped from 16 to 26).
- **Runner:** `macos-15` (default in reusable workflow inputs). Do NOT use `macos-latest` — it resolves to macOS 26.
- **Xcode:** Pinned to `16.4` via `maxim-lobanov/setup-xcode@v1`. Do NOT use `latest-stable` — the `macos-15` runner now ships both Xcode 16.x and Xcode 26.3 RC, and `latest-stable` resolves to Xcode 26.x which is incompatible with React Native 0.76. Apple skipped Xcode versions 17–25 (jumped from 16 to 26).
- **Runner:** `macos-15` (default in reusable workflow inputs). Do NOT use `macos-latest` — it resolves to the latest stable macOS version (currently macOS 15), which may expose different Xcode versions than `macos-15` and can cause build inconsistencies. Do not confuse macOS versioning with Xcode’s jump from 16 to 26.

Copilot uses AI. Check for mistakes.
- **Override:** The main repo can override the runner via `PREFERRED_MACOS_RUNNER` variable in the `owntube` environment. Downstream branded app repos use the default from the reusable workflow inputs.

When upgrading Expo SDK or React Native, re-evaluate whether newer Xcode/runner versions are compatible and update the pins accordingly.

### Environments

1. **`owntube` environment:** Stores sensitive secrets for app builds
Expand Down