Skip to content
Closed
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: 4 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ jobs:
# needs Xcode 26+. The macos-15 runner defaults to Xcode 16.4 (Swift 6.1),
# so the archive fails at SPM resolution. Point the whole toolchain at the
# Xcode 26.3 that's preinstalled on the image.
# Xcode 26.3's Swift 6 compiler also hits an abs() overload-ambiguity bug in
# expo-modules-jsi (patched via patches/expo-modules-jsi+*.patch — see Expo
# issue #47875). Expo's real fix is Xcode 26.4, not preinstalled on macos-15
# yet; bump this to 26.4 and drop the patch once the runner image has it.
DEVELOPER_DIR: /Applications/Xcode_26.3.app/Contents/Developer
steps:
- name: Warn when building a non-main ref
Expand Down
1 change: 1 addition & 0 deletions docs/ci-significant-paths.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ Native / deploy pipeline:
- `fastlane/` — iOS TestFlight lanes (invoked by `ship-ios.sh`)
- `eas.json` — EAS build config
- `Gemfile` — Ruby deps for Fastlane + CocoaPods
- `patches/` — patch-package fixes applied to node_modules on install (e.g. iOS build fixes for vendored native/Swift sources); a patch can go stale or start/stop applying without any package.json change

## Does NOT affect (excluded from the trigger list)

Expand Down
170 changes: 170 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"main": "expo-router/entry",
"scripts": {
"prepare": "node -e \"const {execSync}=require('child_process');try{execSync('git config core.hooksPath scripts/git-hooks',{stdio:'ignore'})}catch(e){}\"",
"postinstall": "patch-package",
"start": "expo start",
"dev:metro": "node scripts/dev-metro.js",
"android": "expo run:android",
Expand Down Expand Up @@ -137,6 +138,7 @@
"expo-mcp": "~0.2.1",
"jest": "^29.7.0",
"jest-expo": "~57.0.0",
"patch-package": "^8.0.1",
"react-refresh": "^0.18.0",
"react-test-renderer": "19.2.7",
"tailwindcss": "^3.4.10",
Expand Down
13 changes: 13 additions & 0 deletions patches/expo-modules-jsi+57.0.4.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/node_modules/expo-modules-jsi/apple/Sources/ExpoModulesJSI/Coding/JavaScriptCodable+Date.swift b/node_modules/expo-modules-jsi/apple/Sources/ExpoModulesJSI/Coding/JavaScriptCodable+Date.swift
index 1111111..2222222 100644
--- a/node_modules/expo-modules-jsi/apple/Sources/ExpoModulesJSI/Coding/JavaScriptCodable+Date.swift
+++ b/node_modules/expo-modules-jsi/apple/Sources/ExpoModulesJSI/Coding/JavaScriptCodable+Date.swift
@@ -50,7 +50,7 @@
/// faithful to `new Date(number)`; the `Date`/string branches pass an already-clipped `getTime()` through.
@usableFromInline
func dateFromMilliseconds(_ milliseconds: Double) throws -> Date {
- guard milliseconds.isFinite, abs(milliseconds) <= maxJavaScriptDateMilliseconds else {
+ guard milliseconds.isFinite, Swift.abs(milliseconds) <= maxJavaScriptDateMilliseconds else {
throw InvalidDateException()
}
return Date(timeIntervalSince1970: milliseconds.rounded(.towardZero) / 1000.0)
1 change: 1 addition & 0 deletions scripts/git-hooks/ci-paths.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,4 @@ scripts/
fastlane/
eas.json
Gemfile
patches/
Loading