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
21 changes: 21 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,27 @@ jobs:
with:
run: npm run test:i18n

# ── Native dependency coherence ──────────────────────────────────────────────
# Two versions of one native module resolve fine for npm and compile fine for
# Xcode, then abort at launch in dyld with "Symbol not found" — a pod built
# against one version of a shared dependency against a different version of it
# bundled. TestFlight build 173 shipped that way (expo-camera 57.0.1 against
# expo-modules-core 57.0.7) and crashed on every launch with a green CI.
# `expo-doctor` catches the duplicate at the npm level in seconds, on Linux;
# `scripts/verify-dyld-symbols.sh` is the belt-and-braces check at ship time.
native-deps:
name: Native deps
runs-on: ubuntu-latest
needs: [gate, setup]
steps:
- uses: actions/checkout@v5

- name: Duplicate native modules
if: needs.gate.outputs.skip != 'true'
uses: ./.github/actions/run-ci
with:
run: npm run check:native-deps

# ── Maestro E2E (iOS sim, monthly schedule only) ─────────────────────────────
# Runs once per month (00:00 UTC on the 1st) via the schedule trigger above.
# The macOS runner + iOS app build is ~15 minutes and ~$3/run, so this acts
Expand Down
202 changes: 111 additions & 91 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,16 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- EASClient (57.0.0):
- EASClient (57.0.1):
- ExpoModulesCore
- EXApplication (57.0.0):
- EXApplication (57.0.2):
- ExpoModulesCore
- EXConstants (57.0.2):
- EXConstants (57.0.7):
- ExpoModulesCore
- EXJSONUtils (57.0.0)
- EXManifests (57.0.0):
- EXJSONUtils (57.0.1)
- EXManifests (57.0.1):
- ExpoModulesCore
- Expo (57.0.1):
- Expo (57.0.8):
- ExpoModulesCore
- ExpoModulesJSI
- hermes-engine
Expand All @@ -56,15 +56,15 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- expo-dev-client (57.0.3):
- expo-dev-client (57.0.9):
- EXManifests
- expo-dev-launcher
- expo-dev-menu
- expo-dev-menu-interface
- EXUpdatesInterface
- expo-dev-launcher (57.0.3):
- expo-dev-launcher (57.0.9):
- EXManifests
- expo-dev-launcher/Main (= 57.0.3)
- expo-dev-launcher/Main (= 57.0.9)
- expo-dev-menu
- expo-dev-menu-interface
- ExpoModulesCore
Expand Down Expand Up @@ -93,7 +93,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- expo-dev-launcher/Main (57.0.3):
- expo-dev-launcher/Main (57.0.9):
- EXManifests
- expo-dev-launcher/Unsafe
- expo-dev-menu
Expand Down Expand Up @@ -124,7 +124,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- expo-dev-launcher/Unsafe (57.0.3):
- expo-dev-launcher/Unsafe (57.0.9):
- EXManifests
- expo-dev-menu
- expo-dev-menu-interface
Expand Down Expand Up @@ -154,8 +154,8 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- expo-dev-menu (57.0.3):
- expo-dev-menu/Main (= 57.0.3)
- expo-dev-menu (57.0.9):
- expo-dev-menu/Main (= 57.0.9)
- hermes-engine
- RCTRequired
- RCTTypeSafety
Expand All @@ -178,7 +178,7 @@ PODS:
- ReactNativeDependencies
- Yoga
- expo-dev-menu-interface (57.0.0)
- expo-dev-menu/Main (57.0.3):
- expo-dev-menu/Main (57.0.9):
- EXManifests
- expo-dev-menu-interface
- ExpoModulesCore
Expand All @@ -204,47 +204,47 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- ExpoAsset (57.0.2):
- ExpoAsset (57.0.7):
- ExpoModulesCore
- ExpoBlur (57.0.0):
- ExpoBlur (57.0.2):
- ExpoModulesCore
- ExpoCamera (57.0.1):
- ExpoCamera (57.0.3):
- ExpoModulesCore
- ExpoCameraBarcodeScanning (57.0.1):
- ExpoCameraBarcodeScanning (57.0.3):
- ExpoCamera
- ExpoClipboard (57.0.0):
- ExpoClipboard (57.0.1):
- ExpoModulesCore
- ExpoDevice (57.0.0):
- ExpoDevice (57.0.1):
- ExpoModulesCore
- ExpoDocumentPicker (57.0.0):
- ExpoDocumentPicker (57.0.1):
- ExpoModulesCore
- ExpoDomWebView (57.0.0):
- ExpoDomWebView (57.0.1):
- ExpoModulesCore
- ExpoFileSystem (57.0.0):
- ExpoFileSystem (57.0.1):
- ExpoModulesCore
- ExpoFont (57.0.0):
- ExpoFont (57.0.1):
- ExpoModulesCore
- ExpoGlassEffect (57.0.0):
- ExpoGlassEffect (57.0.1):
- ExpoModulesCore
- ExpoHaptics (57.0.0):
- ExpoHaptics (57.0.1):
- ExpoModulesCore
- ExpoImageManipulator (57.0.1):
- ExpoImageManipulator (57.0.6):
- ExpoModulesCore
- ExpoImagePicker (57.0.1):
- ExpoImagePicker (57.0.6):
- ExpoModulesCore
- ExpoKeepAwake (57.0.0):
- ExpoKeepAwake (57.0.1):
- ExpoModulesCore
- ExpoLinearGradient (57.0.0):
- ExpoLinearGradient (57.0.1):
- ExpoModulesCore
- ExpoLinking (57.0.1):
- ExpoLinking (57.0.4):
- ExpoModulesCore
- ExpoLocalAuthentication (57.0.0):
- ExpoLocalAuthentication (57.0.2):
- ExpoModulesCore
- ExpoLocalization (57.0.0):
- ExpoLocalization (57.0.1):
- ExpoModulesCore
- ExpoLogBox (57.0.0):
- ExpoLogBox (57.0.1):
- React-Core
- ExpoMailComposer (57.0.0):
- ExpoMailComposer (57.0.1):
- ExpoModulesCore
- ExpoModulesCore (57.0.7):
- ExpoModulesJSI
Expand Down Expand Up @@ -281,27 +281,27 @@ PODS:
- ExpoModulesJSI
- ExpoModulesWorklets
- RNWorklets
- ExpoNotifications (57.0.2):
- ExpoNotifications (57.0.7):
- ExpoModulesCore
- ExpoRouter (57.0.4):
- ExpoRouter (57.0.8):
- ExpoModulesCore
- RNScreens
- ExpoSecureStore (57.0.0):
- ExpoSecureStore (57.0.1):
- ExpoModulesCore
- ExpoSpeechRecognition (56.0.1):
- ExpoModulesCore
- ExpoSplashScreen (57.0.1):
- ExpoSplashScreen (57.0.5):
- ExpoModulesCore
- ExpoSymbols (57.0.0):
- ExpoSymbols (57.0.1):
- ExpoModulesCore
- ExpoSystemUI (57.0.0):
- ExpoSystemUI (57.0.1):
- ExpoModulesCore
- ExpoUI (57.0.4):
- ExpoUI (57.0.7):
- ExpoModulesCore
- ExpoModulesWorklets
- React-RCTFabric
- EXStructuredHeaders (57.0.0)
- EXUpdates (57.0.4):
- EXUpdates (57.0.10):
- EASClient
- EXManifests
- ExpoModulesCore
Expand Down Expand Up @@ -329,7 +329,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- EXUpdatesInterface (57.0.0):
- EXUpdatesInterface (57.0.1):
- ExpoModulesCore
- FBLazyVector (0.86.0)
- hermes-engine (250829098.0.14):
Expand Down Expand Up @@ -1759,8 +1759,28 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- react-native-get-random-values (1.11.0):
- react-native-get-random-values (2.0.0):
- hermes-engine
- RCTRequired
- RCTTypeSafety
- React-Core
- React-Core-prebuilt
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-jsi
- React-NativeModulesApple
- React-RCTFabric
- React-renderercss
- React-rendererdebug
- React-utils
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- react-native-keyboard-controller (1.21.9):
- hermes-engine
- RCTRequired
Expand Down Expand Up @@ -2460,7 +2480,7 @@ PODS:
- ReactNativeDependencies
- RNWorklets
- Yoga
- RNScreens (4.25.2):
- RNScreens (4.26.2):
- hermes-engine
- RCTRequired
- RCTTypeSafety
Expand All @@ -2482,9 +2502,9 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- RNScreens/common (= 4.25.2)
- RNScreens/common (= 4.26.2)
- Yoga
- RNScreens/common (4.25.2):
- RNScreens/common (4.26.2):
- hermes-engine
- RCTRequired
- RCTTypeSafety
Expand Down Expand Up @@ -3064,54 +3084,54 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
AsyncStorage: 163ab23f6aa37a58b7f2379d0b4ee7ac84d6655c
EASClient: 7d3aa729ae2cd433b5bc314a6d3543fad381fa1c
EXApplication: 7283a281903a90230466ab545ab87a8c48cf4e12
EXConstants: ac0976f6962735f39a25730074869614cb1a5d85
EXJSONUtils: 55eca2b6f8fc320cb36933cf45c4f2200a441589
EXManifests: 66a0e4af8cdb58c0983d462d886136b6d56eee38
Expo: 15f5a16e9369278c1781ad3aa17d364245703635
expo-dev-client: c75c8b9f0cbea96a0959438102d7ce2b0ad49465
expo-dev-launcher: 24fe56ae4a0754d7bffcce0ad5c8b16bf3c02d61
expo-dev-menu: d592b33bf68fd8a672d43e857d290800cb6fe9e6
EASClient: 81f44ce9f07ec3d01606507213d21510a5f97388
EXApplication: bbd517d50878ca1d121fb3843392beb210181e28
EXConstants: fa5647482320b7bde855057f8b86580456d4b9f0
EXJSONUtils: 7a1683cfa2cbe6d11fca97097d51a496755b0287
EXManifests: f9888c0bf5aaa6ddb7e3d4b224d6d54ac4ca84a4
Expo: 4a3b7c95f7f7251c884c75699d60d653555ff9b9
expo-dev-client: c638e315c5aff7b6c4147c45ffdf43aabfa1ae43
expo-dev-launcher: c999a63ea4daa61bcc188568f2120c8983033226
expo-dev-menu: adff9ec508e3c027a9d7c1b9e154b062cd501a8b
expo-dev-menu-interface: 7a59e803916fbfd1b96c75ff91ea8dddac7e722f
ExpoAsset: f9f1fc226653b9f7ab995873d9b4f929d2a916c7
ExpoBlur: 14d0cc31e6a1910b9712dfce1bd8a43d698cd5ae
ExpoCamera: d30fb3af6f5e97d1567c3b2d84413707a78d9005
ExpoCameraBarcodeScanning: 0cd97b138b31f7534201816611dd164543429b37
ExpoClipboard: 67d46a8be4a50ec610c7b2f4966c0475aec6d969
ExpoDevice: 090ee05e20e40ca981d39263e3e95c46ed850782
ExpoDocumentPicker: 1160f4221c6ed4fed906aad0761549ea163b7a01
ExpoDomWebView: 73ba90107a5acc0017a09b06e66d8eb238e089b8
ExpoFileSystem: ffcd56066188802f263254b6b2e60f74b6a0bdae
ExpoFont: 35fd7ad72f697d3a9656545909972d8b9f60d5da
ExpoGlassEffect: 72e96f2f6cae69f970238b80656d869d1a9a98ff
ExpoHaptics: c6d063c3bfda1c1d6d7fdf237ffb612c4fc09954
ExpoImageManipulator: db2be3b3fe592c57d5993886f3bdf57d4a4d5041
ExpoImagePicker: 0afefebdfe3aacd2281535eada9d59345afa3118
ExpoKeepAwake: 8a96e2075b75641001f55393d7e6600a5b808f09
ExpoLinearGradient: cb6781ae9bd07bcb2ab58221ce7612aadd81e1f4
ExpoLinking: db6d7a9e9348cca9ada7c39127ab30963deddba3
ExpoLocalAuthentication: 4f2c3ddae58a42e93564fcf2be4518c463fbdd71
ExpoLocalization: 543cb852ec9d4a6c732344f94ebd96d18897eaab
ExpoLogBox: b39a76aab749833d58111c3be1264bb90f3b92d4
ExpoMailComposer: 93f4d65c12dd45331f69e0906773aa0e7b74344c
ExpoModulesCore: a4d8d4e58d500b54a51f9c5c47e9bb77ab205f08
ExpoAsset: 98143758ff37e14c9ff2a4e7673097db00473011
ExpoBlur: 69e67b4fbfed6f7325377af2aefa8aa4f00cd2af
ExpoCamera: a5e9d9ce2fc06689eb2dd676f1f8d5f22f8aa292
ExpoCameraBarcodeScanning: b869ac87ebe30bb99b26c55b0e0471301383c90b
ExpoClipboard: 95055b11758f339b61d4d8064dd799df1cf03b7f
ExpoDevice: 93a72d7c2bd656a4f0c0d580523e390e9ee7fba5
ExpoDocumentPicker: 6fb67a6f39ba9beb53a4b4a3f2949e0b5e9bc3bf
ExpoDomWebView: beaec034e51bd028428b98bb1f2633ab79c6d095
ExpoFileSystem: e441dae0ae671fc451640517550973d9e024fdf0
ExpoFont: 59e1faf66ba9bcd232ae1e2ce58d202a48b6f65e
ExpoGlassEffect: 4b62afb489e6b84357701737ce002137c9d5fdbc
ExpoHaptics: 4503d2da51ff7109712ccdfe0e4939f66818183e
ExpoImageManipulator: d3c962dabd86b331980f8ec6794c6073b3cb541a
ExpoImagePicker: 8edc8d1215d9c8c95c44101e42d577f8beb898c9
ExpoKeepAwake: c26f14275017370cc8a4b7b43a0e23361f2053a5
ExpoLinearGradient: 903b3f5fe566c666ff78b2599add51d094483613
ExpoLinking: 5a796f9284535c0349537a844dd40680229b7fcb
ExpoLocalAuthentication: 96989637e567a10cdeabe61e5c6026d30c0dc53f
ExpoLocalization: 659243b03b3a3e9589793cee2f728a899e181329
ExpoLogBox: 8a3cfa2897e088083cd49fc1ff7fdb2de4385547
ExpoMailComposer: 101933dc6bdb4d7a46495d1dd87420365325adb9
ExpoModulesCore: 3082834d5d10d2ea67c1fbfcd7f191518ed3aec4
ExpoModulesJSI: b20fefa4cdd9097e7e6b715466d1900b8c5d4711
ExpoModulesWorklets: b21b8f233b5fd71ca74327217601fa4ead9ddaaf
ExpoModulesWorkletsAdapter: 6b3dffb299973f4f2b1a96738aa2cb46987b18e1
ExpoNotifications: 9e7946eed73d94bbe0b7188906be41b0cc236c40
ExpoRouter: a322bf2e409071b05ae9d4d86d5f283902364d65
ExpoSecureStore: be2276d312c1f213605c0864772510239605ec37
ExpoNotifications: a2f19a01dad3ee8631ec283561882ff9f302f3e4
ExpoRouter: c086c97b2229152334ab68200ade40b64f75515b
ExpoSecureStore: 94793113049a2d7478dfe1a13aa15081e9f61755
ExpoSpeechRecognition: 119acf84448579e53f841d040aad76982f945e2d
ExpoSplashScreen: 70840fce2f0a181eb5060cde8a727e999ac4c941
ExpoSymbols: db28b9ea52c96fe67ff9c362f5dbc6bee240ca2d
ExpoSystemUI: 4f343f83e81951d737b199ac9c0d9db0d577f942
ExpoUI: 6dfd6c01cc124afb1f729548568f40fb00976f26
ExpoSplashScreen: 247464c0fe484f766892db0d66c3fe54f92a624e
ExpoSymbols: 7c7c7bd3c52f0b6dcbba6e8af4088b0dc1ea7d29
ExpoSystemUI: 6f2ce8968292aaa91f4aa553c23bdd8cee5cdc85
ExpoUI: 19f2ca6e82d91240530ee9762dedccc31fc6f429
EXStructuredHeaders: 1423c3602a30eb078e03b63b251ef912267dd4c0
EXUpdates: 6bfc710fb7d7219ec3da729e72ae003e523f0c17
EXUpdatesInterface: 492cdb30f3889cc35d9e737a4b5fc3aec39d1131
EXUpdates: cbdbe424e30c11983c2841930050114c1b8bea0c
EXUpdatesInterface: 92d2aa5194b6fb93ca8ab749db75665cb28b2e60
FBLazyVector: b3e7ad108f0d882e30445c5527d774e3fd432f3d
hermes-engine: 9ebc7f0a63131d493547a3adcab94ba6e73775a6
hermes-engine: 7a039a55e4e8ca01b3efce17360bea8c248fb90d
RCTDeprecation: 2a74a2c57675e64419bd89078efde81f7c1de90b
RCTRequired: 30451112e6fef4e6f31b4e7eee0845156e35e4b0
RCTSwiftUI: 5aaf0b07e747ba749dc6acc94d8bd41eea4b570f
Expand Down Expand Up @@ -3150,7 +3170,7 @@ SPEC CHECKSUMS:
React-Mapbuffer: ce449ccdf3b80384415b925606be8a4bdcfc65d3
React-microtasksnativemodule: 2eb3f49d0d8e77b5343455eccd057010b8d38b6b
React-mutationobservernativemodule: f0a0d5ae9b51caf7becbeabf836d716cfedb6bf2
react-native-get-random-values: d16467cf726c618e9c7a8c3c39c31faa2244bbba
react-native-get-random-values: 68792987aef40e8aa72dc448d97e009d1f440c88
react-native-keyboard-controller: d4796248609d4c03cd6b5f73a9fd083d7c5f33d6
react-native-netinfo: 2f906d5d9a639090ed1c079135d6485a95f749f1
react-native-pager-view: c9f0c94cc64041ac70f28f79527ea2ac664cf25c
Expand Down Expand Up @@ -3193,7 +3213,7 @@ SPEC CHECKSUMS:
RNCMaskedView: eb2b2e538afa907f05a5848a1a1ac26092e6fec9
RNGestureHandler: 92172e79df6e88e0e93b6341f9dcd8b5a02746ba
RNReanimated: a9bf68fb5f19ce1c363b7d1413dcf8ee323185b8
RNScreens: f94000b3cb1eb14cbb8d08dd6074fdd6ccf0e6b0
RNScreens: c1a06fd73d0581a2a28a160577be393f579662b9
RNSentry: 7bb2dcf95d8e545ffcb96155c9e5ebfbb95c8916
RNSVG: 6cae8d4082913be2eb43eaec2a456222c42195ed
RNWorklets: 53439575fed8525fb8d1cabcc05a3d4d91e6ffe4
Expand Down
Loading
Loading