feat: Add Xcode 26 support#1888
Conversation
|
🚀 Thanks for opening this pull request! We appreciate your effort in improving the project. Please let us know once your pull request is ready for review. Tip
Note Please respond to review comments from AI agents just like you would to comments from a human reviewer. Let the reviewer resolve their own comments, unless they have reviewed and accepted your commit, or agreed with your explanation for why the feedback was incorrect. Caution Pull requests must be written using an AI agent with human supervision. Pull requests written entirely by a human will likely be rejected, because of lower code quality, higher review effort and the higher risk of introducing bugs. Please note that AI review comments on this pull request alone do not satisfy this requirement. Our CI and AI review are safeguards, not development tools. If many issues are flagged, rethink your development approach. Invest more effort in planning and design rather than using review cycles to fix low-quality code. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughAdded Xcode 26 support across CI and docs; adjusted CI matrix, artifact naming, and TEST_RESULTS discovery; added explicit SwiftPM resolution in workflows; bumped Ruby and Bundler versions; added Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 actionlint (1.7.12).github/workflows/ci.ymlcould not read ".github/workflows/ci.yml": open .github/workflows/ci.yml: no such file or directory 🔧 YAMLlint (1.38.0).github/workflows/ci.yml[Errno 2] No such file or directory: '.github/workflows/ci.yml' 🔧 Checkov (3.2.519).github/workflows/ci.yml2026-04-17 14:50:00,023 [MainThread ] [ERROR] Template file not found: .github/workflows/ci.yml ... [truncated 8994 characters] ... [Errno 2] No such file or directory: '.github/workflows/ci.yml' Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/ci.yml:
- Line 70: The matrix entry macosVersion set to "26-arm64" produces an invalid
runner label after the workflow prefixes "macos-" (resulting in
"macos-26-arm64"); update all occurrences of matrix.macosVersion values (e.g.,
the entries currently "26-arm64" at the referenced lines) to the documented
macOS 26 label "26" so the concatenation yields "macos-26" and the Xcode 26 jobs
can start; apply the same change to the other listed occurrences (lines
referenced in the comment).
- Around line 65-67: Replace simulator device names that aren't present on
macOS-26 arm64 images: locate the iosDeviceModel entries and change "iPhone 16"
to "iPhone 17" (for all occurrences), and locate the watchDeviceModel entries
and change "Apple Watch Series 10 (46mm)" to a Series 11 variant (e.g., "Apple
Watch Series 11 (49mm)") so the destination strings resolve on the macOS-26
arm64 runner.
In @.ruby-version:
- Line 1: Update Gemfile.lock's BUNDLED WITH entry to a Bundler 4.x version
before merging the change to .ruby-version (4.0.0): regenerate Gemfile.lock
using Bundler 4.0.0+ (run bundle _4.x_ install or update on a machine with
Bundler 4.x) so the Gemfile.lock's "BUNDLED WITH" reflects a 4.x Bundler and
then commit the updated Gemfile.lock alongside the .ruby-version change to avoid
CI bundle install failures.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: ad1bc6bf-13a6-40e3-9b2f-33eb32939125
⛔ Files ignored due to path filters (1)
Gemfile.lockis excluded by!**/*.lock
📒 Files selected for processing (3)
.github/workflows/ci.yml.ruby-versionREADME.md
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/ci.yml:
- Around line 25-27: Replace incompatible simulator device names in
.github/workflows/ci.yml by updating every iosDeviceModel and watchDeviceModel
entry that currently uses "iPhone 17" to "iPhone 16" and any "Apple Watch Series
11 (46mm)" to "Apple Watch Series 10 (46mm)"; specifically edit the
iosDeviceModel and watchDeviceModel keys (used in build:starters, test:ios,
test:parse_live_query:watchos jobs) so the devices are compatible with Xcode 16
/ iOS 18.5 / watchOS 11.5.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 1bb2baf4-fa7a-48d3-93ba-d984bb231436
⛔ Files ignored due to path filters (1)
Gemfile.lockis excluded by!**/*.lock
📒 Files selected for processing (2)
.github/workflows/ci.ymlCONTRIBUTING.md
✅ Files skipped from review due to trivial changes (1)
- CONTRIBUTING.md
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)
12-12: Prefer the stable26.4symlink over the exact patch bundle.Line 12 pins
Xcode_26.4.0.app. The macOS 26 arm64 runner image exposesXcode_26.4.appas a stable symlink pointing to the same bundle, and when a new patch ships, the exact patch-specific path may become stale. The minor-version symlink is the recommended choice for stability.Suggested change
- CI_XCODE_26: /Applications/Xcode_26.4.0.app/Contents/Developer + CI_XCODE_26: /Applications/Xcode_26.4.app/Contents/Developer🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/ci.yml at line 12, Update the CI Xcode path to use the stable minor-version symlink instead of the patch-specific bundle: replace the value for CI_XCODE_26 that currently points to /Applications/Xcode_26.4.0.app/Contents/Developer with /Applications/Xcode_26.4.app/Contents/Developer so the runner remains valid when patch releases are rolled out.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/ci.yml:
- Line 49: Update the workflow lane label so it matches the actual watchOS
version being tested: change the "LiveQuery Module, watchOS 10" label to reflect
the configured watchOsVersion '11.5' (or alternatively change the watchOsVersion
to '10' if that was intended). Locate the label string "LiveQuery Module,
watchOS 10" and the watchOsVersion key to ensure they are consistent and make
the label accurately describe the lane being executed.
- Around line 61-100: The ARTIFACT_NAME generation currently uses matrix.script
which can duplicate across Xcode versions; update the "Generate Environment
Variables" step to set ARTIFACT_NAME from matrix.name instead of matrix.script
(use ARTIFACT_NAME: ${{ matrix.name }}-logs) so each matrix row (matrix.name)
yields a unique artifact name and avoids upload collisions with
actions/upload-artifact@v4.
---
Nitpick comments:
In @.github/workflows/ci.yml:
- Line 12: Update the CI Xcode path to use the stable minor-version symlink
instead of the patch-specific bundle: replace the value for CI_XCODE_26 that
currently points to /Applications/Xcode_26.4.0.app/Contents/Developer with
/Applications/Xcode_26.4.app/Contents/Developer so the runner remains valid when
patch releases are rolled out.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: d563a5f8-adf6-48ca-a9be-a255aa0dbf7d
📒 Files selected for processing (1)
.github/workflows/ci.yml
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1888 +/- ##
===========================================
+ Coverage 64.24% 82.49% +18.24%
===========================================
Files 201 282 +81
Lines 23233 30778 +7545
===========================================
+ Hits 14926 25390 +10464
+ Misses 8307 5388 -2919 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@coderabbitai resume |
✅ Actions performedReviews resumed. |
mtrezza
left a comment
There was a problem hiding this comment.
-
Parse-iOS.xcschemeadds three tests toSkippedTests:testFindObjectsCacheElseNetworkCacheResult,testFindObjectsCacheOnly,testFindObjectsNetworkElseCache. This scheme runs for both Xcode 16 and Xcode 26 lanes, so coverage regresses on the already-supported stack too. The PR body doesn't explain why these are skipped and no tracking issue is linked. Please document the reason (Xcode 26 regression? flake? environment?). -
The new Xcode 26 row lists
>= 6.1.1, but 6.1.1 is the currently released version and does not contain this change. Xcode 26 support will first ship in the next release —>= 6.2.0. -
/Applications/Xcode_26.4.0.app/Contents/Developerworks today but breaks the moment the runner image rolls forward a patch. Prefer the stable minor symlink/Applications/Xcode_26.4.app/Contents/Developer.
|
Seems to be a simulator avail issue? |
|
Try re running the CI |
|
done |
|
@mtrezza Looks like the test suite is flaky. This doesn't show in the CI. CI says all tests passed but test failed in the background. This is the artifact from the failed build.
|
|
Can this be merged? |
|
I believe this can be merged |

New Pull Request Checklist
Approach
Add support for XCode 26. This feature uses arm64 (Apple Sillicon).
Summary by CodeRabbit
Chores
Documentation