Skip to content

feat(ios): cache Swift compiles with Xcode compilation cache - #1198

Open
krozniata wants to merge 1 commit into
mainfrom
feat/compiler-cache
Open

krozniata wants to merge 1 commit into
mainfrom
feat/compiler-cache

Conversation

@krozniata

Copy link
Copy Markdown
Member

Summary

Speeds up iOS CI by adding Xcode's compilation cache for Swift, next to the existing ccache for C/ObjC/C++.

  • The Swift cache is stored in .xcode-cas, keyed on the Xcode build and Podfile.lock.
  • ccache and the Swift cache are now saved right after the build, so a failing e2e test no longer throws away fresh cache entries.

Test Plan

What's required for testing (prerequisites)?

What are the steps to reproduce (after prerequisites)?

Compatibility

OS Implemented
iOS ✅❌
Android ✅❌

Checklist

  • I have tested this on a device and a simulator
  • I added the documentation in README.md
  • I updated the typed files (TS and Flow)

Copilot AI lite review requested due to automatic review settings October 26, 2026 10:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

The Swift cache may be skipped without Swift explicit modules, and the unbounded CAS can grow beyond practical CI cache limits.

1 open issue
What changed in this PR

This pull request adds Xcode’s Swift compilation cache to the iOS CI workflow alongside the existing ccache setup, preserving cache entries immediately after the build.

Changes:

  • Restores and saves .xcode-cas using Xcode and Podfile.lock cache keys.
  • Enables Swift compilation caching for iOS builds.
  • Saves compiler caches before e2e tests and reuses the resolved Xcode version for related cache keys.
File Summary
.github/​workflows/​ios.yml Adds Xcode CAS caching and post-build persistence, but requires enabling Swift explicit modules and bounding or pruning the CAS before saving.

Review effort: Lite

Comment thread .github/workflows/ios.yml
@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

🟢 e2e: 21 passed

All 21 tests in 12 files
Test Time
🟢 tests/basic-pager.e2e.ts · 3 passed 2m 39s
🟢 basic pager › in LTR › pages horizontally 46.8s
🟢 basic pager › in LTR › pages vertically 51.7s
🟢 basic pager › in RTL › pages horizontally with the reversed gesture 60.0s
🟢 tests/issues/issue-1050-back-gesture.e2e.ts · 8 passed 3m 6s
🟢 back gesture over the pager › in LTR › a back swipe on the first page pops the screen 14.0s
🟢 back gesture over the pager › in LTR › a back swipe on a later page goes to the previous page 14.5s
🟢 back gesture over the pager › in LTR › a forward swipe on the first page still goes to the next page 11.6s
🟢 back gesture over the pager › in RTL › a back swipe on the first page pops the screen 39.0s
🟢 back gesture over the pager › in RTL › a back swipe on a later page goes to the previous page 40.9s
🟢 back gesture over the pager › in RTL › a forward swipe on the first page still goes to the next page 35.2s
🟢 back gesture over a pager in a nested stack › a back swipe on the first page pops the outer stack 16.9s
🟢 back gesture over a pager in a nested stack › a forward swipe on the first page still goes to the next page 13.8s
🟢 tests/issues/issue-1083-modal-set-page.e2e.ts · 1 passed 16.9s
🟢 setPage called behind a native-stack modal lands on the requested page 16.9s
🟢 tests/issues/issue-1096-keyboard-shrink.e2e.ts · 1 passed 25.3s
🟢 keyboard avoidance does not shrink the page under the keyboard 25.3s
🟢 tests/issues/issue-1098-nested-pager.e2e.ts · 1 passed 18.7s
🟢 outer pager stays responsive after its page count changes around a nested pager 18.7s
🟢 tests/issues/issue-1142-search-bar-inset.e2e.ts · 1 passed 23.4s
🟢 FlatList inside the pager gets the search bar safe-area insets 23.4s
🟢 tests/material-top-bar.e2e.ts · 1 passed 23.2s
🟢 material top tabs survive a native-stack push and pop 23.2s
🟢 tests/nested-pager-view.e2e.ts · 1 passed 22.4s
🟢 nested horizontal and vertical pagers scroll independently 22.4s
🟢 tests/on-page-selected.e2e.ts · 1 passed 23.0s
🟢 onPageSelected fires an alert for every page change 23.0s
🟢 tests/scrollable-pager-view.e2e.ts · 1 passed 30.5s
🟢 pager inside a ScrollView keeps its page across vertical scrolls 30.5s
🟢 tests/smoke.e2e.ts · 1 passed 14.4s
🟢 horizontal pager pages with the panel buttons 14.4s
🟢 tests/tab-view-inside-scroll-view.e2e.ts · 1 passed 24.4s
🟢 TabView inside a ScrollView swipes tabs and scrolls the page 24.4s

e2e 0.21.0 · 9m 33s · ios · run artifacts

@krozniata
krozniata marked this pull request as ready for review October 26, 2026 16:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants