diff --git a/apps/bare-expo/ios/Podfile.lock b/apps/bare-expo/ios/Podfile.lock index 5a71ed4e293b2f..c23d44d259db98 100644 --- a/apps/bare-expo/ios/Podfile.lock +++ b/apps/bare-expo/ios/Podfile.lock @@ -22,23 +22,23 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - EASClient (55.0.2): + - EASClient (56.0.0): - ExpoModulesCore - - EASClient/Tests (55.0.2): + - EASClient/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - - EXApplication (55.0.8): + - EXApplication (56.0.0): - ExpoModulesCore - - EXConstants (55.0.7): + - EXConstants (56.0.0): - ExpoModulesCore - - EXJSONUtils (55.0.0) - - EXJSONUtils/Tests (55.0.0) - - EXManifests (55.0.9): + - EXJSONUtils (56.0.0) + - EXJSONUtils/Tests (56.0.0) + - EXManifests (56.0.0): - ExpoModulesCore - - EXManifests/Tests (55.0.9): + - EXManifests/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - - Expo (55.0.2): + - Expo (56.0.0-preview.0): - ExpoModulesCore - ExpoModulesJSI - hermes-engine @@ -64,15 +64,15 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-client (55.0.9): + - expo-dev-client (56.0.0): - EXManifests - expo-dev-launcher - expo-dev-menu - expo-dev-menu-interface - EXUpdatesInterface - - expo-dev-launcher (55.0.10): + - expo-dev-launcher (56.0.0): - EXManifests - - expo-dev-launcher/Main (= 55.0.10) + - expo-dev-launcher/Main (= 56.0.0) - expo-dev-menu - expo-dev-menu-interface - ExpoModulesCore @@ -101,7 +101,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-launcher/Main (55.0.10): + - expo-dev-launcher/Main (56.0.0): - EXManifests - expo-dev-launcher/Unsafe - expo-dev-menu @@ -132,7 +132,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-launcher/Tests (55.0.10): + - expo-dev-launcher/Tests (56.0.0): - EXManifests - expo-dev-menu - expo-dev-menu-interface @@ -167,7 +167,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-launcher/Unsafe (55.0.10): + - expo-dev-launcher/Unsafe (56.0.0): - EXManifests - expo-dev-menu - expo-dev-menu-interface @@ -197,8 +197,8 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-menu (55.0.9): - - expo-dev-menu/Main (= 55.0.9) + - expo-dev-menu (56.0.0): + - expo-dev-menu/Main (= 56.0.0) - hermes-engine - RCTRequired - RCTTypeSafety @@ -220,8 +220,8 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-menu-interface (55.0.1) - - expo-dev-menu/Main (55.0.9): + - expo-dev-menu-interface (56.0.0) + - expo-dev-menu/Main (56.0.0): - EXManifests - expo-dev-menu-interface - ExpoModulesCore @@ -247,7 +247,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-menu/Tests (55.0.9): + - expo-dev-menu/Tests (56.0.0): - ExpoModulesTestCore - hermes-engine - Nimble @@ -273,7 +273,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-menu/UITests (55.0.9): + - expo-dev-menu/UITests (56.0.0): - ExpoModulesTestCore - hermes-engine - RCTRequired @@ -299,7 +299,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - Expo/Tests (55.0.2): + - Expo/Tests (56.0.0-preview.0): - ExpoModulesCore - ExpoModulesJSI - ExpoModulesTestCore @@ -326,11 +326,11 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoAgeRange (0.2.10): + - ExpoAgeRange (56.0.0): - ExpoModulesCore - - ExpoAppIntegrity (55.0.8): + - ExpoAppIntegrity (56.0.0): - ExpoModulesCore - - ExpoAppleAuthentication (55.0.8): + - ExpoAppleAuthentication (56.0.0): - ExpoModulesCore - ExpoAppMetrics (0.1.7): - ExpoModulesCore @@ -380,74 +380,74 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoAsset (55.0.7): + - ExpoAsset (56.0.0): - ExpoModulesCore - - ExpoAudio (55.0.8): + - ExpoAudio (56.0.0): - ExpoModulesCore - - ExpoBackgroundFetch (55.0.8): + - ExpoBackgroundFetch (56.0.0): - ExpoModulesCore - - ExpoBackgroundTask (55.0.8): + - ExpoBackgroundTask (56.0.0): - ExpoModulesCore - ExpoTaskManager - - ExpoBackgroundTask/Tests (55.0.8): + - ExpoBackgroundTask/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - ExpoTaskManager - - ExpoBattery (55.0.8): + - ExpoBattery (56.0.0): - ExpoModulesCore - - ExpoBlob (55.0.8): + - ExpoBlob (56.0.0): - ExpoModulesCore - - ExpoBlur (55.0.8): + - ExpoBlur (56.0.0): - ExpoModulesCore - - ExpoBrightness (55.0.8): + - ExpoBrightness (56.0.0): - ExpoModulesCore - - ExpoBrownfield (55.0.11): + - ExpoBrownfield (56.0.0): - ExpoModulesCore - - ExpoCalendar (55.0.8): + - ExpoCalendar (56.0.0): - ExpoModulesCore - - ExpoCamera (55.0.9): + - ExpoCamera (56.0.0): - ExpoModulesCore - - ExpoCameraBarcodeScanning (55.0.9): + - ExpoCameraBarcodeScanning (56.0.0): - ExpoCamera - ZXingObjC/OneD - ZXingObjC/PDF417 - - ExpoCellular (55.0.8): + - ExpoCellular (56.0.0): - ExpoModulesCore - - ExpoClipboard (55.0.8): + - ExpoClipboard (56.0.0): - ExpoModulesCore - - ExpoClipboard/Tests (55.0.8): + - ExpoClipboard/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - - ExpoContacts (55.0.8): + - ExpoContacts (56.0.0): - ExpoModulesCore - - ExpoCrypto (55.0.8): + - ExpoCrypto (56.0.0): - ExpoModulesCore - - ExpoDevice (55.0.9): + - ExpoDevice (56.0.0): - ExpoModulesCore - - ExpoDocumentPicker (55.0.8): + - ExpoDocumentPicker (56.0.0): - ExpoModulesCore - - ExpoDomWebView (55.0.3): + - ExpoDomWebView (56.0.0): - ExpoModulesCore - - ExpoFileSystem (55.0.9): + - ExpoFileSystem (56.0.0): - ExpoModulesCore - - ExpoFont (55.0.4): + - ExpoFont (56.0.0): - ExpoModulesCore - - ExpoGL (55.0.9): + - ExpoGL (56.0.0): - ExpoModulesCore - ExpoModulesJSI - ReactCommon/turbomodule/core - - ExpoGlassEffect (55.0.7): + - ExpoGlassEffect (56.0.0): - ExpoModulesCore - - ExpoHaptics (55.0.8): + - ExpoHaptics (56.0.0): - ExpoModulesCore - - ExpoImage (55.0.5): + - ExpoImage (56.0.0): - ExpoModulesCore - libavif/libdav1d - SDWebImage (~> 5.21.0) - SDWebImageAVIFCoder (~> 0.11.0) - SDWebImageSVGCoder (~> 1.7.0) - SDWebImageWebPCoder (~> 0.14.6) - - ExpoImage/Tests (55.0.5): + - ExpoImage/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - libavif/libdav1d @@ -455,12 +455,12 @@ PODS: - SDWebImageAVIFCoder (~> 0.11.0) - SDWebImageSVGCoder (~> 1.7.0) - SDWebImageWebPCoder (~> 0.14.6) - - ExpoImageManipulator (55.0.9): + - ExpoImageManipulator (56.0.0): - ExpoModulesCore - SDWebImageWebPCoder - - ExpoImagePicker (55.0.9): + - ExpoImagePicker (56.0.0): - ExpoModulesCore - - ExpoInsights (55.0.10): + - ExpoInsights (56.0.0): - EASClient - ExpoModulesCore - hermes-engine @@ -484,36 +484,36 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoKeepAwake (55.0.4): + - ExpoKeepAwake (56.0.0): - ExpoModulesCore - - ExpoLinearGradient (55.0.8): + - ExpoLinearGradient (56.0.0): - ExpoModulesCore - - ExpoLinking (55.0.7): + - ExpoLinking (56.0.0): - ExpoModulesCore - - ExpoLivePhoto (55.0.8): + - ExpoLivePhoto (56.0.0): - ExpoModulesCore - - ExpoLocalAuthentication (55.0.8): + - ExpoLocalAuthentication (56.0.0): - ExpoModulesCore - - ExpoLocalization (55.0.8): + - ExpoLocalization (56.0.0): - ExpoModulesCore - - ExpoLocation (55.1.2): + - ExpoLocation (56.0.0): - ExpoModulesCore - - ExpoLogBox (55.0.7): + - ExpoLogBox (56.0.0): - React-Core - - ExpoMailComposer (55.0.8): + - ExpoMailComposer (56.0.0): - ExpoModulesCore - - ExpoMaps (55.0.9): + - ExpoMaps (56.0.0): - ExpoModulesCore - - ExpoMediaLibrary (55.0.9): + - ExpoMediaLibrary (56.0.0): - ExpoModulesCore - React-Core - - ExpoMediaLibrary/Tests (55.0.9): + - ExpoMediaLibrary/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - React-Core - - ExpoMeshGradient (55.0.8): + - ExpoMeshGradient (56.0.0): - ExpoModulesCore - - ExpoModulesCore (55.0.12): + - ExpoModulesCore (56.0.0): - ExpoModulesJSI - hermes-engine - RCTRequired @@ -537,7 +537,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoModulesCore/Tests (55.0.12): + - ExpoModulesCore/Tests (56.0.0): - ExpoModulesJSI - ExpoModulesTestCore - hermes-engine @@ -562,32 +562,32 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoModulesJSI (55.0.0): + - ExpoModulesJSI (56.0.0): - React-Core - React-runtimescheduler - ReactCommon - - ExpoModulesJSI/Tests (55.0.0): + - ExpoModulesJSI/Tests (56.0.0): - React-Core - React-runtimescheduler - ReactCommon - - ExpoModulesTestCore (55.0.2): + - ExpoModulesTestCore (56.0.0): - ExpoModulesCore - Nimble (~> 13.0.0) - Quick (~> 7.3.0) - React-hermes - - ExpoModulesWorklets (55.0.12): + - ExpoModulesWorklets (56.0.0): - ExpoModulesCore - ExpoModulesJSI - - ExpoModulesWorkletsAdapter (55.0.12): + - ExpoModulesWorkletsAdapter (56.0.0): - ExpoModulesCore - ExpoModulesJSI - ExpoModulesWorklets - RNWorklets - - ExpoNetwork (55.0.8): + - ExpoNetwork (56.0.0): - ExpoModulesCore - - ExpoNotifications (55.0.10): + - ExpoNotifications (56.0.0): - ExpoModulesCore - - ExpoNotifications/Tests (55.0.10): + - ExpoNotifications/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - ExpoObserve (0.1.7): @@ -640,11 +640,11 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoPrint (55.0.8): + - ExpoPrint (56.0.0): - ExpoModulesCore - - ExpoScreenCapture (55.0.8): + - ExpoScreenCapture (56.0.0): - ExpoModulesCore - - ExpoScreenOrientation (55.0.8): + - ExpoScreenOrientation (56.0.0): - ExpoModulesCore - hermes-engine - RCTRequired @@ -667,51 +667,51 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoSecureStore (55.0.8): + - ExpoSecureStore (56.0.0): - ExpoModulesCore - - ExpoSensors (55.0.8): + - ExpoSensors (56.0.0): - ExpoModulesCore - - ExpoSharing (55.0.10): + - ExpoSharing (56.0.0): - ExpoModulesCore - - ExpoSMS (55.0.8): + - ExpoSMS (56.0.0): - ExpoModulesCore - - ExpoSpeech (55.0.8): + - ExpoSpeech (56.0.0): - ExpoModulesCore - - ExpoSplashScreen (55.0.9): + - ExpoSplashScreen (56.0.0): - ExpoModulesCore - - ExpoSQLite (55.0.10): + - ExpoSQLite (56.0.0): - ExpoModulesCore - - ExpoStoreReview (55.0.8): + - ExpoStoreReview (56.0.0): - ExpoModulesCore - - ExpoSymbols (55.0.4): + - ExpoSymbols (56.0.0): - ExpoModulesCore - - ExpoSystemUI (55.0.9): + - ExpoSystemUI (56.0.0): - ExpoModulesCore - - ExpoTaskManager (55.0.9): + - ExpoTaskManager (56.0.0): - ExpoModulesCore - UMAppLoader - - ExpoTaskManager/Tests (55.0.9): + - ExpoTaskManager/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - UMAppLoader - - ExpoTrackingTransparency (55.0.8): + - ExpoTrackingTransparency (56.0.0): - ExpoModulesCore - - ExpoUI (55.0.1): + - ExpoUI (56.0.0): - ExpoModulesCore - ExpoModulesWorklets - React-RCTFabric - - ExpoVideo (55.0.9): + - ExpoVideo (56.0.0): - ExpoModulesCore - ExpoVideoDashSupportModule (1.0.0): - ExpoModulesCore - ExpoVideo - - ExpoVideoThumbnails (55.0.9): + - ExpoVideoThumbnails (56.0.0): - ExpoModulesCore - - ExpoWebBrowser (55.0.9): + - ExpoWebBrowser (56.0.0): - ExpoModulesCore - - EXStructuredHeaders (55.0.0) - - EXStructuredHeaders/Tests (55.0.0) - - EXUpdates (55.0.11): + - EXStructuredHeaders (56.0.0) + - EXStructuredHeaders/Tests (56.0.0) + - EXUpdates (56.0.0): - EASClient - EXManifests - ExpoModulesCore @@ -739,7 +739,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - EXUpdates/Tests (55.0.11): + - EXUpdates/Tests (56.0.0): - EASClient - EXManifests - ExpoModulesCore @@ -768,7 +768,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - EXUpdatesInterface (55.1.3): + - EXUpdatesInterface (56.0.0): - ExpoModulesCore - FBLazyVector (0.85.2) - hermes-engine (250829098.0.10): @@ -3127,7 +3127,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - RNWorklets (0.8.1): + - RNWorklets (0.8.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -3150,10 +3150,10 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - - RNWorklets/apple (= 0.8.1) - - RNWorklets/common (= 0.8.1) + - RNWorklets/apple (= 0.8.3) + - RNWorklets/common (= 0.8.3) - Yoga - - RNWorklets/apple (0.8.1): + - RNWorklets/apple (0.8.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -3177,7 +3177,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - RNWorklets/common (0.8.1): + - RNWorklets/common (0.8.3): - hermes-engine - RCTRequired - RCTTypeSafety @@ -3215,8 +3215,8 @@ PODS: - TestExpoUi (1.0.0): - ExpoModulesCore - ExpoUI - - UMAppLoader (55.0.2) - - UMAppLoader/Tests (55.0.2): + - UMAppLoader (56.0.0) + - UMAppLoader/Tests (56.0.0): - ExpoModulesTestCore - WorkletsTester (0.0.1): - ExpoModulesCore @@ -3395,12 +3395,12 @@ DEPENDENCIES: - "React-logger (from `../../../node_modules/.pnpm/react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-preset@0.85.2_@babel+core@7.2_1ba4e579bcf69516e035b5d165f89777/node_modules/react-native/ReactCommon/logger`)" - "React-Mapbuffer (from `../../../node_modules/.pnpm/react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-preset@0.85.2_@babel+core@7.2_1ba4e579bcf69516e035b5d165f89777/node_modules/react-native/ReactCommon`)" - "React-microtasksnativemodule (from `../../../node_modules/.pnpm/react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-preset@0.85.2_@babel+core@7.2_1ba4e579bcf69516e035b5d165f89777/node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)" - - "react-native-keyboard-controller (from `../../../node_modules/.pnpm/react-native-keyboard-controller@1.21.6_react-native-reanimated@4.3.0_patch_hash=1e34e4_4a7542518132451a7b077bd8ae3655f6/node_modules/react-native-keyboard-controller`)" + - "react-native-keyboard-controller (from `../../../node_modules/.pnpm/react-native-keyboard-controller@1.21.6_react-native-reanimated@4.3.0_patch_hash=1e34e4_12f8a138b6657e483fa62a9a1cf41ec7/node_modules/react-native-keyboard-controller`)" - "react-native-netinfo (from `../../../node_modules/.pnpm/@react-native-community+netinfo@11.5.2_patch_hash=ced0cb79848978ecc3e780a4d812d94868434_f303a19f4539b0222af26531323c0855/node_modules/@react-native-community/netinfo`)" - "react-native-pager-view (from `../../../node_modules/.pnpm/react-native-pager-view@6.9.1_react-native@0.85.2_@babel+core@7.29.0_@react-native+jest_42c16d1948ed01ee7c222c36c8d0a21c/node_modules/react-native-pager-view`)" - "react-native-safe-area-context (from `../../../node_modules/.pnpm/react-native-safe-area-context@5.6.2_react-native@0.85.2_@babel+core@7.29.0_@react-nati_61644d84055e7f59795950119a69a708/node_modules/react-native-safe-area-context`)" - "react-native-segmented-control (from `../../../node_modules/.pnpm/@react-native-segmented-control+segmented-control@2.5.7_react-native@0.85.2_@babel+core_5b5b94a5f22cb45e3ee4d4b6c33ef9a5/node_modules/@react-native-segmented-control/segmented-control`)" - - "react-native-skia (from `../../../node_modules/.pnpm/@shopify+react-native-skia@2.4.18_react-native-reanimated@4.3.0_patch_hash=1e34e4238541_f10796221591e07810fc1e587b6ea5e5/node_modules/@shopify/react-native-skia`)" + - "react-native-skia (from `../../../node_modules/.pnpm/@shopify+react-native-skia@2.4.18_react-native-reanimated@4.3.0_patch_hash=1e34e4238541_735d4a2e3e1e791ddae4705a2859dfae/node_modules/@shopify/react-native-skia`)" - "react-native-slider (from `../../../node_modules/.pnpm/@react-native-community+slider@5.1.2/node_modules/@react-native-community/slider`)" - "react-native-view-shot (from `../../../node_modules/.pnpm/react-native-view-shot@4.0.3_patch_hash=c493165ff680241f9c0432f4619a8f581420b9f8dd9c6e8_68746d75d939fd97bc96e80c03b6826c/node_modules/react-native-view-shot`)" - "react-native-webview (from `../../../node_modules/.pnpm/react-native-webview@13.16.1_react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-_1569665020c20aef71c78d5ab156e880/node_modules/react-native-webview`)" @@ -3443,10 +3443,10 @@ DEPENDENCIES: - "RNCPicker (from `../../../node_modules/.pnpm/@react-native-picker+picker@2.11.4_react-native@0.85.2_@babel+core@7.29.0_@react-native_107e9dee6834e63baf100e0652402239/node_modules/@react-native-picker/picker`)" - "RNDateTimePicker (from `../../../node_modules/.pnpm/@react-native-community+datetimepicker@8.6.0_expo@packages+expo_react-native@0.85.2_@ba_a4d25e42b161001b24186e26c224ad41/node_modules/@react-native-community/datetimepicker`)" - "RNGestureHandler (from `../../../node_modules/.pnpm/react-native-gesture-handler@2.30.0_react-native@0.85.2_@babel+core@7.29.0_@react-nativ_ad6bb5f12e1a5abd431d00bac412eae0/node_modules/react-native-gesture-handler`)" - - "RNReanimated (from `../../../node_modules/.pnpm/react-native-reanimated@4.3.0_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_eda565d3f67be15d7dda9b0be7008390/node_modules/react-native-reanimated`)" + - "RNReanimated (from `../../../node_modules/.pnpm/react-native-reanimated@4.3.0_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_52e70d4540923088e7b9d94790e121e6/node_modules/react-native-reanimated`)" - "RNScreens (from `../../../node_modules/.pnpm/react-native-screens@4.25.0-beta.1_react-native@0.85.2_@babel+core@7.29.0_@react-native_44f021255a9c2abec1791ca078467a98/node_modules/react-native-screens`)" - "RNSVG (from `../../../node_modules/.pnpm/react-native-svg@15.15.4_react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-pres_ad5ed717b7cc12448deb4bef3fad356b/node_modules/react-native-svg`)" - - "RNWorklets (from `../../../node_modules/.pnpm/react-native-worklets@0.8.1_patch_hash=3f49a21b44ba558989a3366eeff9c92ee331e18b736dbe89_873264ea98792c8e9864fbfb4aec03b2/node_modules/react-native-worklets`)" + - "RNWorklets (from `../../../node_modules/.pnpm/react-native-worklets@0.8.3_patch_hash=3f49a21b44ba558989a3366eeff9c92ee331e18b736dbe89_21e1f0e21015cedcdf2e8fd371b2c176/node_modules/react-native-worklets`)" - TestExpoUi (from `../modules/test-expo-ui/ios`) - UMAppLoader (from `../../../packages/unimodules-app-loader/ios`) - UMAppLoader/Tests (from `../../../packages/unimodules-app-loader/ios`) @@ -3804,7 +3804,7 @@ EXTERNAL SOURCES: React-microtasksnativemodule: :path: "../../../node_modules/.pnpm/react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-preset@0.85.2_@babel+core@7.2_1ba4e579bcf69516e035b5d165f89777/node_modules/react-native/ReactCommon/react/nativemodule/microtasks" react-native-keyboard-controller: - :path: "../../../node_modules/.pnpm/react-native-keyboard-controller@1.21.6_react-native-reanimated@4.3.0_patch_hash=1e34e4_4a7542518132451a7b077bd8ae3655f6/node_modules/react-native-keyboard-controller" + :path: "../../../node_modules/.pnpm/react-native-keyboard-controller@1.21.6_react-native-reanimated@4.3.0_patch_hash=1e34e4_12f8a138b6657e483fa62a9a1cf41ec7/node_modules/react-native-keyboard-controller" react-native-netinfo: :path: "../../../node_modules/.pnpm/@react-native-community+netinfo@11.5.2_patch_hash=ced0cb79848978ecc3e780a4d812d94868434_f303a19f4539b0222af26531323c0855/node_modules/@react-native-community/netinfo" react-native-pager-view: @@ -3814,7 +3814,7 @@ EXTERNAL SOURCES: react-native-segmented-control: :path: "../../../node_modules/.pnpm/@react-native-segmented-control+segmented-control@2.5.7_react-native@0.85.2_@babel+core_5b5b94a5f22cb45e3ee4d4b6c33ef9a5/node_modules/@react-native-segmented-control/segmented-control" react-native-skia: - :path: "../../../node_modules/.pnpm/@shopify+react-native-skia@2.4.18_react-native-reanimated@4.3.0_patch_hash=1e34e4238541_f10796221591e07810fc1e587b6ea5e5/node_modules/@shopify/react-native-skia" + :path: "../../../node_modules/.pnpm/@shopify+react-native-skia@2.4.18_react-native-reanimated@4.3.0_patch_hash=1e34e4238541_735d4a2e3e1e791ddae4705a2859dfae/node_modules/@shopify/react-native-skia" react-native-slider: :path: "../../../node_modules/.pnpm/@react-native-community+slider@5.1.2/node_modules/@react-native-community/slider" react-native-view-shot: @@ -3900,13 +3900,13 @@ EXTERNAL SOURCES: RNGestureHandler: :path: "../../../node_modules/.pnpm/react-native-gesture-handler@2.30.0_react-native@0.85.2_@babel+core@7.29.0_@react-nativ_ad6bb5f12e1a5abd431d00bac412eae0/node_modules/react-native-gesture-handler" RNReanimated: - :path: "../../../node_modules/.pnpm/react-native-reanimated@4.3.0_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_eda565d3f67be15d7dda9b0be7008390/node_modules/react-native-reanimated" + :path: "../../../node_modules/.pnpm/react-native-reanimated@4.3.0_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_52e70d4540923088e7b9d94790e121e6/node_modules/react-native-reanimated" RNScreens: :path: "../../../node_modules/.pnpm/react-native-screens@4.25.0-beta.1_react-native@0.85.2_@babel+core@7.29.0_@react-native_44f021255a9c2abec1791ca078467a98/node_modules/react-native-screens" RNSVG: :path: "../../../node_modules/.pnpm/react-native-svg@15.15.4_react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-pres_ad5ed717b7cc12448deb4bef3fad356b/node_modules/react-native-svg" RNWorklets: - :path: "../../../node_modules/.pnpm/react-native-worklets@0.8.1_patch_hash=3f49a21b44ba558989a3366eeff9c92ee331e18b736dbe89_873264ea98792c8e9864fbfb4aec03b2/node_modules/react-native-worklets" + :path: "../../../node_modules/.pnpm/react-native-worklets@0.8.3_patch_hash=3f49a21b44ba558989a3366eeff9c92ee331e18b736dbe89_21e1f0e21015cedcdf2e8fd371b2c176/node_modules/react-native-worklets" TestExpoUi: inhibit_warnings: false :path: "../modules/test-expo-ui/ios" @@ -3921,91 +3921,91 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: BenchmarkingModule: 75a52c0f605790d86e8cd73979f42693e26a5c14 - EASClient: cb7854d65c09c520cc7d165f266c1d3bb901ceb7 - EXApplication: 44b0cde41562abc9650bcf7bd04c25c68878288d - EXConstants: ed3e09607493bb717a7932f0e6786846169692a2 - EXJSONUtils: 475f1af3d20fbd99268694df81d096817092aa89 - EXManifests: ad24b3a497444eee9e07cc8590b09974ba369050 - Expo: 944473cd66ee19b8ee899df0b98e490bce19b991 - expo-dev-client: 929c5e873b07c54035ab42aa165f095f74478d6c - expo-dev-launcher: 52dad5ea74c968013ebb2707370e28a0cf9d8b7f - expo-dev-menu: 3ab7b064b3d3db84334481bdb24325e0b67889c3 - expo-dev-menu-interface: 58beb5e831034c20466d8c26ba679b0aa385abd2 - ExpoAgeRange: 87dd980cb26e47b1108e24c39bcfb88a9ab1030e - ExpoAppIntegrity: 7e3ae77f96e3a3f742fe318d7aac24b66a7bead0 - ExpoAppleAuthentication: c8096cd35e4e4f88aec34fcbfcd9deae7cea04d3 - ExpoAppMetrics: 3320bd4a3d48e76932a0faf20fee771bb5067f94 - ExpoAsset: 595cc0587b67afaaedddca79d4c1cf506400cb27 - ExpoAudio: 40c883c60ed3bb17ecb3744a00732fb47029535b - ExpoBackgroundFetch: ee315c8d1a54a3f358fc0cedb68e808e95935c57 - ExpoBackgroundTask: 6f9f42ff3f0fd3907f625314b2822692af790d81 - ExpoBattery: 978934da47fa3414103aea2b61aeaa459658e06d - ExpoBlob: 8aadbb43ad4e2cdabc9a10fd26344d7911bb9805 - ExpoBlur: d3a8f3dbdfadac5f4f7ebe201deb245678257b72 - ExpoBrightness: d1d486e406bcc66acbd5d0101bf7785d5f35fd88 - ExpoBrownfield: b154b7dd081e0315d7e55f3d52984ea151854413 - ExpoCalendar: d21041bc88e41a4d187196157568fd1310b59fc7 - ExpoCamera: e95e370de0bf60152a6ccfd23e5d9492b947b701 - ExpoCameraBarcodeScanning: 0fd8335acfaef17a1690461ae6f0c2b817948668 - ExpoCellular: 7d53af5a8e82d326a5c7bc79443166eca4515fc5 - ExpoClipboard: 0acdce934cb6a71b507da1117399645265e51ed5 - ExpoContacts: 9b79a617546de1855e2267550e1f7a026afd2e9c - ExpoCrypto: 51dabf8af02467094127eb920e140c318d300080 - ExpoDevice: 7de9dc29fa2b2ae3e178bc4d6bc31b137c4c094b - ExpoDocumentPicker: ddcb3787230898ea845001f692e20fd193c63b08 - ExpoDomWebView: f21393aa4accbb6b8512fbec1ae741c454894bec - ExpoFileSystem: ad5826003c4064d55ab867193a8a79d19e85bce3 - ExpoFont: 387d22422f85258b053db3bdac0883974c304a96 - ExpoGL: e1188d1245549eaa7a448db6c078245f600469ae - ExpoGlassEffect: 4b0f07bf7997cb6bef8c702074e9a6ddc7e67bb0 - ExpoHaptics: 5aebc423ee7b7a7703472fc60986ca319b8826f0 - ExpoImage: d9446e7c2d365c063df7c8acd9c88b76a7b48ee4 - ExpoImageManipulator: 32880b92320d41f02a32bc22d111f518d6a68859 - ExpoImagePicker: 36604ce32a8566b619b87ef59bea2e136e0c0cc3 - ExpoInsights: c37d2fbdf46e1f61a6f5d53dc0eb16d40085f9da - ExpoKeepAwake: 72475c0e8644ad4dae17742bde04d5a0fe4ad4f9 - ExpoLinearGradient: 76405dc81ad27c300347829ed90ba26e7597e846 - ExpoLinking: 8505f5b8fa023e82b9d3ac7be1f1241f35b415dd - ExpoLivePhoto: cebdeea82761402e1bb2e0b61bd1622d889c729e - ExpoLocalAuthentication: efe64e98f2686d8bd0bd04300ba5ed360b3d0100 - ExpoLocalization: 19a0300c9fe626c884ce65cbbc421f9980bd5636 - ExpoLocation: 957da1f900af30208ee9245590dbd50c9d267709 - ExpoLogBox: 4a892fbcf6e343ffc1a6b714dcdc04a754d7e42f - ExpoMailComposer: edd4f46a26ea55ff0e3a83ef0192e79f647911c8 - ExpoMaps: 94294944cff46ad1170ce4f92800adecbcdd04ac - ExpoMediaLibrary: 2fbddcb06042f43076cf5e495e8237ec2ab95726 - ExpoMeshGradient: 93cf09380e6d86cd7a525da26dfddab2620a8421 - ExpoModulesCore: 549c4ec6534357031c563ba7f3bd40eff1f93b3e - ExpoModulesJSI: 16f789b94db843249981e5f550e050cc321fe554 - ExpoModulesTestCore: 62ce59e8c8162b449e65467e0421240256ba6732 - ExpoModulesWorklets: 3fc573fcc96eb8c457091dde007055ef35d58d70 - ExpoModulesWorkletsAdapter: 8e561ffec777e8eacf2a2bad53a0edf04cfffa1a - ExpoNetwork: 15d026c5c28251e0810849c8c01ebc9bc73ad007 - ExpoNotifications: 58a5bf9c5a0a2ee7d1800f9ed26ff17ff3748fde + EASClient: 92d4859ba99ccb9e6b15e4a6f6bf729eac5e14ce + EXApplication: cbda7a9c73358e57878912da014aa733a8959bd0 + EXConstants: 4e71d2c1c070cc53b391f042695163dc93edc4a8 + EXJSONUtils: dba2755f4e24009eaf87a876b2d615ea06c16e42 + EXManifests: 1fc5a116789c3b52db2efcbd326b578a77993c98 + Expo: d17cfa68c75242abfbf27dcba2ccf2585c630947 + expo-dev-client: 67f2a4045a9590813cca3c9b43ab27f1f571cd20 + expo-dev-launcher: a41702af6ac74a0c7a9696fbedc013e4f8285826 + expo-dev-menu: 9ff0583e2561b819aae98e4d1d3c66a737c18699 + expo-dev-menu-interface: de90cd44d311f247f5cb599aaedc44b2a3739f53 + ExpoAgeRange: cf86ce89f9dcef583009befbd9f2be0a68a02edd + ExpoAppIntegrity: a145563d5782e7986b8049d7420934fad2a8f46e + ExpoAppleAuthentication: f019fcbd9bdea1a3158aa936a5e1e26891652fd4 + ExpoAppMetrics: ee4217262021a90c2499d104609ae107540c33f6 + ExpoAsset: a60415645c0df44311c3f91de12641f53b022786 + ExpoAudio: e9f6100cbd0c61d991ae5cb699b22b6c3b4db041 + ExpoBackgroundFetch: a78cee242f4318d064ed9d60a97c997528d16f74 + ExpoBackgroundTask: b87922a5bc1da38177482cb41d3c33aeee8e3e42 + ExpoBattery: b587a5f4f7b9b01fa9993256dd77ea0218733c98 + ExpoBlob: f780a0d034b8ba5e3bcc89c799ef9dad43dd9abf + ExpoBlur: e392a6e09db71eef1e500e878112e1119c1ff1d0 + ExpoBrightness: a5ded2872740afd1f2d4efd1208f14145c1f080d + ExpoBrownfield: 42fab7dca07231ccf968358820afe0de674620d4 + ExpoCalendar: f710095d998314e748490db6fbde2d1a42fa5317 + ExpoCamera: 4947e7537ee2709669d51db62756cf8cfecca168 + ExpoCameraBarcodeScanning: 190a1fc2bf354ba6e8b446b2e9316fc1d245cc24 + ExpoCellular: dfbbccd9416880c2ffbf24178e6e385217505036 + ExpoClipboard: 4b208fe6266ed723a2e0770c500b910422d62b44 + ExpoContacts: 03bb5421c591a7537e77751645d336e4cf320c62 + ExpoCrypto: b4d4244224451c7089d2bbb7fbb919b0d7b0daa8 + ExpoDevice: 2faba018a9d10a57ab14111046033a4aaf8f933f + ExpoDocumentPicker: 4d58ccd9eeaa4273ef4ef0c031cbb6bf619fdd77 + ExpoDomWebView: 38ea526cf9993f36620310f937f69fb78f98cb7d + ExpoFileSystem: 19f5072aece92ea4b9ed60d370ed98807eeb5ccb + ExpoFont: c7fae734ec2d4bcf7e530f3686ef07cfe2169ca9 + ExpoGL: 230a3122c5856848d7ef3daa5c9fc7dd3025ce09 + ExpoGlassEffect: 75c147e3b0afb079bbc21df5829a7fe1f5d4afa6 + ExpoHaptics: 942f1080ca288140e3112d5a6f2bc342a85ae2ec + ExpoImage: 0cd5791d33b7484e6b7ba8f9da9c7879ac4f0687 + ExpoImageManipulator: aa4e2d3c2a153a04b6a6998a713d107dd0e9e6b1 + ExpoImagePicker: 26a98921352081043c69b176690a43ac2932b6b9 + ExpoInsights: 0a255f9e887e1e8980f7f79c4da8253a66ab3d55 + ExpoKeepAwake: 974139fa581c8dd09a09ba69b3537c1fa782a456 + ExpoLinearGradient: 9ecd05fed3d86b96c18ab3e8881e4932aae584c6 + ExpoLinking: 4e2e8c58e148dd22a6cfda744796abf36bae8787 + ExpoLivePhoto: 009b06bcf15ac8dd1d19ab6963b9d8140630e8dd + ExpoLocalAuthentication: cc6baa33a0508a1b274421856aab72621220f7bf + ExpoLocalization: 76bd3d376fe14bc7ef1a5ff7ea6e395852ce6bcf + ExpoLocation: f936cb52117047963687a6a3aefc2fea85514219 + ExpoLogBox: 80577cba1af7afcb0d1b379c3fe7efc0eca3dd9e + ExpoMailComposer: 98116d32d61d06cc821663b819cd2cfed9698465 + ExpoMaps: 5598309e099c412cce62370a651016eae49454c6 + ExpoMediaLibrary: b3a987d115a5e06fb1763efc25b8ddf528a8357e + ExpoMeshGradient: 51326a88d2ed6f01a0eaf5d0f69687273f8c1aa8 + ExpoModulesCore: 83913161a08b2e283e96fb814fb7204524b63f75 + ExpoModulesJSI: ea32f68254fb0bb09198bc0b40489d4a9df4c708 + ExpoModulesTestCore: 5660ab6b5928747366d4946580622a578865696a + ExpoModulesWorklets: 8bcb73d4467bf0363e0eb1f8a040fe1e37c18f79 + ExpoModulesWorkletsAdapter: fb7bb06e9b617561f10fa02a20e31206cc00d138 + ExpoNetwork: 23eca2e819b9bed3f74ba866401cb8bc481d90c7 + ExpoNotifications: 98b903ae77c702da2feb1d065d7fc62d40dc720c ExpoObserve: d5a52bd0670d1b2bc24a1d59cf9322f3c843a045 - ExpoPrint: 884afdcfe9adea0d36f121353652d0cfa7963deb - ExpoScreenCapture: fe37f0547515f17434b002dcda5e1725fc61fe6f - ExpoScreenOrientation: 1ec7e1beaa3adf7ef0dd1f7bad278f9a96fd518c - ExpoSecureStore: 2cfd2091ba612c4b53a3ab53bab7cd29f4df7448 - ExpoSensors: 8b9f828af53d424c50a4c8b660e593360445ed86 - ExpoSharing: 0499c917472da9b1ececcdbbec270e8bdbe2a34a - ExpoSMS: 528c01f4f24b20238863db064b34622dec82969a - ExpoSpeech: e38a87df68cbb92fa22afe33aea17ada05031970 - ExpoSplashScreen: a2c6d6afe0a90c7bcfb706d452b7fa59f979560f - ExpoSQLite: bb89f888d972448c0594042c6654c41957b006a8 - ExpoStoreReview: 4f855490cec2241cfe28773c60271582d67417bc - ExpoSymbols: 257ea8cbc29c3d9cc2b3c66396dfeea8ac741230 - ExpoSystemUI: 45304f7673a470749a0fc099b09ba0a23d1a89c2 - ExpoTaskManager: a06f59b8f5777b647a1707b3d21f5e9717cd157d - ExpoTrackingTransparency: a980b930c8e2affc688dd93940dc5b88f55c875b - ExpoUI: e6e61b9aa1424349659c6cb1165adee716a89b69 - ExpoVideo: eca730ba53ec45c2a188aa9dbfe11f7f809d66a1 + ExpoPrint: 11940265e67847e7f98231a6d654f3c8df41b7c1 + ExpoScreenCapture: 49513bd6d872808a5f79a26004fe7cb234d08bd5 + ExpoScreenOrientation: 85e9fa0920f61f98aac4b0f8c8db7928ccac1b77 + ExpoSecureStore: f21bc12bb09ce0d94b999d1af57571213c33fa2f + ExpoSensors: 6872fd0ef1d22e3840d4853c3acbb02257f3531e + ExpoSharing: 8dd7e038afd1f3bb2db4cbc587c3cbbeecb9003c + ExpoSMS: 2e0e9d532fc5614c8887992f2b5a8d9585e0c54b + ExpoSpeech: 87867957dcb93c9c626bf2a22483b3110420c015 + ExpoSplashScreen: 42d7397f8e50dfb1387b97fd5cc3a49d78af4c40 + ExpoSQLite: b68f2516baa84ddb95c0edadf70cb606294a5ea6 + ExpoStoreReview: 7c8ca2d4f3896e10493043a0f7b3239a617283a5 + ExpoSymbols: e1cbee73f3896caa5dc4b3468e35361ea79daca4 + ExpoSystemUI: 2710ef705216001a82e54b3b95c9a5156055b1ef + ExpoTaskManager: 303bf0ec470e95b4d7fcf0016a925c77f2f2df52 + ExpoTrackingTransparency: 66ffd9145e18c752319efe3c4731078300de06dc + ExpoUI: 87f3d30466d100bc429ff157face07a6b4ac5e42 + ExpoVideo: b90f337707445c6e8ba140769246b907ec7799b1 ExpoVideoDashSupportModule: a8197584e7b7e533a67e75d3349c5fa827358ad6 - ExpoVideoThumbnails: 2340f0b7f599c9ce6ba49a885f783de919cf4dd3 - ExpoWebBrowser: b65b3921741b51c5513e2a369f59c37076987d9b - EXStructuredHeaders: e25ac67c966d3795153dfdb40bfd3b999df18929 - EXUpdates: a0f980531cbcf45906b2489febd4e11a5895f332 - EXUpdatesInterface: 5ab8c3e8018ef533a132b9327af5b2a1926dd299 + ExpoVideoThumbnails: 3ff80af3300cb8792dfce15a0c2d045c0e873ba2 + ExpoWebBrowser: fa2798e4edc38e14908a0a06f1af8cc0a3827369 + EXStructuredHeaders: 9e89bcdd636ae2ecb59995cfba3230f5d7547c08 + EXUpdates: d624bb85d30338ba4e8f9cfe00a7420d7f6377eb + EXUpdatesInterface: 46d1e06a0f07db4594489fbcfb8500dff93c400a FBLazyVector: 26fd21c75314e101f280d401e97f27d54f3f7064 hermes-engine: 725fd85144e1348879039099a6be950c471a4f2c libavif: 5f8e715bea24debec477006f21ef9e95432e254d @@ -4104,13 +4104,13 @@ SPEC CHECKSUMS: RNReanimated: c51bd6bd2ff1ef0140d6056ff496e6089432d00c RNScreens: c476f5f41b7c4ddce3e73f838c23d40c5e33384c RNSVG: 04044c3abcf177fd674a1a3d13097efa1adebcbe - RNWorklets: c586254b36d144ad5ae62b82686de1b6a066949f + RNWorklets: a70e1e5b41eb2e149f9ecb3ac1fac31d5b197027 SDWebImage: e9fc87c1aab89a8ab1bbd74eba378c6f53be8abf SDWebImageAVIFCoder: afe194a084e851f70228e4be35ef651df0fc5c57 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380 TestExpoUi: e376582270047f880c7e44afc7f912c97b14da54 - UMAppLoader: 825f43fdb8b853ede700ebaf8e9beb84ebe49cab + UMAppLoader: 114b4c89b0083f3e103be55fe0ff0950475f267b WorkletsTester: 15a12097d67f73fd107ab7dc8236cab805e472b0 Yoga: 04bb4bfeb02c0000b940c1e6e89e856cd8de5a71 ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5 diff --git a/apps/bare-expo/modules/benchmarking/android/src/main/java/expo/modules/benchmark/BenchmarkingExpoModule.kt b/apps/bare-expo/modules/benchmarking/android/src/main/java/expo/modules/benchmark/BenchmarkingExpoModule.kt index 3807f1f4a1a8cf..35d5bd839ccaf7 100644 --- a/apps/bare-expo/modules/benchmarking/android/src/main/java/expo/modules/benchmark/BenchmarkingExpoModule.kt +++ b/apps/bare-expo/modules/benchmarking/android/src/main/java/expo/modules/benchmark/BenchmarkingExpoModule.kt @@ -6,7 +6,9 @@ import expo.modules.kotlin.modules.ModuleDefinition import expo.modules.kotlin.records.Field import expo.modules.kotlin.records.Record import expo.modules.kotlin.sharedobjects.SharedObject +import expo.modules.kotlin.types.OptimizedRecord +@OptimizedRecord class Point : Record { @Field var x: Double = 0.0 diff --git a/apps/bare-expo/modules/benchmarking/ios/BenchmarkingExpoModule.swift b/apps/bare-expo/modules/benchmarking/ios/BenchmarkingExpoModule.swift index 47d52e14d7ed93..14b3d67e3733e1 100644 --- a/apps/bare-expo/modules/benchmarking/ios/BenchmarkingExpoModule.swift +++ b/apps/bare-expo/modules/benchmarking/ios/BenchmarkingExpoModule.swift @@ -14,20 +14,11 @@ final class SharedPoint: SharedObject { } public final class BenchmarkingExpoModule: Module { -// @OptimizedFunction - private func addNumbersOptimized(a: Double, b: Double) throws -> Double { - return a + b - } - -// @OptimizedFunction - private func addNumbersAsyncOptimized(a: Double, b: Double) throws -> Double { - return a + b - } - public func definition() -> ModuleDefinition { Name("BenchmarkingExpoModule") Function("nothing") {} + Function("nothingOptimized", nothingOptimized()) AsyncFunction("nothingAsync") { () async -> Void in } @@ -37,13 +28,13 @@ public final class BenchmarkingExpoModule: Module { return a + b } - Function("addNumbersOptimized", addNumbersOptimized) + Function("addNumbersOptimized", addNumbersOptimized()) AsyncFunction("addNumbersAsync") { (a: Double, b: Double) in return a + b } - AsyncFunction("addNumbersAsyncOptimized", addNumbersAsyncOptimized) + AsyncFunction("addNumbersAsyncOptimized", addNumbersOptimized()) // MARK: - Strings @@ -51,6 +42,8 @@ public final class BenchmarkingExpoModule: Module { return a + b } + Function("addStringsOptimized", addStringsOptimized()) + // MARK: - Arrays Function("foldArray") { (array: [Double]) in @@ -88,4 +81,17 @@ public final class BenchmarkingExpoModule: Module { } } } + + @OptimizedFunction + private func nothingOptimized() -> Void {} + + @OptimizedFunction + private func addNumbersOptimized(a: Double, b: Double) throws -> Double { + return a + b + } + + @OptimizedFunction + private func addStringsOptimized(a: String, b: String) throws -> String { + return a + b + } } diff --git a/apps/bare-expo/modules/benchmarking/src/BenchmarkingExpoModule.ts b/apps/bare-expo/modules/benchmarking/src/BenchmarkingExpoModule.ts index 41ec2cd6cfa6b3..7a2b04424fd294 100644 --- a/apps/bare-expo/modules/benchmarking/src/BenchmarkingExpoModule.ts +++ b/apps/bare-expo/modules/benchmarking/src/BenchmarkingExpoModule.ts @@ -8,10 +8,12 @@ export declare class SharedPoint extends SharedObject { declare class BenchmarkingExpoModule extends NativeModule { nothing(): void; + nothingOptimized(): void; nothingAsync(): Promise; addNumbers(a: number, b: number): number; addNumbersOptimized(a: number, b: number): number; addStrings(a: string, b: string): string; + addStringsOptimized(a: string, b: string): string; foldArray(array: number[]): number; passthroughDict(point: { x: number; y: number }): { x: number; y: number }; passthroughRecord(point: { x: number; y: number }): { x: number; y: number }; diff --git a/apps/bare-expo/package.json b/apps/bare-expo/package.json index e82f5d29b75701..b2afca469c85d9 100644 --- a/apps/bare-expo/package.json +++ b/apps/bare-expo/package.json @@ -41,9 +41,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/dom-webview": "workspace:*", + "@expo/dom-webview": "56.0.0", "@expo/styleguide-base": "^1.0.1", - "@expo/ui": "workspace:*", + "@expo/ui": "56.0.0", "@react-native-async-storage/async-storage": "2.2.0", "@react-native-community/datetimepicker": "8.6.0", "@react-native-community/netinfo": "11.5.2", @@ -56,29 +56,29 @@ "@react-navigation/native-stack": "^7.14.5", "@shopify/flash-list": "2.0.2", "@shopify/react-native-skia": "2.4.18", - "expo": "workspace:*", + "expo": "56.0.0-preview.0", "expo-app-metrics": "workspace:*", - "expo-background-fetch": "workspace:*", - "expo-brownfield": "workspace:*", - "expo-build-properties": "workspace:*", - "expo-camera": "workspace:*", - "expo-dev-client": "workspace:*", - "expo-dev-menu": "workspace:*", - "expo-font": "workspace:*", - "expo-image": "workspace:*", - "expo-insights": "workspace:*", - "expo-linking": "workspace:*", - "expo-location": "workspace:*", - "expo-navigation-bar": "workspace:*", - "expo-network-addons": "workspace:*", - "expo-notifications": "workspace:*", + "expo-background-fetch": "56.0.0", + "expo-brownfield": "56.0.0", + "expo-build-properties": "56.0.0", + "expo-camera": "56.0.0", + "expo-dev-client": "56.0.0", + "expo-dev-menu": "56.0.0", + "expo-font": "56.0.0", + "expo-image": "56.0.0", + "expo-insights": "56.0.0", + "expo-linking": "56.0.0", + "expo-location": "56.0.0", + "expo-navigation-bar": "56.0.0", + "expo-network-addons": "56.0.0", + "expo-notifications": "56.0.0", "expo-observe": "workspace:*", - "expo-splash-screen": "workspace:*", - "expo-status-bar": "workspace:*", - "expo-tracking-transparency": "workspace:*", - "expo-updates": "workspace:*", - "expo-video": "workspace:*", - "expo-web-browser": "workspace:*", + "expo-splash-screen": "56.0.0", + "expo-status-bar": "56.0.0", + "expo-tracking-transparency": "56.0.0", + "expo-updates": "56.0.0", + "expo-video": "56.0.0", + "expo-web-browser": "56.0.0", "lottie-react-native": "^7.3.4", "native-component-list": "workspace:*", "react": "19.2.3", @@ -93,16 +93,16 @@ "react-native-svg": "15.15.4", "react-native-view-shot": "4.0.3", "react-native-webview": "13.16.1", - "react-native-worklets": "0.8.1", + "react-native-worklets": "0.8.3", "test-suite": "workspace:*" }, "devDependencies": { "@babel/core": "^7.20.0", - "@expo/cli": "workspace:*", + "@expo/cli": "56.0.0", "@expo/spawn-async": "^1.7.2", "@types/react": "~19.2.0", - "babel-preset-expo": "workspace:*", - "expo-module-scripts": "workspace:*", + "babel-preset-expo": "56.0.0", + "expo-module-scripts": "56.0.0", "jest": "^29.3.1" }, "codegenConfig": { diff --git a/apps/brownfield-tester/expo-app/package.json b/apps/brownfield-tester/expo-app/package.json index d94435bc451519..3872454ece6886 100644 --- a/apps/brownfield-tester/expo-app/package.json +++ b/apps/brownfield-tester/expo-app/package.json @@ -13,26 +13,26 @@ "@react-navigation/bottom-tabs": "^7.15.5", "@react-navigation/elements": "^2.9.10", "@react-navigation/native": "^7.1.33", - "expo": "workspace:*", - "expo-brownfield": "workspace:*", - "expo-constants": "workspace:*", - "expo-device": "workspace:*", - "expo-dev-menu": "workspace:*", - "expo-font": "workspace:*", - "expo-glass-effect": "workspace:*", - "expo-image": "workspace:*", - "expo-linking": "workspace:*", - "expo-router": "workspace:*", - "expo-splash-screen": "workspace:*", - "expo-status-bar": "workspace:*", - "expo-symbols": "workspace:*", - "expo-system-ui": "workspace:*", - "expo-web-browser": "workspace:*", + "expo": "56.0.0-preview.0", + "expo-brownfield": "56.0.0", + "expo-constants": "56.0.0", + "expo-device": "56.0.0", + "expo-dev-menu": "56.0.0", + "expo-font": "56.0.0", + "expo-glass-effect": "56.0.0", + "expo-image": "56.0.0", + "expo-linking": "56.0.0", + "expo-router": "56.0.0", + "expo-splash-screen": "56.0.0", + "expo-status-bar": "56.0.0", + "expo-symbols": "56.0.0", + "expo-system-ui": "56.0.0", + "expo-web-browser": "56.0.0", "react": "19.2.3", "react-dom": "19.2.3", "react-native": "0.85.2", "react-native-gesture-handler": "~2.30.0", - "react-native-worklets": "0.8.1", + "react-native-worklets": "0.8.3", "react-native-reanimated": "~4.3.0", "react-native-safe-area-context": "~5.6.2", "react-native-screens": "~4.25.0-beta.1", diff --git a/apps/brownfield-tester/package.json b/apps/brownfield-tester/package.json index d96f15d3b4004f..072796e16eb1fe 100644 --- a/apps/brownfield-tester/package.json +++ b/apps/brownfield-tester/package.json @@ -3,10 +3,10 @@ "version": "0.0.1", "private": true, "dependencies": { - "expo": "workspace:*", + "expo": "56.0.0-preview.0", "react-native": "0.85.2", "react": "19.2.3", "react-native-reanimated": "4.3.0", - "react-native-worklets": "0.8.1" + "react-native-worklets": "0.8.3" } } diff --git a/apps/eas-expo-go/package.json b/apps/eas-expo-go/package.json index 79665aaa5df19a..b9e3aac2c69308 100644 --- a/apps/eas-expo-go/package.json +++ b/apps/eas-expo-go/package.json @@ -4,7 +4,7 @@ "main": "index.js", "license": "MIT", "dependencies": { - "expo": "workspace:*" + "expo": "56.0.0-preview.0" }, "scripts": { "eas-build-pre-install": "./scripts/eas-build-pre-install.sh", diff --git a/apps/expo-go/ios/Podfile.lock b/apps/expo-go/ios/Podfile.lock index 240d82796343f6..80a5c04d88d742 100644 --- a/apps/expo-go/ios/Podfile.lock +++ b/apps/expo-go/ios/Podfile.lock @@ -4,23 +4,23 @@ PODS: - CocoaLumberjack/Core (= 3.5.3) - CocoaLumberjack/Core (3.5.3) - DoubleConversion (1.1.6) - - EASClient (55.0.2): + - EASClient (56.0.0): - ExpoModulesCore - - EASClient/Tests (55.0.2): + - EASClient/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - - EXApplication (55.0.8): + - EXApplication (56.0.0): - ExpoModulesCore - - EXConstants (55.0.7): + - EXConstants (56.0.0): - ExpoModulesCore - - EXJSONUtils (55.0.0) - - EXJSONUtils/Tests (55.0.0) - - EXManifests (55.0.9): + - EXJSONUtils (56.0.0) + - EXJSONUtils/Tests (56.0.0) + - EXManifests (56.0.0): - ExpoModulesCore - - EXManifests/Tests (55.0.9): + - EXManifests/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - - Expo (55.0.2): + - Expo (56.0.0-preview.0): - boost - DoubleConversion - ExpoModulesCore @@ -52,7 +52,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - Expo/Tests (55.0.2): + - Expo/Tests (56.0.0-preview.0): - boost - DoubleConversion - ExpoModulesCore @@ -85,136 +85,72 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - ExpoAgeRange (0.2.10): + - ExpoAsset (56.0.0): - ExpoModulesCore - - ExpoAppleAuthentication (55.0.8): + - ExpoAudio (56.0.0): - ExpoModulesCore - - ExpoAppMetrics (0.1.7): - - boost - - DoubleConversion - - ExpoModulesCore - - EXUpdatesInterface - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - 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 - - SocketRocket - - Yoga - - ExpoAppMetrics/Tests (0.1.7): - - boost - - DoubleConversion - - ExpoModulesCore - - EXUpdatesInterface - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - 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 - - SocketRocket - - Yoga - - ExpoAsset (55.0.7): - - ExpoModulesCore - - ExpoAudio (55.0.8): - - ExpoModulesCore - - ExpoBackgroundFetch (55.0.8): + - ExpoBackgroundFetch (56.0.0): - ExpoModulesCore - - ExpoBackgroundTask (55.0.8): + - ExpoBackgroundTask (56.0.0): - ExpoModulesCore - ExpoTaskManager - - ExpoBackgroundTask/Tests (55.0.8): + - ExpoBackgroundTask/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - ExpoTaskManager - - ExpoBattery (55.0.8): + - ExpoBattery (56.0.0): - ExpoModulesCore - - ExpoBlob (55.0.8): + - ExpoBlob (56.0.0): - ExpoModulesCore - - ExpoBlur (55.0.8): + - ExpoBlur (56.0.0): - ExpoModulesCore - - ExpoBrightness (55.0.8): + - ExpoBrightness (56.0.0): - ExpoModulesCore - - ExpoCalendar (55.0.8): + - ExpoCalendar (56.0.0): - ExpoModulesCore - - ExpoCamera (55.0.9): + - ExpoCamera (56.0.0): - ExpoModulesCore - - ExpoCameraBarcodeScanning (55.0.9): + - ExpoCameraBarcodeScanning (56.0.0): - ExpoCamera - ZXingObjC/OneD - ZXingObjC/PDF417 - - ExpoCellular (55.0.8): + - ExpoCellular (56.0.0): - ExpoModulesCore - - ExpoClipboard (55.0.8): + - ExpoClipboard (56.0.0): - ExpoModulesCore - - ExpoClipboard/Tests (55.0.8): + - ExpoClipboard/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - - ExpoContacts (55.0.8): + - ExpoContacts (56.0.0): - ExpoModulesCore - - ExpoCrypto (55.0.8): + - ExpoCrypto (56.0.0): - ExpoModulesCore - - ExpoDevice (55.0.9): + - ExpoDevice (56.0.0): - ExpoModulesCore - - ExpoDocumentPicker (55.0.8): + - ExpoDocumentPicker (56.0.0): - ExpoModulesCore - - ExpoDomWebView (55.0.3): + - ExpoDomWebView (56.0.0): - ExpoModulesCore - - ExpoFileSystem (55.0.9): + - ExpoFileSystem (56.0.0): - ExpoModulesCore - - ExpoFont (55.0.4): + - ExpoFont (56.0.0): - ExpoModulesCore - - ExpoGL (55.0.9): + - ExpoGL (56.0.0): - ExpoModulesCore - ExpoModulesJSI - ReactCommon/turbomodule/core - - ExpoGlassEffect (55.0.7): + - ExpoGlassEffect (56.0.0): - ExpoModulesCore - - ExpoHaptics (55.0.8): + - ExpoHaptics (56.0.0): - ExpoModulesCore - - ExpoImage (55.0.5): + - ExpoImage (56.0.0): - ExpoModulesCore - libavif/libdav1d - SDWebImage (~> 5.21.0) - SDWebImageAVIFCoder (~> 0.11.0) - SDWebImageSVGCoder (~> 1.7.0) - SDWebImageWebPCoder (~> 0.14.6) - - ExpoImage/Tests (55.0.5): + - ExpoImage/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - libavif/libdav1d @@ -222,39 +158,35 @@ PODS: - SDWebImageAVIFCoder (~> 0.11.0) - SDWebImageSVGCoder (~> 1.7.0) - SDWebImageWebPCoder (~> 0.14.6) - - ExpoImageManipulator (55.0.9): + - ExpoImageManipulator (56.0.0): - ExpoModulesCore - SDWebImageWebPCoder - - ExpoImagePicker (55.0.9): + - ExpoImagePicker (56.0.0): - ExpoModulesCore - - ExpoKeepAwake (55.0.4): + - ExpoKeepAwake (56.0.0): - ExpoModulesCore - - ExpoLinearGradient (55.0.8): + - ExpoLinearGradient (56.0.0): - ExpoModulesCore - - ExpoLinking (55.0.7): + - ExpoLinking (56.0.0): - ExpoModulesCore - - ExpoLivePhoto (55.0.8): + - ExpoLocalAuthentication (56.0.0): - ExpoModulesCore - - ExpoLocalAuthentication (55.0.8): + - ExpoLocalization (56.0.0): - ExpoModulesCore - - ExpoLocalization (55.0.8): + - ExpoLocation (56.0.0): - ExpoModulesCore - - ExpoLocation (55.1.2): - - ExpoModulesCore - - ExpoLogBox (55.0.7): + - ExpoLogBox (56.0.0): - React-Core - - ExpoMailComposer (55.0.8): + - ExpoMailComposer (56.0.0): - ExpoModulesCore - - ExpoMediaLibrary (55.0.9): + - ExpoMediaLibrary (56.0.0): - ExpoModulesCore - React-Core - - ExpoMediaLibrary/Tests (55.0.9): + - ExpoMediaLibrary/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - React-Core - - ExpoMeshGradient (55.0.8): - - ExpoModulesCore - - ExpoModulesCore (55.0.12): + - ExpoModulesCore (56.0.0): - boost - DoubleConversion - ExpoModulesJSI @@ -284,7 +216,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - ExpoModulesCore/Tests (55.0.12): + - ExpoModulesCore/Tests (56.0.0): - boost - DoubleConversion - ExpoModulesJSI @@ -315,108 +247,46 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - ExpoModulesJSI (55.0.0): + - ExpoModulesJSI (56.0.0): - React-Core - React-runtimescheduler - ReactCommon - - ExpoModulesJSI/Tests (55.0.0): + - ExpoModulesJSI/Tests (56.0.0): - React-Core - React-runtimescheduler - ReactCommon - - ExpoModulesTestCore (55.0.2): + - ExpoModulesTestCore (56.0.0): - ExpoModulesCore - Nimble (~> 13.0.0) - Quick (~> 7.3.0) - React-hermes - - ExpoModulesWorklets (55.0.12): + - ExpoModulesWorklets (56.0.0): - ExpoModulesCore - ExpoModulesJSI - - ExpoModulesWorkletsAdapter (55.0.12): + - ExpoModulesWorkletsAdapter (56.0.0): - ExpoModulesCore - ExpoModulesJSI - ExpoModulesWorklets - RNWorklets - - ExpoNetwork (55.0.8): + - ExpoNetwork (56.0.0): - ExpoModulesCore - - ExpoNotifications (55.0.10): + - ExpoNotifications (56.0.0): - ExpoModulesCore - - ExpoNotifications/Tests (55.0.10): + - ExpoNotifications/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - - ExpoObserve (0.1.7): - - boost - - DoubleConversion - - EASClient - - ExpoAppMetrics - - ExpoModulesCore - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - 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 - - SocketRocket - - Yoga - - ExpoObserve/Tests (0.1.7): - - boost - - DoubleConversion - - EASClient - - ExpoAppMetrics - - ExpoModulesCore - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - 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 - - SocketRocket - - Yoga - - ExpoPrint (55.0.8): + - ExpoPrint (56.0.0): - ExpoModulesCore - - ExpoRouter (55.0.2): + - ExpoRouter (56.0.0): - ExpoModulesCore - RNScreens - - ExpoRouter/Tests (55.0.2): + - ExpoRouter/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - RNScreens - - ExpoScreenCapture (55.0.8): + - ExpoScreenCapture (56.0.0): - ExpoModulesCore - - ExpoScreenOrientation (55.0.8): + - ExpoScreenOrientation (56.0.0): - boost - DoubleConversion - ExpoModulesCore @@ -445,46 +315,46 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - ExpoSecureStore (55.0.8): + - ExpoSecureStore (56.0.0): - ExpoModulesCore - - ExpoSensors (55.0.8): + - ExpoSensors (56.0.0): - ExpoModulesCore - - ExpoSharing (55.0.10): + - ExpoSharing (56.0.0): - ExpoModulesCore - - ExpoSMS (55.0.8): + - ExpoSMS (56.0.0): - ExpoModulesCore - - ExpoSpeech (55.0.8): + - ExpoSpeech (56.0.0): - ExpoModulesCore - - ExpoSQLite (55.0.10): + - ExpoSQLite (56.0.0): - ExpoModulesCore - - ExpoStoreReview (55.0.8): + - ExpoStoreReview (56.0.0): - ExpoModulesCore - - ExpoSymbols (55.0.4): + - ExpoSymbols (56.0.0): - ExpoModulesCore - - ExpoSystemUI (55.0.9): + - ExpoSystemUI (56.0.0): - ExpoModulesCore - - ExpoTaskManager (55.0.9): + - ExpoTaskManager (56.0.0): - ExpoModulesCore - UMAppLoader - - ExpoTaskManager/Tests (55.0.9): + - ExpoTaskManager/Tests (56.0.0): - ExpoModulesCore - ExpoModulesTestCore - UMAppLoader - - ExpoTrackingTransparency (55.0.8): + - ExpoTrackingTransparency (56.0.0): - ExpoModulesCore - - ExpoUI (55.0.1): + - ExpoUI (56.0.0): - ExpoModulesCore - ExpoModulesWorklets - React-RCTFabric - - ExpoVideo (55.0.9): + - ExpoVideo (56.0.0): - ExpoModulesCore - - ExpoVideoThumbnails (55.0.9): + - ExpoVideoThumbnails (56.0.0): - ExpoModulesCore - - ExpoWebBrowser (55.0.9): + - ExpoWebBrowser (56.0.0): - ExpoModulesCore - - EXStructuredHeaders (55.0.0) - - EXStructuredHeaders/Tests (55.0.0) - - EXUpdates (55.0.11): + - EXStructuredHeaders (56.0.0) + - EXStructuredHeaders/Tests (56.0.0) + - EXUpdates (56.0.0): - boost - DoubleConversion - EASClient @@ -518,7 +388,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - EXUpdates/Tests (55.0.11): + - EXUpdates/Tests (56.0.0): - boost - DoubleConversion - EASClient @@ -553,7 +423,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - EXUpdatesInterface (55.1.3): + - EXUpdatesInterface (56.0.0): - ExpoModulesCore - fast_float (8.0.0) - FBLazyVector (0.85.2) @@ -3888,7 +3758,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - RNWorklets (0.8.1): + - RNWorklets (0.8.3): - boost - DoubleConversion - fast_float @@ -3916,11 +3786,11 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNWorklets/apple (= 0.8.1) - - RNWorklets/common (= 0.8.1) + - RNWorklets/apple (= 0.8.3) + - RNWorklets/common (= 0.8.3) - SocketRocket - Yoga - - RNWorklets/apple (0.8.1): + - RNWorklets/apple (0.8.3): - boost - DoubleConversion - fast_float @@ -3950,7 +3820,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - RNWorklets/common (0.8.1): + - RNWorklets/common (0.8.3): - boost - DoubleConversion - fast_float @@ -4118,8 +3988,8 @@ PODS: - StripeUICore (25.11.0): - StripeCore (= 25.11.0) - SwiftUIIntrospect (1.3.0) - - UMAppLoader (55.0.2) - - UMAppLoader/Tests (55.0.2): + - UMAppLoader (56.0.0) + - UMAppLoader/Tests (56.0.0): - ExpoModulesTestCore - Yoga (0.0.0) - ZXingObjC/Core (3.6.9) @@ -4142,10 +4012,6 @@ DEPENDENCIES: - EXManifests/Tests (from `../../../packages/expo-manifests/ios`) - Expo (from `../../../packages/expo`) - Expo/Tests (from `../../../packages/expo`) - - ExpoAgeRange (from `../../../packages/expo-age-range/ios`) - - ExpoAppleAuthentication (from `../../../packages/expo-apple-authentication/ios`) - - ExpoAppMetrics (from `../../../packages/expo-app-metrics/ios`) - - ExpoAppMetrics/Tests (from `../../../packages/expo-app-metrics/ios`) - ExpoAsset (from `../../../packages/expo-asset/ios`) - ExpoAudio (from `../../../packages/expo-audio/ios`) - ExpoBackgroundFetch (from `../../../packages/expo-background-fetch/ios`) @@ -4178,7 +4044,6 @@ DEPENDENCIES: - ExpoKeepAwake (from `../../../packages/expo-keep-awake/ios`) - ExpoLinearGradient (from `../../../packages/expo-linear-gradient/ios`) - ExpoLinking (from `../../../packages/expo-linking/ios`) - - ExpoLivePhoto (from `../../../packages/expo-live-photo/ios`) - ExpoLocalAuthentication (from `../../../packages/expo-local-authentication/ios`) - ExpoLocalization (from `../../../packages/expo-localization/ios`) - ExpoLocation (from `../../../packages/expo-location/ios`) @@ -4186,7 +4051,6 @@ DEPENDENCIES: - ExpoMailComposer (from `../../../packages/expo-mail-composer/ios`) - ExpoMediaLibrary (from `../../../packages/expo-media-library/ios`) - ExpoMediaLibrary/Tests (from `../../../packages/expo-media-library/ios`) - - ExpoMeshGradient (from `../../../packages/expo-mesh-gradient/ios`) - ExpoModulesCore (from `../../../packages/expo-modules-core`) - ExpoModulesCore/Tests (from `../../../packages/expo-modules-core`) - ExpoModulesJSI (from `../../../packages/expo-modules-jsi/apple`) @@ -4197,8 +4061,6 @@ DEPENDENCIES: - ExpoNetwork (from `../../../packages/expo-network/ios`) - ExpoNotifications (from `../../../packages/expo-notifications/ios`) - ExpoNotifications/Tests (from `../../../packages/expo-notifications/ios`) - - ExpoObserve (from `../../../packages/expo-observe/ios`) - - ExpoObserve/Tests (from `../../../packages/expo-observe/ios`) - ExpoPrint (from `../../../packages/expo-print/ios`) - ExpoRouter (from `../../../packages/expo-router/ios`) - ExpoRouter/Tests (from `../../../packages/expo-router/ios`) @@ -4278,13 +4140,13 @@ DEPENDENCIES: - React-logger (from `../../../react-native-lab/react-native/packages/react-native/ReactCommon/logger`) - React-Mapbuffer (from `../../../react-native-lab/react-native/packages/react-native/ReactCommon`) - React-microtasksnativemodule (from `../../../react-native-lab/react-native/packages/react-native/ReactCommon/react/nativemodule/microtasks`) - - "react-native-keyboard-controller (from `../../../node_modules/.pnpm/react-native-keyboard-controller@1.21.6_react-native-reanimated@4.3.0_patch_hash=1e34e4_4a7542518132451a7b077bd8ae3655f6/node_modules/react-native-keyboard-controller`)" + - "react-native-keyboard-controller (from `../../../node_modules/.pnpm/react-native-keyboard-controller@1.21.6_react-native-reanimated@4.3.0_patch_hash=1e34e4_12f8a138b6657e483fa62a9a1cf41ec7/node_modules/react-native-keyboard-controller`)" - "react-native-maps/Maps (from `../../../node_modules/.pnpm/react-native-maps@1.27.2_react-native-web@0.21.2_encoding@0.1.13_react-dom@19.2.3_react_57a2ea0a29596ebe4de368af95700197/node_modules/react-native-maps`)" - "react-native-netinfo (from `../../../node_modules/.pnpm/@react-native-community+netinfo@12.0.1_patch_hash=ced0cb79848978ecc3e780a4d812d94868434_d6811183a2f0d3fa5b5e9d7583a256b6/node_modules/@react-native-community/netinfo`)" - "react-native-pager-view (from `../../../node_modules/.pnpm/react-native-pager-view@8.0.1_react-native@0.85.2_@babel+core@7.29.0_@react-native+jest_f3ba7a4a9b5d6d93f4fca09e851e5dc1/node_modules/react-native-pager-view`)" - "react-native-safe-area-context (from `../../../node_modules/.pnpm/react-native-safe-area-context@5.7.0_react-native@0.85.2_@babel+core@7.29.0_@react-nati_f959cbc263c1da1b8982692148d3bcef/node_modules/react-native-safe-area-context`)" - "react-native-segmented-control (from `../../../node_modules/.pnpm/@react-native-segmented-control+segmented-control@2.5.7_react-native@0.85.2_@babel+core_5b5b94a5f22cb45e3ee4d4b6c33ef9a5/node_modules/@react-native-segmented-control/segmented-control`)" - - "react-native-skia (from `../../../node_modules/.pnpm/@shopify+react-native-skia@2.6.2_react-native-reanimated@4.3.0_patch_hash=1e34e42385416_ac99610af16b480307d9da018beb05cf/node_modules/@shopify/react-native-skia`)" + - "react-native-skia (from `../../../node_modules/.pnpm/@shopify+react-native-skia@2.6.2_react-native-reanimated@4.3.0_patch_hash=1e34e42385416_722c5d969a52a2fc0b328b39d6b1f5cd/node_modules/@shopify/react-native-skia`)" - "react-native-slider (from `../../../node_modules/.pnpm/@react-native-community+slider@5.2.0/node_modules/@react-native-community/slider`)" - react-native-view-shot (from `../modules/react-native-view-shot`) - react-native-webview (from `../modules/react-native-webview`) @@ -4326,10 +4188,10 @@ DEPENDENCIES: - "RNCPicker (from `../../../node_modules/.pnpm/@react-native-picker+picker@2.11.4_react-native@0.85.2_@babel+core@7.29.0_@react-native_107e9dee6834e63baf100e0652402239/node_modules/@react-native-picker/picker`)" - "RNDateTimePicker (from `../../../node_modules/.pnpm/@react-native-community+datetimepicker@9.1.0_expo@packages+expo_react-native@0.85.2_@ba_f8e06d76087279dd44164a8c975e0850/node_modules/@react-native-community/datetimepicker`)" - "RNGestureHandler (from `../../../node_modules/.pnpm/react-native-gesture-handler@2.31.1_react-native@0.85.2_@babel+core@7.29.0_@react-nativ_f78985ff31676485766600bfef3239a5/node_modules/react-native-gesture-handler`)" - - "RNReanimated (from `../../../node_modules/.pnpm/react-native-reanimated@4.3.0_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_eda565d3f67be15d7dda9b0be7008390/node_modules/react-native-reanimated`)" + - "RNReanimated (from `../../../node_modules/.pnpm/react-native-reanimated@4.3.0_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_52e70d4540923088e7b9d94790e121e6/node_modules/react-native-reanimated`)" - "RNScreens (from `../../../node_modules/.pnpm/react-native-screens@4.25.0-beta.1_react-native@0.85.2_@babel+core@7.29.0_@react-native_44f021255a9c2abec1791ca078467a98/node_modules/react-native-screens`)" - "RNSVG (from `../../../node_modules/.pnpm/react-native-svg@15.15.4_react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-pres_ad5ed717b7cc12448deb4bef3fad356b/node_modules/react-native-svg`)" - - "RNWorklets (from `../../../node_modules/.pnpm/react-native-worklets@0.8.1_patch_hash=3f49a21b44ba558989a3366eeff9c92ee331e18b736dbe89_873264ea98792c8e9864fbfb4aec03b2/node_modules/react-native-worklets`)" + - "RNWorklets (from `../../../node_modules/.pnpm/react-native-worklets@0.8.3_patch_hash=3f49a21b44ba558989a3366eeff9c92ee331e18b736dbe89_21e1f0e21015cedcdf2e8fd371b2c176/node_modules/react-native-worklets`)" - SocketRocket (~> 0.7.1) - "stripe-react-native (from `../../../node_modules/.pnpm/@stripe+stripe-react-native@0.64.0_expo@packages+expo_react-native-webview@13.16.1_reac_c392cbeafcd5ae0cefe62df85a7de97d/node_modules/@stripe/stripe-react-native`)" - UMAppLoader (from `../../../packages/unimodules-app-loader/ios`) @@ -4395,12 +4257,6 @@ EXTERNAL SOURCES: :path: "../../../packages/expo-manifests/ios" Expo: :path: "../../../packages/expo" - ExpoAgeRange: - :path: "../../../packages/expo-age-range/ios" - ExpoAppleAuthentication: - :path: "../../../packages/expo-apple-authentication/ios" - ExpoAppMetrics: - :path: "../../../packages/expo-app-metrics/ios" ExpoAsset: :path: "../../../packages/expo-asset/ios" ExpoAudio: @@ -4459,8 +4315,6 @@ EXTERNAL SOURCES: :path: "../../../packages/expo-linear-gradient/ios" ExpoLinking: :path: "../../../packages/expo-linking/ios" - ExpoLivePhoto: - :path: "../../../packages/expo-live-photo/ios" ExpoLocalAuthentication: :path: "../../../packages/expo-local-authentication/ios" ExpoLocalization: @@ -4473,8 +4327,6 @@ EXTERNAL SOURCES: :path: "../../../packages/expo-mail-composer/ios" ExpoMediaLibrary: :path: "../../../packages/expo-media-library/ios" - ExpoMeshGradient: - :path: "../../../packages/expo-mesh-gradient/ios" ExpoModulesCore: :path: "../../../packages/expo-modules-core" ExpoModulesJSI: @@ -4489,8 +4341,6 @@ EXTERNAL SOURCES: :path: "../../../packages/expo-network/ios" ExpoNotifications: :path: "../../../packages/expo-notifications/ios" - ExpoObserve: - :path: "../../../packages/expo-observe/ios" ExpoPrint: :path: "../../../packages/expo-print/ios" ExpoRouter: @@ -4621,7 +4471,7 @@ EXTERNAL SOURCES: React-microtasksnativemodule: :path: "../../../react-native-lab/react-native/packages/react-native/ReactCommon/react/nativemodule/microtasks" react-native-keyboard-controller: - :path: "../../../node_modules/.pnpm/react-native-keyboard-controller@1.21.6_react-native-reanimated@4.3.0_patch_hash=1e34e4_4a7542518132451a7b077bd8ae3655f6/node_modules/react-native-keyboard-controller" + :path: "../../../node_modules/.pnpm/react-native-keyboard-controller@1.21.6_react-native-reanimated@4.3.0_patch_hash=1e34e4_12f8a138b6657e483fa62a9a1cf41ec7/node_modules/react-native-keyboard-controller" react-native-maps: :path: "../../../node_modules/.pnpm/react-native-maps@1.27.2_react-native-web@0.21.2_encoding@0.1.13_react-dom@19.2.3_react_57a2ea0a29596ebe4de368af95700197/node_modules/react-native-maps" react-native-netinfo: @@ -4633,7 +4483,7 @@ EXTERNAL SOURCES: react-native-segmented-control: :path: "../../../node_modules/.pnpm/@react-native-segmented-control+segmented-control@2.5.7_react-native@0.85.2_@babel+core_5b5b94a5f22cb45e3ee4d4b6c33ef9a5/node_modules/@react-native-segmented-control/segmented-control" react-native-skia: - :path: "../../../node_modules/.pnpm/@shopify+react-native-skia@2.6.2_react-native-reanimated@4.3.0_patch_hash=1e34e42385416_ac99610af16b480307d9da018beb05cf/node_modules/@shopify/react-native-skia" + :path: "../../../node_modules/.pnpm/@shopify+react-native-skia@2.6.2_react-native-reanimated@4.3.0_patch_hash=1e34e42385416_722c5d969a52a2fc0b328b39d6b1f5cd/node_modules/@shopify/react-native-skia" react-native-slider: :path: "../../../node_modules/.pnpm/@react-native-community+slider@5.2.0/node_modules/@react-native-community/slider" react-native-view-shot: @@ -4717,13 +4567,13 @@ EXTERNAL SOURCES: RNGestureHandler: :path: "../../../node_modules/.pnpm/react-native-gesture-handler@2.31.1_react-native@0.85.2_@babel+core@7.29.0_@react-nativ_f78985ff31676485766600bfef3239a5/node_modules/react-native-gesture-handler" RNReanimated: - :path: "../../../node_modules/.pnpm/react-native-reanimated@4.3.0_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_eda565d3f67be15d7dda9b0be7008390/node_modules/react-native-reanimated" + :path: "../../../node_modules/.pnpm/react-native-reanimated@4.3.0_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_52e70d4540923088e7b9d94790e121e6/node_modules/react-native-reanimated" RNScreens: :path: "../../../node_modules/.pnpm/react-native-screens@4.25.0-beta.1_react-native@0.85.2_@babel+core@7.29.0_@react-native_44f021255a9c2abec1791ca078467a98/node_modules/react-native-screens" RNSVG: :path: "../../../node_modules/.pnpm/react-native-svg@15.15.4_react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-pres_ad5ed717b7cc12448deb4bef3fad356b/node_modules/react-native-svg" RNWorklets: - :path: "../../../node_modules/.pnpm/react-native-worklets@0.8.1_patch_hash=3f49a21b44ba558989a3366eeff9c92ee331e18b736dbe89_873264ea98792c8e9864fbfb4aec03b2/node_modules/react-native-worklets" + :path: "../../../node_modules/.pnpm/react-native-worklets@0.8.3_patch_hash=3f49a21b44ba558989a3366eeff9c92ee331e18b736dbe89_21e1f0e21015cedcdf2e8fd371b2c176/node_modules/react-native-worklets" stripe-react-native: :path: "../../../node_modules/.pnpm/@stripe+stripe-react-native@0.64.0_expo@packages+expo_react-native-webview@13.16.1_reac_c392cbeafcd5ae0cefe62df85a7de97d/node_modules/@stripe/stripe-react-native" UMAppLoader: @@ -4735,82 +4585,76 @@ SPEC CHECKSUMS: boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 CocoaLumberjack: 2f44e60eb91c176d471fdba43b9e3eae6a721947 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb - EASClient: cb7854d65c09c520cc7d165f266c1d3bb901ceb7 - EXApplication: 44b0cde41562abc9650bcf7bd04c25c68878288d - EXConstants: ed3e09607493bb717a7932f0e6786846169692a2 - EXJSONUtils: 475f1af3d20fbd99268694df81d096817092aa89 - EXManifests: ad24b3a497444eee9e07cc8590b09974ba369050 - Expo: be6381e9c1390a5be199a157939b52ef0a461dc0 - ExpoAgeRange: 87dd980cb26e47b1108e24c39bcfb88a9ab1030e - ExpoAppleAuthentication: c8096cd35e4e4f88aec34fcbfcd9deae7cea04d3 - ExpoAppMetrics: f534609a5bbd43849f843c6cca0a3c37d68a75f9 - ExpoAsset: 595cc0587b67afaaedddca79d4c1cf506400cb27 - ExpoAudio: 40c883c60ed3bb17ecb3744a00732fb47029535b - ExpoBackgroundFetch: ee315c8d1a54a3f358fc0cedb68e808e95935c57 - ExpoBackgroundTask: 6f9f42ff3f0fd3907f625314b2822692af790d81 - ExpoBattery: 978934da47fa3414103aea2b61aeaa459658e06d - ExpoBlob: 8aadbb43ad4e2cdabc9a10fd26344d7911bb9805 - ExpoBlur: d3a8f3dbdfadac5f4f7ebe201deb245678257b72 - ExpoBrightness: d1d486e406bcc66acbd5d0101bf7785d5f35fd88 - ExpoCalendar: d21041bc88e41a4d187196157568fd1310b59fc7 - ExpoCamera: e95e370de0bf60152a6ccfd23e5d9492b947b701 - ExpoCameraBarcodeScanning: 0fd8335acfaef17a1690461ae6f0c2b817948668 - ExpoCellular: 7d53af5a8e82d326a5c7bc79443166eca4515fc5 - ExpoClipboard: 0acdce934cb6a71b507da1117399645265e51ed5 - ExpoContacts: 9b79a617546de1855e2267550e1f7a026afd2e9c - ExpoCrypto: 51dabf8af02467094127eb920e140c318d300080 - ExpoDevice: 7de9dc29fa2b2ae3e178bc4d6bc31b137c4c094b - ExpoDocumentPicker: ddcb3787230898ea845001f692e20fd193c63b08 - ExpoDomWebView: f21393aa4accbb6b8512fbec1ae741c454894bec - ExpoFileSystem: ad5826003c4064d55ab867193a8a79d19e85bce3 - ExpoFont: 387d22422f85258b053db3bdac0883974c304a96 - ExpoGL: e1188d1245549eaa7a448db6c078245f600469ae - ExpoGlassEffect: 4b0f07bf7997cb6bef8c702074e9a6ddc7e67bb0 - ExpoHaptics: 5aebc423ee7b7a7703472fc60986ca319b8826f0 - ExpoImage: d9446e7c2d365c063df7c8acd9c88b76a7b48ee4 - ExpoImageManipulator: 32880b92320d41f02a32bc22d111f518d6a68859 - ExpoImagePicker: 36604ce32a8566b619b87ef59bea2e136e0c0cc3 - ExpoKeepAwake: 72475c0e8644ad4dae17742bde04d5a0fe4ad4f9 - ExpoLinearGradient: 76405dc81ad27c300347829ed90ba26e7597e846 - ExpoLinking: 8505f5b8fa023e82b9d3ac7be1f1241f35b415dd - ExpoLivePhoto: cebdeea82761402e1bb2e0b61bd1622d889c729e - ExpoLocalAuthentication: efe64e98f2686d8bd0bd04300ba5ed360b3d0100 - ExpoLocalization: 19a0300c9fe626c884ce65cbbc421f9980bd5636 - ExpoLocation: 957da1f900af30208ee9245590dbd50c9d267709 - ExpoLogBox: 4a892fbcf6e343ffc1a6b714dcdc04a754d7e42f - ExpoMailComposer: edd4f46a26ea55ff0e3a83ef0192e79f647911c8 - ExpoMediaLibrary: 2fbddcb06042f43076cf5e495e8237ec2ab95726 - ExpoMeshGradient: 93cf09380e6d86cd7a525da26dfddab2620a8421 - ExpoModulesCore: d1fc51bb17e5202cb90bab6502631597572f8cfc - ExpoModulesJSI: 16f789b94db843249981e5f550e050cc321fe554 - ExpoModulesTestCore: 62ce59e8c8162b449e65467e0421240256ba6732 - ExpoModulesWorklets: 3fc573fcc96eb8c457091dde007055ef35d58d70 - ExpoModulesWorkletsAdapter: 8e561ffec777e8eacf2a2bad53a0edf04cfffa1a - ExpoNetwork: 15d026c5c28251e0810849c8c01ebc9bc73ad007 - ExpoNotifications: 58a5bf9c5a0a2ee7d1800f9ed26ff17ff3748fde - ExpoObserve: d764d07ad6d364d3df9f45605ae00aeb187b4afa - ExpoPrint: 884afdcfe9adea0d36f121353652d0cfa7963deb - ExpoRouter: 617b413f30eb9fa39b210e4261814b13afd0418b - ExpoScreenCapture: fe37f0547515f17434b002dcda5e1725fc61fe6f - ExpoScreenOrientation: ac6c5d6deee6ffda315c10f1596f213fc38009fd - ExpoSecureStore: 2cfd2091ba612c4b53a3ab53bab7cd29f4df7448 - ExpoSensors: 8b9f828af53d424c50a4c8b660e593360445ed86 - ExpoSharing: 0499c917472da9b1ececcdbbec270e8bdbe2a34a - ExpoSMS: 528c01f4f24b20238863db064b34622dec82969a - ExpoSpeech: e38a87df68cbb92fa22afe33aea17ada05031970 - ExpoSQLite: bb89f888d972448c0594042c6654c41957b006a8 - ExpoStoreReview: 4f855490cec2241cfe28773c60271582d67417bc - ExpoSymbols: 257ea8cbc29c3d9cc2b3c66396dfeea8ac741230 - ExpoSystemUI: 45304f7673a470749a0fc099b09ba0a23d1a89c2 - ExpoTaskManager: a06f59b8f5777b647a1707b3d21f5e9717cd157d - ExpoTrackingTransparency: a980b930c8e2affc688dd93940dc5b88f55c875b - ExpoUI: e6e61b9aa1424349659c6cb1165adee716a89b69 - ExpoVideo: eca730ba53ec45c2a188aa9dbfe11f7f809d66a1 - ExpoVideoThumbnails: 2340f0b7f599c9ce6ba49a885f783de919cf4dd3 - ExpoWebBrowser: b65b3921741b51c5513e2a369f59c37076987d9b - EXStructuredHeaders: e25ac67c966d3795153dfdb40bfd3b999df18929 - EXUpdates: 33cea909186babc6befefeed3596a82b6c1d63de - EXUpdatesInterface: 5ab8c3e8018ef533a132b9327af5b2a1926dd299 + EASClient: 92d4859ba99ccb9e6b15e4a6f6bf729eac5e14ce + EXApplication: cbda7a9c73358e57878912da014aa733a8959bd0 + EXConstants: 4e71d2c1c070cc53b391f042695163dc93edc4a8 + EXJSONUtils: dba2755f4e24009eaf87a876b2d615ea06c16e42 + EXManifests: 1fc5a116789c3b52db2efcbd326b578a77993c98 + Expo: 784c5d283e1b7c1acdc0e645d3bdfc4268e59fd1 + ExpoAsset: a60415645c0df44311c3f91de12641f53b022786 + ExpoAudio: e9f6100cbd0c61d991ae5cb699b22b6c3b4db041 + ExpoBackgroundFetch: a78cee242f4318d064ed9d60a97c997528d16f74 + ExpoBackgroundTask: b87922a5bc1da38177482cb41d3c33aeee8e3e42 + ExpoBattery: b587a5f4f7b9b01fa9993256dd77ea0218733c98 + ExpoBlob: f780a0d034b8ba5e3bcc89c799ef9dad43dd9abf + ExpoBlur: e392a6e09db71eef1e500e878112e1119c1ff1d0 + ExpoBrightness: a5ded2872740afd1f2d4efd1208f14145c1f080d + ExpoCalendar: f710095d998314e748490db6fbde2d1a42fa5317 + ExpoCamera: 4947e7537ee2709669d51db62756cf8cfecca168 + ExpoCameraBarcodeScanning: 190a1fc2bf354ba6e8b446b2e9316fc1d245cc24 + ExpoCellular: dfbbccd9416880c2ffbf24178e6e385217505036 + ExpoClipboard: 4b208fe6266ed723a2e0770c500b910422d62b44 + ExpoContacts: 03bb5421c591a7537e77751645d336e4cf320c62 + ExpoCrypto: b4d4244224451c7089d2bbb7fbb919b0d7b0daa8 + ExpoDevice: 2faba018a9d10a57ab14111046033a4aaf8f933f + ExpoDocumentPicker: 4d58ccd9eeaa4273ef4ef0c031cbb6bf619fdd77 + ExpoDomWebView: 38ea526cf9993f36620310f937f69fb78f98cb7d + ExpoFileSystem: 19f5072aece92ea4b9ed60d370ed98807eeb5ccb + ExpoFont: c7fae734ec2d4bcf7e530f3686ef07cfe2169ca9 + ExpoGL: 230a3122c5856848d7ef3daa5c9fc7dd3025ce09 + ExpoGlassEffect: 75c147e3b0afb079bbc21df5829a7fe1f5d4afa6 + ExpoHaptics: 942f1080ca288140e3112d5a6f2bc342a85ae2ec + ExpoImage: 0cd5791d33b7484e6b7ba8f9da9c7879ac4f0687 + ExpoImageManipulator: aa4e2d3c2a153a04b6a6998a713d107dd0e9e6b1 + ExpoImagePicker: 26a98921352081043c69b176690a43ac2932b6b9 + ExpoKeepAwake: 974139fa581c8dd09a09ba69b3537c1fa782a456 + ExpoLinearGradient: 9ecd05fed3d86b96c18ab3e8881e4932aae584c6 + ExpoLinking: 4e2e8c58e148dd22a6cfda744796abf36bae8787 + ExpoLocalAuthentication: cc6baa33a0508a1b274421856aab72621220f7bf + ExpoLocalization: 76bd3d376fe14bc7ef1a5ff7ea6e395852ce6bcf + ExpoLocation: f936cb52117047963687a6a3aefc2fea85514219 + ExpoLogBox: 80577cba1af7afcb0d1b379c3fe7efc0eca3dd9e + ExpoMailComposer: 98116d32d61d06cc821663b819cd2cfed9698465 + ExpoMediaLibrary: b3a987d115a5e06fb1763efc25b8ddf528a8357e + ExpoModulesCore: c5b827eec0a4ad847d7f87eeaa422a61657e0700 + ExpoModulesJSI: ea32f68254fb0bb09198bc0b40489d4a9df4c708 + ExpoModulesTestCore: 5660ab6b5928747366d4946580622a578865696a + ExpoModulesWorklets: 8bcb73d4467bf0363e0eb1f8a040fe1e37c18f79 + ExpoModulesWorkletsAdapter: fb7bb06e9b617561f10fa02a20e31206cc00d138 + ExpoNetwork: 23eca2e819b9bed3f74ba866401cb8bc481d90c7 + ExpoNotifications: 98b903ae77c702da2feb1d065d7fc62d40dc720c + ExpoPrint: 11940265e67847e7f98231a6d654f3c8df41b7c1 + ExpoRouter: 5e58c4956401d8e524872d255a7c5abfb12e34d1 + ExpoScreenCapture: 49513bd6d872808a5f79a26004fe7cb234d08bd5 + ExpoScreenOrientation: a4a0adf657a8f77fe2d8428a3ff6a2500131dc2b + ExpoSecureStore: f21bc12bb09ce0d94b999d1af57571213c33fa2f + ExpoSensors: 6872fd0ef1d22e3840d4853c3acbb02257f3531e + ExpoSharing: 8dd7e038afd1f3bb2db4cbc587c3cbbeecb9003c + ExpoSMS: 2e0e9d532fc5614c8887992f2b5a8d9585e0c54b + ExpoSpeech: 87867957dcb93c9c626bf2a22483b3110420c015 + ExpoSQLite: b68f2516baa84ddb95c0edadf70cb606294a5ea6 + ExpoStoreReview: 7c8ca2d4f3896e10493043a0f7b3239a617283a5 + ExpoSymbols: e1cbee73f3896caa5dc4b3468e35361ea79daca4 + ExpoSystemUI: 2710ef705216001a82e54b3b95c9a5156055b1ef + ExpoTaskManager: 303bf0ec470e95b4d7fcf0016a925c77f2f2df52 + ExpoTrackingTransparency: 66ffd9145e18c752319efe3c4731078300de06dc + ExpoUI: 87f3d30466d100bc429ff157face07a6b4ac5e42 + ExpoVideo: b90f337707445c6e8ba140769246b907ec7799b1 + ExpoVideoThumbnails: 3ff80af3300cb8792dfce15a0c2d045c0e873ba2 + ExpoWebBrowser: fa2798e4edc38e14908a0a06f1af8cc0a3827369 + EXStructuredHeaders: 9e89bcdd636ae2ecb59995cfba3230f5d7547c08 + EXUpdates: 0c9d654a29294b08414c46b78a6a3cc5829c3f21 + EXUpdatesInterface: 46d1e06a0f07db4594489fbcfb8500dff93c400a fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6 FBLazyVector: 4cd65993d9ef677523093deeb7d8710f39fb9ed7 FirebaseAnalytics: acfa848bf81e1a4dbf60ef1f0eddd7328fe6673e @@ -4822,7 +4666,7 @@ SPEC CHECKSUMS: FirebaseRemoteConfigInterop: 85bdce8babed7814816496bb6f082bc05b0a45e1 FirebaseSessions: f5c6bfeb66a7202deaf33352017bb6365e395820 fmt: 530618a01105dae0fa3a2f27c81ae11fa8f67eac - glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 + glog: e56ede4028c4b7418e6b1195a36b1656bb35e225 GoogleAppMeasurement: 8a82b93a6400c8e6551c0bcd66a9177f2e067aed GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 @@ -4838,7 +4682,7 @@ SPEC CHECKSUMS: PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851 Quick: 83e25bf349dd84f894b024f48033274512d6129b - RCT-Folly: 121436bcc4611f6bde5c09bf35f0a7a82cef1969 + RCT-Folly: 36c4f904fb6cd0219dcb76b94e9502d2a72fab0b RCTDeprecation: 5c945c659e2d68c1428f4a732c83198a4ad6a659 RCTRequired: c98eb09689f6a2a2c75f6fd419fa94fe71a672c9 RCTSwiftUI: 88767b796e06cd4af8dca2f7a3f97fccf1d723e0 @@ -4926,7 +4770,7 @@ SPEC CHECKSUMS: RNReanimated: 7a13e1d8ccabef6780dce63cfd66999a63233497 RNScreens: 16bd039e76f91145275890a1e1cf848b98c1da7a RNSVG: c9d7c940ad9655eba72c5b9ca7b017c95bb58083 - RNWorklets: 67e8351cb9accf602a4c7fe62b3d2cd1967aa61e + RNWorklets: c2db7fdd38222fb256e77cbd4fee7c32b351744c SDWebImage: e9fc87c1aab89a8ab1bbd74eba378c6f53be8abf SDWebImageAVIFCoder: afe194a084e851f70228e4be35ef651df0fc5c57 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c @@ -4943,7 +4787,7 @@ SPEC CHECKSUMS: StripePaymentsUI: e942824c2a21c67f41b3bf6c09e87ebe882dd5c5 StripeUICore: 9ee3c730f282fd34605f7ba00f2b77d80729d882 SwiftUIIntrospect: fee9aa07293ee280373a591e1824e8ddc869ba5d - UMAppLoader: 825f43fdb8b853ede700ebaf8e9beb84ebe49cab + UMAppLoader: 114b4c89b0083f3e103be55fe0ff0950475f267b Yoga: 6eb5d794e5d7a35a2750bb469e2e5320d41492f5 ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5 diff --git a/apps/expo-go/package.json b/apps/expo-go/package.json index a769a9ddad0917..dd160d0b5f60ff 100644 --- a/apps/expo-go/package.json +++ b/apps/expo-go/package.json @@ -7,7 +7,7 @@ "author": "Expo", "license": "MIT", "dependencies": { - "@expo/ui": "workspace:*", + "@expo/ui": "56.0.0", "@expo/vector-icons": "^15.0.2", "@react-native-async-storage/async-storage": "2.2.0", "@react-native-community/datetimepicker": "^9.1.0", @@ -18,62 +18,62 @@ "@react-native-segmented-control/segmented-control": "2.5.7", "@shopify/react-native-skia": "2.6.2", "@stripe/stripe-react-native": "0.64.0", - "expo": "workspace:*", - "expo-application": "workspace:*", - "expo-asset": "workspace:*", - "expo-audio": "workspace:*", - "expo-background-fetch": "workspace:*", - "expo-background-task": "workspace:*", - "expo-battery": "workspace:*", - "expo-blob": "workspace:*", - "expo-blur": "workspace:*", - "expo-brightness": "workspace:*", - "expo-calendar": "workspace:*", - "expo-camera": "workspace:*", - "expo-cellular": "workspace:*", - "expo-clipboard": "workspace:*", - "expo-constants": "workspace:*", - "expo-contacts": "workspace:*", - "expo-crypto": "workspace:*", - "expo-dev-menu": "workspace:*", - "expo-device": "workspace:*", - "expo-document-picker": "workspace:*", - "expo-font": "workspace:*", - "expo-gl": "workspace:*", - "expo-haptics": "workspace:*", - "expo-image-loader": "workspace:*", - "expo-image-manipulator": "workspace:*", - "expo-image-picker": "workspace:*", - "expo-intent-launcher": "workspace:*", - "expo-linear-gradient": "workspace:*", - "expo-linking": "workspace:*", - "expo-local-authentication": "workspace:*", - "expo-localization": "workspace:*", - "expo-location": "workspace:*", - "expo-mail-composer": "workspace:*", - "expo-media-library": "workspace:*", - "expo-navigation-bar": "workspace:*", - "expo-network": "workspace:*", - "expo-notifications": "workspace:*", - "expo-print": "workspace:*", - "expo-router": "workspace:*", - "expo-screen-capture": "workspace:*", - "expo-screen-orientation": "workspace:*", - "expo-secure-store": "workspace:*", - "expo-sensors": "workspace:*", - "expo-sharing": "workspace:*", - "expo-sms": "workspace:*", - "expo-speech": "workspace:*", - "expo-splash-screen": "workspace:*", - "expo-sqlite": "workspace:*", - "expo-store-review": "workspace:*", - "expo-system-ui": "workspace:*", - "expo-task-manager": "workspace:*", - "expo-tracking-transparency": "workspace:*", - "expo-updates": "workspace:*", - "expo-video": "workspace:*", - "expo-video-thumbnails": "workspace:*", - "expo-web-browser": "workspace:*", + "expo": "56.0.0-preview.0", + "expo-application": "56.0.0", + "expo-asset": "56.0.0", + "expo-audio": "56.0.0", + "expo-background-fetch": "56.0.0", + "expo-background-task": "56.0.0", + "expo-battery": "56.0.0", + "expo-blob": "56.0.0", + "expo-blur": "56.0.0", + "expo-brightness": "56.0.0", + "expo-calendar": "56.0.0", + "expo-camera": "56.0.0", + "expo-cellular": "56.0.0", + "expo-clipboard": "56.0.0", + "expo-constants": "56.0.0", + "expo-contacts": "56.0.0", + "expo-crypto": "56.0.0", + "expo-dev-menu": "56.0.0", + "expo-device": "56.0.0", + "expo-document-picker": "56.0.0", + "expo-font": "56.0.0", + "expo-gl": "56.0.0", + "expo-haptics": "56.0.0", + "expo-image-loader": "56.0.0", + "expo-image-manipulator": "56.0.0", + "expo-image-picker": "56.0.0", + "expo-intent-launcher": "56.0.0", + "expo-linear-gradient": "56.0.0", + "expo-linking": "56.0.0", + "expo-local-authentication": "56.0.0", + "expo-localization": "56.0.0", + "expo-location": "56.0.0", + "expo-mail-composer": "56.0.0", + "expo-media-library": "56.0.0", + "expo-navigation-bar": "56.0.0", + "expo-network": "56.0.0", + "expo-notifications": "56.0.0", + "expo-print": "56.0.0", + "expo-router": "56.0.0", + "expo-screen-capture": "56.0.0", + "expo-screen-orientation": "56.0.0", + "expo-secure-store": "56.0.0", + "expo-sensors": "56.0.0", + "expo-sharing": "56.0.0", + "expo-sms": "56.0.0", + "expo-speech": "56.0.0", + "expo-splash-screen": "56.0.0", + "expo-sqlite": "56.0.0", + "expo-store-review": "56.0.0", + "expo-system-ui": "56.0.0", + "expo-task-manager": "56.0.0", + "expo-tracking-transparency": "56.0.0", + "expo-updates": "56.0.0", + "expo-video": "56.0.0", + "expo-video-thumbnails": "56.0.0", + "expo-web-browser": "56.0.0", "lottie-react-native": "^7.3.4", "react": "19.2.3", "react-native": "0.85.2", @@ -87,7 +87,7 @@ "react-native-screens": "4.25.0-beta.1", "react-native-view-shot": "4.0.3", "react-native-webview": "13.16.1", - "react-native-worklets": "0.8.1" + "react-native-worklets": "0.8.3" }, "devDependencies": { "@types/react": "~19.2.0" diff --git a/apps/jest-expo-mock-generator/package.json b/apps/jest-expo-mock-generator/package.json index 42360bd32fccbd..5ffe92fca22686 100644 --- a/apps/jest-expo-mock-generator/package.json +++ b/apps/jest-expo-mock-generator/package.json @@ -6,8 +6,8 @@ "main": "index.js", "dependencies": { "@expo/mux": "^1.0.7", - "expo": "workspace:*", - "expo-clipboard": "workspace:*", + "expo": "56.0.0-preview.0", + "expo-clipboard": "56.0.0", "react": "19.2.3", "react-native": "0.85.2" } diff --git a/apps/minimal-tester/package.json b/apps/minimal-tester/package.json index bd09464a17ac04..afecf622d3f8ac 100644 --- a/apps/minimal-tester/package.json +++ b/apps/minimal-tester/package.json @@ -10,19 +10,19 @@ "eject": "expo eject" }, "dependencies": { - "expo": "workspace:*", - "expo-apple-authentication": "workspace:*", - "expo-blur": "workspace:*", - "expo-brownfield": "workspace:*", - "expo-build-properties": "workspace:*", - "expo-camera": "workspace:*", - "expo-dev-client": "workspace:*", - "expo-image": "workspace:*", - "expo-linear-gradient": "workspace:*", - "expo-splash-screen": "workspace:*", - "expo-status-bar": "workspace:*", - "expo-updates": "workspace:*", - "expo-video": "workspace:*", + "expo": "56.0.0-preview.0", + "expo-apple-authentication": "56.0.0", + "expo-blur": "56.0.0", + "expo-brownfield": "56.0.0", + "expo-build-properties": "56.0.0", + "expo-camera": "56.0.0", + "expo-dev-client": "56.0.0", + "expo-image": "56.0.0", + "expo-linear-gradient": "56.0.0", + "expo-splash-screen": "56.0.0", + "expo-status-bar": "56.0.0", + "expo-updates": "56.0.0", + "expo-video": "56.0.0", "react": "19.2.3", "react-dom": "19.2.3", "react-native": "0.85.2", diff --git a/apps/native-component-list/package.json b/apps/native-component-list/package.json index d06e9ea1f8cd57..3054069d540a1a 100644 --- a/apps/native-component-list/package.json +++ b/apps/native-component-list/package.json @@ -33,12 +33,12 @@ }, "dependencies": { "@expo-google-fonts/inter": "^0.2.3", - "@expo/app-integrity": "workspace:*", - "@expo/html-elements": "workspace:*", + "@expo/app-integrity": "56.0.0", + "@expo/html-elements": "56.0.0", "@expo/material-symbols": "~0.1.1", "@expo/react-native-action-sheet": "^4.1.1", "@expo/styleguide-base": "^1.0.1", - "@expo/ui": "workspace:*", + "@expo/ui": "56.0.0", "@expo/vector-icons": "^15.0.2", "@lottiefiles/dotlottie-react": "^0.10.1", "@lottiefiles/react-lottie-player": "^3.5.4", @@ -60,79 +60,79 @@ "canvaskit-wasm": "^0.40.0", "date-format": "^2.0.0", "deep-object-diff": "^1.1.9", - "expo": "workspace:*", + "expo": "56.0.0-preview.0", "expo-2d-context": "^0.0.4", - "expo-age-range": "workspace:*", - "expo-apple-authentication": "workspace:*", - "expo-application": "workspace:*", - "expo-asset": "workspace:*", - "expo-audio": "workspace:*", - "expo-auth-session": "workspace:*", - "expo-background-fetch": "workspace:*", - "expo-background-task": "workspace:*", - "expo-battery": "workspace:*", - "expo-blob": "workspace:*", - "expo-blur": "workspace:*", - "expo-brightness": "workspace:*", - "expo-calendar": "workspace:*", - "expo-camera": "workspace:*", - "expo-cellular": "workspace:*", - "expo-checkbox": "workspace:*", - "expo-clipboard": "workspace:*", - "expo-constants": "workspace:*", - "expo-contacts": "workspace:*", - "expo-crypto": "workspace:*", - "expo-device": "workspace:*", - "expo-document-picker": "workspace:*", - "expo-file-system": "workspace:*", - "expo-font": "workspace:*", - "expo-gl": "workspace:*", - "expo-glass-effect": "workspace:*", - "expo-haptics": "workspace:*", - "expo-image": "workspace:*", - "expo-image-loader": "workspace:*", - "expo-image-manipulator": "workspace:*", - "expo-image-picker": "workspace:*", - "expo-intent-launcher": "workspace:*", - "expo-keep-awake": "workspace:*", - "expo-linear-gradient": "workspace:*", - "expo-linking": "workspace:*", - "expo-live-photo": "workspace:*", - "expo-local-authentication": "workspace:*", - "expo-localization": "workspace:*", - "expo-location": "workspace:*", - "expo-mail-composer": "workspace:*", - "expo-maps": "workspace:*", - "expo-media-library": "workspace:*", - "expo-mesh-gradient": "workspace:*", - "expo-modules-test-core": "workspace:*", - "expo-navigation-bar": "workspace:*", - "expo-network": "workspace:*", - "expo-notifications": "workspace:*", - "expo-print": "workspace:*", - "expo-processing": "workspace:*", + "expo-age-range": "56.0.0", + "expo-apple-authentication": "56.0.0", + "expo-application": "56.0.0", + "expo-asset": "56.0.0", + "expo-audio": "56.0.0", + "expo-auth-session": "56.0.0", + "expo-background-fetch": "56.0.0", + "expo-background-task": "56.0.0", + "expo-battery": "56.0.0", + "expo-blob": "56.0.0", + "expo-blur": "56.0.0", + "expo-brightness": "56.0.0", + "expo-calendar": "56.0.0", + "expo-camera": "56.0.0", + "expo-cellular": "56.0.0", + "expo-checkbox": "56.0.0", + "expo-clipboard": "56.0.0", + "expo-constants": "56.0.0", + "expo-contacts": "56.0.0", + "expo-crypto": "56.0.0", + "expo-device": "56.0.0", + "expo-document-picker": "56.0.0", + "expo-file-system": "56.0.0", + "expo-font": "56.0.0", + "expo-gl": "56.0.0", + "expo-glass-effect": "56.0.0", + "expo-haptics": "56.0.0", + "expo-image": "56.0.0", + "expo-image-loader": "56.0.0", + "expo-image-manipulator": "56.0.0", + "expo-image-picker": "56.0.0", + "expo-intent-launcher": "56.0.0", + "expo-keep-awake": "56.0.0", + "expo-linear-gradient": "56.0.0", + "expo-linking": "56.0.0", + "expo-live-photo": "56.0.0", + "expo-local-authentication": "56.0.0", + "expo-localization": "56.0.0", + "expo-location": "56.0.0", + "expo-mail-composer": "56.0.0", + "expo-maps": "56.0.0", + "expo-media-library": "56.0.0", + "expo-mesh-gradient": "56.0.0", + "expo-modules-test-core": "56.0.0", + "expo-navigation-bar": "56.0.0", + "expo-network": "56.0.0", + "expo-notifications": "56.0.0", + "expo-print": "56.0.0", + "expo-processing": "56.0.0", "expo-progress": "^0.0.2", - "expo-screen-capture": "workspace:*", - "expo-screen-orientation": "workspace:*", - "expo-secure-store": "workspace:*", - "expo-sensors": "workspace:*", - "expo-sharing": "workspace:*", - "expo-sms": "workspace:*", - "expo-speech": "workspace:*", - "expo-splash-screen": "workspace:*", - "expo-sqlite": "workspace:*", - "expo-standard-web-crypto": "workspace:*", - "expo-status-bar": "workspace:*", - "expo-store-review": "workspace:*", - "expo-symbols": "workspace:*", - "expo-system-ui": "workspace:*", - "expo-task-manager": "workspace:*", + "expo-screen-capture": "56.0.0", + "expo-screen-orientation": "56.0.0", + "expo-secure-store": "56.0.0", + "expo-sensors": "56.0.0", + "expo-sharing": "56.0.0", + "expo-sms": "56.0.0", + "expo-speech": "56.0.0", + "expo-splash-screen": "56.0.0", + "expo-sqlite": "56.0.0", + "expo-standard-web-crypto": "56.0.0", + "expo-status-bar": "56.0.0", + "expo-store-review": "56.0.0", + "expo-symbols": "56.0.0", + "expo-system-ui": "56.0.0", + "expo-task-manager": "56.0.0", "expo-three": "7.0.1", - "expo-tracking-transparency": "workspace:*", - "expo-updates": "workspace:*", - "expo-video": "workspace:*", - "expo-video-thumbnails": "workspace:*", - "expo-web-browser": "workspace:*", + "expo-tracking-transparency": "56.0.0", + "expo-updates": "56.0.0", + "expo-video": "56.0.0", + "expo-video-thumbnails": "56.0.0", + "expo-web-browser": "56.0.0", "fbemitter": "^2.1.1", "fuse.js": "^6.4.6", "gl-mat4": "^1.1.4", @@ -159,7 +159,7 @@ "react-native-view-shot": "4.0.3", "react-native-web": "~0.21.0", "react-native-webview": "13.16.1", - "react-native-worklets": "0.8.1", + "react-native-worklets": "0.8.3", "regl": "^1.3.0", "start": "^5.1.0", "test-suite": "workspace:*", @@ -175,7 +175,7 @@ "@types/react": "~19.2.0", "@types/three": "^0.137.0", "babel-jest": "^29.2.1", - "expo-module-scripts": "workspace:*", + "expo-module-scripts": "56.0.0", "jest": "^29.2.1", "react-test-renderer": "19.2.3" } diff --git a/apps/native-component-list/src/screens/ModulesCore/Benchmarks/benchmarks.ts b/apps/native-component-list/src/screens/ModulesCore/Benchmarks/benchmarks.ts index 6ead7670ec0f64..48e94783fa31f0 100644 --- a/apps/native-component-list/src/screens/ModulesCore/Benchmarks/benchmarks.ts +++ b/apps/native-component-list/src/screens/ModulesCore/Benchmarks/benchmarks.ts @@ -81,6 +81,17 @@ export const GROUPS: Group[] = [ }); }, }, + { + id: 'expo-optimized', + label: 'ExpoModule (optimized)', + available: ExpoModule?.nothingOptimized != null, + async run(iterations) { + ExpoModule.nothingOptimized(); + return timeSync(iterations, () => { + ExpoModule.nothingOptimized(); + }); + }, + }, { id: 'turbo', label: 'TurboModule', @@ -247,6 +258,17 @@ export const GROUPS: Group[] = [ }); }, }, + { + id: 'expo-optimized', + label: 'ExpoModule (optimized)', + available: ExpoModule?.addStringsOptimized != null, + async run(iterations) { + ExpoModule.addStringsOptimized('hello ', 'world'); + return timeSync(iterations, () => { + ExpoModule.addStringsOptimized('hello ', 'world'); + }); + }, + }, { id: 'turbo', label: 'TurboModule', diff --git a/apps/native-tests/package.json b/apps/native-tests/package.json index 3f53db6c51e652..1de219a90e5e4f 100644 --- a/apps/native-tests/package.json +++ b/apps/native-tests/package.json @@ -9,17 +9,17 @@ "web": "expo start --web" }, "dependencies": { - "expo": "workspace:*", - "expo-background-task": "workspace:*", - "expo-clipboard": "workspace:*", - "expo-dev-client": "workspace:*", - "expo-router": "workspace:*", - "expo-image": "workspace:*", - "expo-media-library": "workspace:*", - "expo-notifications": "workspace:*", + "expo": "56.0.0-preview.0", + "expo-background-task": "56.0.0", + "expo-clipboard": "56.0.0", + "expo-dev-client": "56.0.0", + "expo-router": "56.0.0", + "expo-image": "56.0.0", + "expo-media-library": "56.0.0", + "expo-notifications": "56.0.0", "expo-observe": "workspace:*", - "expo-splash-screen": "workspace:*", - "expo-updates": "workspace:*", + "expo-splash-screen": "56.0.0", + "expo-updates": "56.0.0", "react": "19.2.3", "react-dom": "19.2.3", "react-native": "0.85.2" diff --git a/apps/notification-tester/package.json b/apps/notification-tester/package.json index 493c00731c5365..7258a22863f8a2 100644 --- a/apps/notification-tester/package.json +++ b/apps/notification-tester/package.json @@ -21,22 +21,22 @@ "dependencies": { "@react-navigation/bottom-tabs": "^7.15.5", "@react-navigation/native": "^7.1.33", - "@expo/ui": "workspace:*", - "expo": "workspace:*", - "expo-font": "workspace:*", - "expo-linking": "workspace:*", - "expo-localization": "workspace:*", - "expo-router": "workspace:*", - "expo-device": "workspace:*", - "expo-constants": "workspace:*", - "expo-dev-client": "workspace:*", - "expo-sqlite": "workspace:*", - "expo-status-bar": "workspace:*", - "expo-notifications": "workspace:*", - "expo-updates": "workspace:*", + "@expo/ui": "56.0.0", + "expo": "56.0.0-preview.0", + "expo-font": "56.0.0", + "expo-linking": "56.0.0", + "expo-localization": "56.0.0", + "expo-router": "56.0.0", + "expo-device": "56.0.0", + "expo-constants": "56.0.0", + "expo-dev-client": "56.0.0", + "expo-sqlite": "56.0.0", + "expo-status-bar": "56.0.0", + "expo-notifications": "56.0.0", + "expo-updates": "56.0.0", "native-component-list": "workspace:*", "test-suite": "workspace:*", - "expo-task-manager": "workspace:*", + "expo-task-manager": "56.0.0", "react-native-gesture-handler": "~2.30.0", "react": "19.2.3", "react-native": "0.85.2", diff --git a/apps/observe-tester/package.json b/apps/observe-tester/package.json index fcb16547aa2b0a..2fab93b74d6278 100644 --- a/apps/observe-tester/package.json +++ b/apps/observe-tester/package.json @@ -14,31 +14,31 @@ "lint": "expo lint" }, "dependencies": { - "@expo/html-elements": "^0.13.7", + "@expo/html-elements": "^56.0.0", "@expo/styleguide-base": "^1.0.1", "@expo/vector-icons": "^15.0.2", "@react-navigation/bottom-tabs": "^7.15.5", "@react-navigation/native": "^7.1.33", "@react-navigation/native-stack": "^7.14.5", - "expo": "workspace:*", + "expo": "56.0.0-preview.0", "expo-app-metrics": "workspace:*", - "expo-build-properties": "workspace:*", - "expo-clipboard": "workspace:*", - "expo-constants": "workspace:*", - "expo-dev-client": "workspace:*", - "expo-eas-client": "workspace:*", - "expo-font": "workspace:*", - "expo-haptics": "workspace:*", - "expo-image": "workspace:*", - "expo-linking": "workspace:*", + "expo-build-properties": "56.0.0", + "expo-clipboard": "56.0.0", + "expo-constants": "56.0.0", + "expo-dev-client": "56.0.0", + "expo-eas-client": "56.0.0", + "expo-font": "56.0.0", + "expo-haptics": "56.0.0", + "expo-image": "56.0.0", + "expo-linking": "56.0.0", "expo-observe": "workspace:*", - "expo-router": "workspace:*", - "expo-splash-screen": "workspace:*", - "expo-status-bar": "workspace:*", - "expo-symbols": "workspace:*", - "expo-system-ui": "workspace:*", - "expo-updates": "workspace:*", - "expo-web-browser": "workspace:*", + "expo-router": "56.0.0", + "expo-splash-screen": "56.0.0", + "expo-status-bar": "56.0.0", + "expo-symbols": "56.0.0", + "expo-system-ui": "56.0.0", + "expo-updates": "56.0.0", + "expo-web-browser": "56.0.0", "react": "19.2.3", "react-dom": "19.2.3", "react-native": "0.85.2", @@ -46,7 +46,7 @@ "react-native-screens": "4.25.0-beta.1" }, "devDependencies": { - "@expo/config": "workspace:*", + "@expo/config": "56.0.0", "@types/react": "~19.2.10", "tsx": "^4.20.6" } diff --git a/apps/router-e2e/__e2e__/native-navigation/app/experimental-stack/_layout.tsx b/apps/router-e2e/__e2e__/native-navigation/app/experimental-stack/_layout.tsx new file mode 100644 index 00000000000000..244e7e2d703931 --- /dev/null +++ b/apps/router-e2e/__e2e__/native-navigation/app/experimental-stack/_layout.tsx @@ -0,0 +1,14 @@ +import { ExperimentalStack as Stack } from 'expo-router'; + +export default function Layout() { + return ( + + + + + + ); +} diff --git a/apps/router-e2e/__e2e__/native-navigation/app/experimental-stack/details.tsx b/apps/router-e2e/__e2e__/native-navigation/app/experimental-stack/details.tsx new file mode 100644 index 00000000000000..d9691bb59d221a --- /dev/null +++ b/apps/router-e2e/__e2e__/native-navigation/app/experimental-stack/details.tsx @@ -0,0 +1,25 @@ +import { Link, usePathname, useRouter } from 'expo-router'; +import { Text, View, Pressable } from 'react-native'; + +export default function Details() { + const pathname = usePathname(); + const router = useRouter(); + + return ( + + Details + {pathname} + router.back()} + style={{ backgroundColor: 'rgb(11, 103, 175)', padding: 16, borderRadius: 8 }}> + Go Back + + + + Open Modal + + + + ); +} diff --git a/apps/router-e2e/__e2e__/native-navigation/app/experimental-stack/index.tsx b/apps/router-e2e/__e2e__/native-navigation/app/experimental-stack/index.tsx new file mode 100644 index 00000000000000..cd2cf47deab2b6 --- /dev/null +++ b/apps/router-e2e/__e2e__/native-navigation/app/experimental-stack/index.tsx @@ -0,0 +1,23 @@ +import { Link, usePathname } from 'expo-router'; +import { Text, View, Pressable } from 'react-native'; + +export default function Home() { + const pathname = usePathname(); + + return ( + + Home + {pathname} + + + Go to Details + + + + + Open Modal + + + + ); +} diff --git a/apps/router-e2e/__e2e__/native-navigation/app/experimental-stack/modal.tsx b/apps/router-e2e/__e2e__/native-navigation/app/experimental-stack/modal.tsx new file mode 100644 index 00000000000000..ecf2a0f32049d3 --- /dev/null +++ b/apps/router-e2e/__e2e__/native-navigation/app/experimental-stack/modal.tsx @@ -0,0 +1,20 @@ +import { usePathname, useRouter } from 'expo-router'; +import { Text, View, Pressable } from 'react-native'; + +export default function Modal() { + const pathname = usePathname(); + const router = useRouter(); + + return ( + + Modal + {pathname} + router.back()} + style={{ backgroundColor: 'rgb(11, 103, 175)', padding: 16, borderRadius: 8 }}> + Dismiss + + + ); +} diff --git a/apps/router-e2e/__e2e__/native-navigation/app/index.tsx b/apps/router-e2e/__e2e__/native-navigation/app/index.tsx index 4c0dd10acc138c..9464f7606d53fb 100644 --- a/apps/router-e2e/__e2e__/native-navigation/app/index.tsx +++ b/apps/router-e2e/__e2e__/native-navigation/app/index.tsx @@ -32,6 +32,7 @@ const HomeIndex = () => { + ); }; diff --git a/apps/router-e2e/__e2e__/server-loader/app/index.tsx b/apps/router-e2e/__e2e__/server-loader/app/index.tsx index 7abb312f8d73f7..22ab0626499aef 100644 --- a/apps/router-e2e/__e2e__/server-loader/app/index.tsx +++ b/apps/router-e2e/__e2e__/server-loader/app/index.tsx @@ -42,6 +42,8 @@ const IndexScreen = () => { Go to static Post 2 Go to Error Go to Grouped Index + Go to Static Helper + Go to Server Helper ); diff --git a/apps/router-e2e/__e2e__/server-loader/app/server-helper.tsx b/apps/router-e2e/__e2e__/server-loader/app/server-helper.tsx new file mode 100644 index 00000000000000..2e914b6ab3a3de --- /dev/null +++ b/apps/router-e2e/__e2e__/server-loader/app/server-helper.tsx @@ -0,0 +1,44 @@ +import { useLoaderData } from 'expo-router'; +import { createServerLoader } from 'expo-router/server'; +import { Suspense } from 'react'; + +import { Loading } from '../components/Loading'; +import { SiteLinks, SiteLink } from '../components/SiteLink'; +import { Table, TableRow } from '../components/Table'; + +const _serverLoader = createServerLoader(async (request, _params) => { + return { + source: 'server-helper', + url: request.url, + method: request.method, + }; +}); + +// Only export the loader in SSR mode. In SSG mode, createServerLoader throws because there is no +// request object at build time. +export const loader = process.env.E2E_ROUTER_SERVER_RENDERING ? _serverLoader : undefined; + +export default function ServerHelperRoute() { + return ( + }> + + + ); +} + +const ServerHelperScreen = () => { + const data = useLoaderData(); + + return ( + <> + + +
+ + + Go to Index + Go to Static Helper + + + ); +}; diff --git a/apps/router-e2e/__e2e__/server-loader/app/static-helper.tsx b/apps/router-e2e/__e2e__/server-loader/app/static-helper.tsx new file mode 100644 index 00000000000000..48270a5787e0b9 --- /dev/null +++ b/apps/router-e2e/__e2e__/server-loader/app/static-helper.tsx @@ -0,0 +1,36 @@ +import { useLoaderData } from 'expo-router'; +import { createStaticLoader } from 'expo-router/server'; +import { Suspense } from 'react'; + +import { Loading } from '../components/Loading'; +import { SiteLinks, SiteLink } from '../components/SiteLink'; +import { Table, TableRow } from '../components/Table'; + +export const loader = createStaticLoader(async (_params) => { + return { source: 'static-helper' }; +}); + +export default function StaticHelperRoute() { + return ( + }> + + + ); +} + +const StaticHelperScreen = () => { + const data = useLoaderData(); + + return ( + <> + + +
+ + + Go to Index + Go to Server Helper + + + ); +}; diff --git a/apps/router-e2e/__e2e__/server-loader/workerd/config.capnp b/apps/router-e2e/__e2e__/server-loader/workerd/config.capnp index e32f5a50490099..1853ef48e6a27c 100644 --- a/apps/router-e2e/__e2e__/server-loader/workerd/config.capnp +++ b/apps/router-e2e/__e2e__/server-loader/workerd/config.capnp @@ -22,9 +22,12 @@ const server :Workerd.Worker = ( (name = "_expo/loaders/request.js", commonJsModule = embed "_expo/loaders/request.js"), (name = "_expo/loaders/response.js", commonJsModule = embed "_expo/loaders/response.js"), (name = "_expo/loaders/(group)/index.js", commonJsModule = embed "_expo/loaders/(group)/index.js"), + (name = "_expo/loaders/static-helper.js", commonJsModule = embed "_expo/loaders/static-helper.js"), + (name = "_expo/loaders/server-helper.js", commonJsModule = embed "_expo/loaders/server-helper.js"), ], bindings = [ (name = "TEST_SECRET_RUNTIME_KEY", text = "runtime-secret-value"), + (name = "E2E_ROUTER_SERVER_RENDERING", text = "true"), ], compatibilityDate = "2025-05-05", compatibilityFlags = [ diff --git a/apps/router-e2e/package.json b/apps/router-e2e/package.json index bed4399cae86ea..ec9e03536e70ee 100644 --- a/apps/router-e2e/package.json +++ b/apps/router-e2e/package.json @@ -60,18 +60,18 @@ "test:e2e": "./maestro/test.sh" }, "dependencies": { - "@expo/dom-webview": "workspace:*", + "@expo/dom-webview": "56.0.0", "@expo/vector-icons": "^15.0.2", - "expo": "workspace:*", - "expo-asset": "workspace:*", - "expo-build-properties": "workspace:*", - "expo-haptics": "workspace:*", - "expo-linking": "workspace:*", - "expo-router": "workspace:*", - "expo-speech": "workspace:*", - "expo-splash-screen": "workspace:*", - "expo-sqlite": "workspace:*", - "expo-symbols": "workspace:*", + "expo": "56.0.0-preview.0", + "expo-asset": "56.0.0", + "expo-build-properties": "56.0.0", + "expo-haptics": "56.0.0", + "expo-linking": "56.0.0", + "expo-router": "56.0.0", + "expo-speech": "56.0.0", + "expo-splash-screen": "56.0.0", + "expo-sqlite": "56.0.0", + "expo-symbols": "56.0.0", "jose": "^5", "react": "19.2.3", "react-dom": "19.2.3", diff --git a/apps/sandbox/package.json b/apps/sandbox/package.json index ec364e0e507c8e..7d41ec2a0534ea 100644 --- a/apps/sandbox/package.json +++ b/apps/sandbox/package.json @@ -10,18 +10,18 @@ "dependencies": { "@react-navigation/bottom-tabs": "^7.15.5", "@react-navigation/native": "^7.1.33", - "expo": "workspace:*", - "expo-dev-client": "workspace:*", - "expo-linking": "workspace:*", - "expo-router": "workspace:*", - "expo-splash-screen": "workspace:*", + "expo": "56.0.0-preview.0", + "expo-dev-client": "56.0.0", + "expo-linking": "56.0.0", + "expo-router": "56.0.0", + "expo-splash-screen": "56.0.0", "react": "19.2.3", "react-native": "0.85.2", "react-native-safe-area-context": "5.6.2", "react-native-screens": "~4.23.0" }, "devDependencies": { - "babel-preset-expo": "workspace:*" + "babel-preset-expo": "56.0.0" }, "private": true } diff --git a/apps/test-suite/package.json b/apps/test-suite/package.json index 6ac1fb263d3472..51deadb7be32e7 100644 --- a/apps/test-suite/package.json +++ b/apps/test-suite/package.json @@ -11,61 +11,61 @@ "author": "", "license": "MIT", "dependencies": { - "@expo/html-elements": "workspace:*", + "@expo/html-elements": "56.0.0", "@expo/styleguide-base": "^1.0.1", "@expo/vector-icons": "^15.0.2", "@react-native-async-storage/async-storage": "^2.2.0", "@react-navigation/native": "^7.1.33", "@react-navigation/stack": "^7.8.5", "async-retry": "^1.1.4", - "expo": "workspace:*", - "expo-application": "workspace:*", - "expo-asset": "workspace:*", - "expo-audio": "workspace:*", - "expo-auth-session": "workspace:*", - "expo-background-fetch": "workspace:*", - "expo-battery": "workspace:*", - "expo-blob": "workspace:*", - "expo-blur": "workspace:*", - "expo-brightness": "workspace:*", - "expo-calendar": "workspace:*", - "expo-camera": "workspace:*", - "expo-cellular": "workspace:*", - "expo-checkbox": "workspace:*", - "expo-clipboard": "workspace:*", - "expo-constants": "workspace:*", - "expo-contacts": "workspace:*", - "expo-crypto": "workspace:*", - "expo-device": "workspace:*", - "expo-eas-client": "workspace:*", - "expo-file-system": "workspace:*", - "expo-font": "workspace:*", - "expo-gl": "workspace:*", - "expo-glass-effect": "workspace:*", - "expo-haptics": "workspace:*", - "expo-image": "workspace:*", - "expo-image-manipulator": "workspace:*", - "expo-image-picker": "workspace:*", - "expo-keep-awake": "workspace:*", - "expo-linear-gradient": "workspace:*", - "expo-linking": "workspace:*", - "expo-localization": "workspace:*", - "expo-location": "workspace:*", - "expo-media-library": "workspace:*", - "expo-modules-core": "workspace:*", - "expo-navigation-bar": "workspace:*", - "expo-network": "workspace:*", - "expo-notifications": "workspace:*", - "expo-screen-orientation": "workspace:*", - "expo-secure-store": "workspace:*", - "expo-sms": "workspace:*", - "expo-speech": "workspace:*", - "expo-sqlite": "workspace:*", - "expo-store-review": "workspace:*", - "expo-system-ui": "workspace:*", - "expo-task-manager": "workspace:*", - "expo-video": "workspace:*", - "expo-web-browser": "workspace:*", + "expo": "56.0.0-preview.0", + "expo-application": "56.0.0", + "expo-asset": "56.0.0", + "expo-audio": "56.0.0", + "expo-auth-session": "56.0.0", + "expo-background-fetch": "56.0.0", + "expo-battery": "56.0.0", + "expo-blob": "56.0.0", + "expo-blur": "56.0.0", + "expo-brightness": "56.0.0", + "expo-calendar": "56.0.0", + "expo-camera": "56.0.0", + "expo-cellular": "56.0.0", + "expo-checkbox": "56.0.0", + "expo-clipboard": "56.0.0", + "expo-constants": "56.0.0", + "expo-contacts": "56.0.0", + "expo-crypto": "56.0.0", + "expo-device": "56.0.0", + "expo-eas-client": "56.0.0", + "expo-file-system": "56.0.0", + "expo-font": "56.0.0", + "expo-gl": "56.0.0", + "expo-glass-effect": "56.0.0", + "expo-haptics": "56.0.0", + "expo-image": "56.0.0", + "expo-image-manipulator": "56.0.0", + "expo-image-picker": "56.0.0", + "expo-keep-awake": "56.0.0", + "expo-linear-gradient": "56.0.0", + "expo-linking": "56.0.0", + "expo-localization": "56.0.0", + "expo-location": "56.0.0", + "expo-media-library": "56.0.0", + "expo-modules-core": "56.0.0", + "expo-navigation-bar": "56.0.0", + "expo-network": "56.0.0", + "expo-notifications": "56.0.0", + "expo-screen-orientation": "56.0.0", + "expo-secure-store": "56.0.0", + "expo-sms": "56.0.0", + "expo-speech": "56.0.0", + "expo-sqlite": "56.0.0", + "expo-store-review": "56.0.0", + "expo-system-ui": "56.0.0", + "expo-task-manager": "56.0.0", + "expo-video": "56.0.0", + "expo-web-browser": "56.0.0", "firebase": "^9.3.0", "getenv": "^2.0.0", "i18n-js": "^3.1.0", diff --git a/apps/test-suite/tests/JSPrivateMethods.js b/apps/test-suite/tests/JSPrivateMethods.js index e3712e06da4e2a..58d71b899de9bf 100644 --- a/apps/test-suite/tests/JSPrivateMethods.js +++ b/apps/test-suite/tests/JSPrivateMethods.js @@ -100,43 +100,46 @@ export function test({ describe, it, xit, expect }) { expect(foo.test()).toBe('barbaz'); }); - // From: private-method/read-only/exec.js - it('private method is read-only (assignment throws)', () => { - expect(() => { - class Foo { - #bar() {} - constructor() { - this.#bar = 1; + // NOTE(@kitten): These don't compile in production, so need to be left out + if (__DEV__) { + // From: private-method/read-only/exec.js + it('private method is read-only (assignment throws)', () => { + expect(() => { + class Foo { + #bar() {} + constructor() { + this.#bar = 1; + } } - } - new Foo(); - }).toThrow(); - }); - - // From: private-method/reassignment/exec.js - it('private method compound assignment throws', () => { - expect(() => { - class Foo { - #bar() {} - constructor() { - this.#bar += 1; + new Foo(); + }).toThrow(); + }); + + // From: private-method/reassignment/exec.js + it('private method compound assignment throws', () => { + expect(() => { + class Foo { + #bar() {} + constructor() { + this.#bar += 1; + } } - } - new Foo(); - }).toThrow(); - }); - - it('private method increment throws', () => { - expect(() => { - class Foo { - #bar() {} - constructor() { - this.#bar++; + new Foo(); + }).toThrow(); + }); + + it('private method increment throws', () => { + expect(() => { + class Foo { + #bar() {} + constructor() { + this.#bar++; + } } - } - new Foo(); - }).toThrow(); - }); + new Foo(); + }).toThrow(); + }); + } // From: private-method/class-binding/exec.js it('class name binding preserved inside private method', () => { @@ -461,32 +464,34 @@ export function test({ describe, it, xit, expect }) { expect(foo.test()).toBe(42); }); - it('getter-only private accessor throws on set', () => { - expect(() => { - class Foo { - get #bar() { - return 1; - } - constructor() { - this.#bar = 2; + if (__DEV__) { + it('getter-only private accessor throws on set', () => { + expect(() => { + class Foo { + get #bar() { + return 1; + } + constructor() { + this.#bar = 2; + } } - } - new Foo(); - }).toThrow(); - }); - - // In loose mode, setter-only accessor does not throw on get — returns undefined instead. - xit('setter-only private accessor throws on get', () => { - expect(() => { - class Foo { - set #bar(v) {} - constructor() { - const x = this.#bar; + new Foo(); + }).toThrow(); + }); + + // In loose mode, setter-only accessor does not throw on get — returns undefined instead. + xit('setter-only private accessor throws on get', () => { + expect(() => { + class Foo { + set #bar(v) {} + constructor() { + const x = this.#bar; + } } - } - new Foo(); - }).toThrow(); - }); + new Foo(); + }).toThrow(); + }); + } it('private accessor available during field initialization', () => { class Foo { @@ -600,28 +605,30 @@ export function test({ describe, it, xit, expect }) { }); // From: private-static-method/read-only/exec.js - it('static private method is read-only', () => { - expect(() => { - class Foo { - static #bar() {} - static { - Foo.#bar = 1; + if (__DEV__) { + it('static private method is read-only', () => { + expect(() => { + class Foo { + static #bar() {} + static { + Foo.#bar = 1; + } } - } - }).toThrow(); - }); - - // From: private-static-method/reassignment/exec.js - it('static private method compound assignment throws', () => { - expect(() => { - class Foo { - static #bar() {} - static { - Foo.#bar += 1; + }).toThrow(); + }); + + // From: private-static-method/reassignment/exec.js + it('static private method compound assignment throws', () => { + expect(() => { + class Foo { + static #bar() {} + static { + Foo.#bar += 1; + } } - } - }).toThrow(); - }); + }).toThrow(); + }); + } // From: private-static-method/super/exec.js it('super access from static private method', () => { @@ -746,18 +753,20 @@ export function test({ describe, it, xit, expect }) { expect(Foo.test()).toBe(42); }); - it('static getter-only throws on set', () => { - expect(() => { - class Foo { - static get #bar() { - return 1; - } - static { - Foo.#bar = 2; + if (__DEV__) { + it('static getter-only throws on set', () => { + expect(() => { + class Foo { + static get #bar() { + return 1; + } + static { + Foo.#bar = 2; + } } - } - }).toThrow(); - }); + }).toThrow(); + }); + } }); describe('inheritance and isolation', () => { diff --git a/docs/components/plugins/APISection.tsx b/docs/components/plugins/APISection.tsx index 8544e82a9a0386..c9d7f973716ee9 100644 --- a/docs/components/plugins/APISection.tsx +++ b/docs/components/plugins/APISection.tsx @@ -180,10 +180,19 @@ const renderAPI = ( ) => { try { let data: GeneratedData[] = []; - const isRouterPackage = (name?: string) => !!name && name.startsWith('expo-router'); - const shouldDeriveRouterComponents = Array.isArray(packageName) - ? packageName.some(isRouterPackage) - : isRouterPackage(packageName); + // `deriveComponentsFromProps` synthesizes a derived component entry + // for each static property typed as `React.FC` or similar. It + // powers compound-component APIs like `Stack.Screen` in `expo-router` + // and `FieldGroup.Section` in `expo-ui`. + // + // Scope the opt-in to those package families so unrelated docs aren't + // affected if their props happen to match the heuristic. Drop the gate + // when more packages adopt the pattern. + const isCompoundComponentsPackage = (name?: string) => + !!name && (name.startsWith('expo-router') || name.startsWith('expo-ui')); + const shouldDeriveCompoundComponents = Array.isArray(packageName) + ? packageName.some(isCompoundComponentsPackage) + : isCompoundComponentsPackage(packageName); if (Array.isArray(packageName)) { data = packageName @@ -305,7 +314,7 @@ const renderAPI = ( [TypeDocKind.Variable, TypeDocKind.Class, TypeDocKind.Function], entry => isComponent(entry) || isRouterUiComponentOverride(entry) ); - const componentsWithDerived = shouldDeriveRouterComponents + const componentsWithDerived = shouldDeriveCompoundComponents ? deriveComponentsFromProps(components) : components; const componentsPropNames = new Set( diff --git a/docs/components/plugins/api/APISectionCompoundNames.test.ts b/docs/components/plugins/api/APISectionCompoundNames.test.ts index 448013267b88fa..eca56845a19ca7 100644 --- a/docs/components/plugins/api/APISectionCompoundNames.test.ts +++ b/docs/components/plugins/api/APISectionCompoundNames.test.ts @@ -63,6 +63,26 @@ describe('buildCompoundNameByComponent', () => { Tab: 'Tabs.Tab', }); }); + + test('prefers depth-2 path over deeper alias for the same component', () => { + const stackTitle = makeComponent('StackTitle', 'StackTitleProps'); + const stackScreen = makeComponent('StackScreen', 'StackScreenProps', [ + makeProp('Title', makeComponentType('StackTitleProps')), + ]); + const stack = makeComponent('Stack', 'StackProps', [ + makeProp('Screen', makeComponentType('StackScreenProps')), + makeProp('Title', makeComponentType('StackTitleProps')), + ]); + + const result = Object.fromEntries( + buildCompoundNameByComponent([stack, stackScreen, stackTitle]) + ); + + expect(result).toEqual({ + StackScreen: 'Stack.Screen', + StackTitle: 'Stack.Title', + }); + }); }); describe('deriveComponentsFromProps', () => { diff --git a/docs/components/plugins/api/APISectionCompoundNames.ts b/docs/components/plugins/api/APISectionCompoundNames.ts index da55af959542cf..f50a2b10ded321 100644 --- a/docs/components/plugins/api/APISectionCompoundNames.ts +++ b/docs/components/plugins/api/APISectionCompoundNames.ts @@ -129,11 +129,22 @@ export const buildCompoundNameByComponent = (components: GeneratedData[]) => { const { componentNameByPropsType, propertiesByEntry, baseNameByEntry } = collectComponentMetadata(components); + const targetNames = new Set(); + components.forEach(entry => { + const properties = propertiesByEntry.get(entry) ?? []; + properties.forEach(property => { + const target = resolveComponentTargetFromProperty(property, componentNameByPropsType); + if (target) { + targetNames.add(target); + } + }); + }); + const directMap = new Map(); components.forEach(entry => { const parentName = baseNameByEntry.get(entry); - if (!parentName) { + if (!parentName || targetNames.has(parentName)) { return; } const properties = propertiesByEntry.get(entry) ?? []; @@ -145,6 +156,9 @@ export const buildCompoundNameByComponent = (components: GeneratedData[]) => { if (!target) { return; } + if (directMap.has(target)) { + return; + } directMap.set(target, `${parentName}.${property.name}`); }); }); @@ -169,6 +183,9 @@ export const buildCompoundNameByComponent = (components: GeneratedData[]) => { if (!target) { return; } + if (directMap.has(target)) { + return; + } compoundMap.set(target, `${parentAlias}.${property.name}`); }); }); diff --git a/docs/pages/debugging/devtools-plugins.mdx b/docs/pages/debugging/devtools-plugins.mdx index 799ae0c30f0c4c..17b20ed8262f3f 100644 --- a/docs/pages/debugging/devtools-plugins.mdx +++ b/docs/pages/debugging/devtools-plugins.mdx @@ -69,7 +69,7 @@ Expo provides some dev tools plugins for common debugging tasks. Follow the inst ### React Navigation -Inspired by [`@react-navigation/devtools`](https://github.com/react-navigation/react-navigation/tree/main/packages/devtools), the React Navigation dev tools plugin allows seeing the history of [React Navigation](https://reactnavigation.org/) actions and state. You can also rewind to previous points in your navigation history and send deep links to your app. Since Expo Router is built upon React Navigation, this plugin is fully compatible with [Expo Router](/router/introduction). +Inspired by [`@react-navigation/devtools`](https://github.com/react-navigation/react-navigation/tree/main/packages/devtools), the React Navigation dev tools plugin allows seeing the history of [React Navigation](https://reactnavigation.org/) actions and state. You can also rewind to previous points in your navigation history and send deep links to your app. This plugin is fully compatible with [Expo Router](/router/introduction). To use the plugin, start by installing the package: diff --git a/docs/pages/develop/app-navigation.mdx b/docs/pages/develop/app-navigation.mdx index 5eeee486c8263a..10bfd399e29bb5 100644 --- a/docs/pages/develop/app-navigation.mdx +++ b/docs/pages/develop/app-navigation.mdx @@ -29,7 +29,7 @@ The library offers platform-specific look-and-feel with smooth animations and ge ## Expo Router (recommended for Expo projects) -Expo Router is a file-based routing library for Expo and React Native projects and is a built on top of React Navigation. By following the **app** directory convention, it turns files into routes and is integrated with Expo for [Expo CLI](/more/expo-cli/) and bundling without additional setup. The library also adds features such as typed routes, dynamic routes, lazy bundling in development, static rendering for the web, and automatic deep linking. +Expo Router is a file-based routing library for Expo and React Native projects. By following the **app** directory convention, it turns files into routes and is integrated with Expo for [Expo CLI](/more/expo-cli/) and bundling without additional setup. The library also adds features such as typed routes, dynamic routes, lazy bundling in development, static rendering for the web, and automatic deep linking. New Expo projects created with `npx create-expo-app@latest --template default@sdk-55` include Expo Router by default so you can ship cross-platform navigation quickly while still being able to reach for React Navigation APIs when needed. diff --git a/docs/pages/eas/observe/configuration.mdx b/docs/pages/eas/observe/configuration.mdx index 56241ba130807a..93c45cf3d0f2b5 100644 --- a/docs/pages/eas/observe/configuration.mdx +++ b/docs/pages/eas/observe/configuration.mdx @@ -10,7 +10,7 @@ Configure Expo Observe at runtime to fit your app's build setup, environment, an Use the `configure()` method to control how Expo Observe behaves at runtime: -```js +```tsx import ExpoObserve from 'expo-observe'; ExpoObserve.configure({ @@ -19,10 +19,12 @@ ExpoObserve.configure({ }); ``` -| Option | Type | Default | Description | -| -------------------- | --------- | ---------------------- | ---------------------------------------------- | -| `environment` | `string` | `process.env.NODE_ENV` | The environment label for observability events | -| `dispatchingEnabled` | `boolean` | `true` | Whether to send collected events to the server | +| Option | Type | Default | Description | +| -------------------- | --------- | ---------------------- | -------------------------------------------------------------------------------------------------- | +| `environment` | `string` | `process.env.NODE_ENV` | The environment label for observability events | +| `dispatchingEnabled` | `boolean` | `true` | Whether to send collected events to the server | +| `dispatchInDebug` | `boolean` | `false` | Whether to dispatch metrics that were collected in a debug build. Has no effect on release builds. | +| `sampleRate` | `number` | `undefined` | Fraction of installations that dispatch metrics, in `[0, 1]`. See [Sampling](#sampling). | ## `dispatchEvents()` @@ -30,31 +32,48 @@ Events are automatically dispatched when the app moves to the background. On And To flush events manually (for example, during testing or to ensure events are sent before a specific point), call `dispatchEvents()`: -```js +```tsx import ExpoObserve from 'expo-observe'; await ExpoObserve.dispatchEvents(); ``` +## Sampling + +By default, every installation dispatches its metrics. For high-volume apps, you can sample a fraction of installations by setting `sampleRate` to a value between `0` and `1`: + +```tsx +import ExpoObserve from 'expo-observe'; + +// Dispatch metrics from ~25% of installations. +ExpoObserve.configure({ + sampleRate: 0.25, +}); +``` + +The sampling decision is **deterministic per installation**. Each installation is either permanently in-sample or out-of-sample for a given rate, so the choice is stable across app launches and you get a consistent slice of installations rather than a random subset of sessions. + +A few details worth knowing: + +- Values outside the `[0, 1]` range are clamped to the nearest edge. `0` always drops; `1` always dispatches. +- Out-of-sample devices drop pending metrics rather than accumulating them. Lowering the rate later does not retroactively send earlier sessions. +- Sampling depends on [`dispatchingEnabled`](#configure). If `dispatchingEnabled` is `false`, nothing is dispatched regardless of `sampleRate`. + ## Enable metrics in development -By default, metrics with the `development` environment are filtered out and not dispatched to the server. To collect development metrics (for example, to test your integration), set `enableInDebug` to `true` in your **app config**: +By default, metrics collected from debug builds are not dispatched. To dispatch them anyway (for example, while testing your Expo Observe integration), set `dispatchInDebug` to `true` when calling `configure()`: -```json app.json -{ - "expo": { - "extra": { - "eas": { - "observe": { - "enableInDebug": true - } - } - } - } -} +```tsx +import ExpoObserve from 'expo-observe'; + +ExpoObserve.configure({ + dispatchInDebug: true, +}); ``` -> **warning** Enable this only when testing your Expo Observe integration. Development performance differs significantly from production, so collecting development metrics may affect the results shown in your dashboard. +`dispatchInDebug` has no effect on release builds, which always dispatch (subject to [`dispatchingEnabled`](#configure) and [`sampleRate`](#sampling)). If `dispatchingEnabled` is `false` or this installation is out-of-sample, nothing dispatches regardless of `dispatchInDebug`. + +> **warning** Enable this only when testing your Expo Observe integration. Development/debug performance differs significantly from production, so collecting development/debug metrics may distort the results shown in your dashboard. ## Custom endpoint @@ -80,4 +99,4 @@ The endpoint URL is baked into the native layer of the app at build time, so cha All metrics are grouped by environment. The environment value is derived from `process.env.NODE_ENV` by default. To override it, use [`configure({ environment })`](#configure). -Metrics with the `development` environment are filtered out before dispatching unless [`enableInDebug` is set to `true`](#enable-metrics-in-development) in your app config. You can also disable all dispatching globally using `configure({ dispatchingEnabled: false })`. +Metrics collected from debug builds are dropped before dispatching unless [`dispatchInDebug` is set to `true`](#enable-metrics-in-development) via `configure()`. You can also disable all dispatching globally using `configure({ dispatchingEnabled: false })`. diff --git a/docs/pages/eas/observe/get-started.mdx b/docs/pages/eas/observe/get-started.mdx index 9286cfee4d7217..ee101ee10a7496 100644 --- a/docs/pages/eas/observe/get-started.mdx +++ b/docs/pages/eas/observe/get-started.mdx @@ -184,7 +184,7 @@ After installing `expo-observe` and adding the instrumentation, create a new bui -> **info** By default, metrics are not dispatched when `NODE_ENV=development`. To test your integration during development, see [Enable metrics in development](/eas/observe/configuration/#enable-metrics-in-development). +> **info** By default, metrics collected from debug builds are not dispatched. To test your integration in a debug build, see [Enable metrics in development](/eas/observe/configuration/#enable-metrics-in-development). diff --git a/docs/pages/eas/observe/introduction.mdx b/docs/pages/eas/observe/introduction.mdx index 485749bc1d4d5e..448301d195f0c1 100644 --- a/docs/pages/eas/observe/introduction.mdx +++ b/docs/pages/eas/observe/introduction.mdx @@ -82,7 +82,7 @@ Metrics collected while offline are stored locally on the device. They are autom -By default, metrics from the `development` environment are filtered out and not dispatched. You can enable development metrics for testing by setting `enableInDebug` to `true` in your [app config](/workflow/configuration/). See [Configuration](/eas/observe/configuration/#enable-metrics-in-development) for details. +By default, metrics collected from debug builds are not dispatched. You can dispatch them anyway for testing by setting `dispatchInDebug` to `true` via [`configure()`](/eas/observe/configuration/#configure). See [Configuration](/eas/observe/configuration/#enable-metrics-in-development) for details. diff --git a/docs/pages/eas/observe/reference/metrics.mdx b/docs/pages/eas/observe/reference/metrics.mdx index 645f82e83ed1f0..f854cd9bf9847f 100644 --- a/docs/pages/eas/observe/reference/metrics.mdx +++ b/docs/pages/eas/observe/reference/metrics.mdx @@ -119,7 +119,7 @@ All of these must be true: **Our recommendation:** under 3s including the cold launch time. -#### Extra params +#### Automatic event params Each TTI event includes extra params to help triage issues: @@ -133,6 +133,31 @@ Each TTI event includes extra params to help triage issues: - **High TTI + high total delay + many slow frames:** main thread contention. Offload work and simplify the initial render tree. - **High TTI + high delay + frozen frames:** something is blocking hard. Look for synchronous I/O, large JSON parsing, or blocking API calls. +#### Custom event params + +You can attach your own params to the TTI event by passing them to `markInteractive()`. This is useful for slicing TTI by app-specific dimensions such as user cohort, tenant, feature flag variant, or the type of content the screen loaded. + +```tsx +AppMetrics.markInteractive({ + params: { + tenant: 'acme', + cohort: 'beta', + cacheHit: true, + }, +}); +``` + +You can also override the route name attached to the event, which is otherwise populated from the initial route detected by [Expo Router](/router/introduction/). This useful when the screen's logical name differs from the router path, is a dynamic route, or when not using Expo Router: + +```tsx +AppMetrics.markInteractive({ + routeName: '/feed', + params: { cacheHit: true }, +}); +``` + +Param values can be strings, numbers, booleans, or other JSON-serializable values. + ## Data handling ### Offline collection @@ -145,8 +170,8 @@ Metric data is retained for a minimum of 60 days. ### Sampling -All sessions are tracked. There is no sampling applied to the data collection. +By default, all installations dispatch their metrics. To dispatch from a fraction of installations instead, set [`sampleRate`](/eas/observe/configuration/#sampling) when calling `configure()`. The decision is deterministic per installation, so an installation is consistently in-sample or out-of-sample across app launches. ### Environment -All metrics are grouped by environment. The environment value is derived from `process.env.NODE_ENV` by default, or can be overridden via [`configure({ environment })`](/eas/observe/configuration/#configure). Metrics with the `development` environment are filtered out before dispatching unless `enableInDebug` is set to `true` in your app config (for information, see [Enable metrics in development](/eas/observe/configuration/#enable-metrics-in-development)). You can also disable all dispatching globally using `configure({ dispatchingEnabled: false })`. +All metrics are grouped by environment. The environment value is derived from `process.env.NODE_ENV` by default, or can be overridden via [`configure({ environment })`](/eas/observe/configuration/#configure). Metrics collected from debug builds are dropped before dispatching unless `dispatchInDebug` is set to `true` via [`configure()`](/eas/observe/configuration/#configure) (for information, see [Enable metrics in development](/eas/observe/configuration/#enable-metrics-in-development)). You can also disable all dispatching globally using `configure({ dispatchingEnabled: false })`. diff --git a/docs/pages/eas/observe/reference/troubleshooting.mdx b/docs/pages/eas/observe/reference/troubleshooting.mdx index 2ef140d6387a29..78f89149e6ce8d 100644 --- a/docs/pages/eas/observe/reference/troubleshooting.mdx +++ b/docs/pages/eas/observe/reference/troubleshooting.mdx @@ -14,7 +14,7 @@ import { Step } from '~/ui/components/Step'; 1. Ensure you have created a **new build** after installing `expo-observe`. Metrics are only collected from builds that include the library. 2. Check that you are viewing the correct project in the EAS dashboard. -3. If testing in development, ensure `enableInDebug` is set to `true` in your app config. See [Enable metrics in development](/eas/observe/configuration/#enable-metrics-in-development). +3. If testing in a debug build, ensure `dispatchInDebug` is set to `true` via `configure()`. See [Enable metrics in development](/eas/observe/configuration/#enable-metrics-in-development). ### Time to first render not showing diff --git a/docs/pages/router/advanced/native-tabs.mdx b/docs/pages/router/advanced/native-tabs.mdx index 2ba2c186903e97..9bbef9df9af3e6 100644 --- a/docs/pages/router/advanced/native-tabs.mdx +++ b/docs/pages/router/advanced/native-tabs.mdx @@ -802,7 +802,7 @@ import { Stack } from 'expo-router'; export default function SearchIndex() { return ( <> - Search + Search {}} /> {/* Screen content */} diff --git a/docs/pages/router/advanced/stack-toolbar.mdx b/docs/pages/router/advanced/stack-toolbar.mdx index 85510f2680fad6..1e18d9972bee2b 100644 --- a/docs/pages/router/advanced/stack-toolbar.mdx +++ b/docs/pages/router/advanced/stack-toolbar.mdx @@ -363,7 +363,7 @@ export default function RootLayout() { -When using `headerLargeTitle: true` (or ``) alongside `Stack.Toolbar`, the large title may not collapse on scroll. This happens when the scrollable view is not the direct first child of the screen component. +When using `headerLargeTitle: true` (or ``) alongside `Stack.Toolbar`, the large title may not collapse on scroll. This happens when the scrollable view is not the direct first child of the screen component. To fix this, ensure `ScrollView` or `FlatList` is the first child rendered by your screen component. If you need a wrapper, set `collapsable={false}` on it: @@ -375,7 +375,7 @@ import { ScrollView, View, Text } from 'react-native'; export default function Home() { return ( - Home + Home Content here ); @@ -395,7 +395,7 @@ export default function Home() { /* @end */ - Home + Home Content here diff --git a/docs/pages/router/advanced/stack.mdx b/docs/pages/router/advanced/stack.mdx index 4c83a7cb1e8672..941dc8356db9fe 100644 --- a/docs/pages/router/advanced/stack.mdx +++ b/docs/pages/router/advanced/stack.mdx @@ -158,7 +158,7 @@ export default function Details() { return ( - {params.name} + {params.name} { @@ -261,9 +261,9 @@ export default function Home() { return ( <> - + - + + + ); +} +``` + +### Disabled + +```tsx DisabledButtonExample.tsx +import { Host, Button } from '@expo/ui'; + +export default function DisabledButtonExample() { + return ( + +