diff --git a/apps/bare-expo/ios/Podfile.lock b/apps/bare-expo/ios/Podfile.lock index fd62835926d845..98391df63594dd 100644 --- a/apps/bare-expo/ios/Podfile.lock +++ b/apps/bare-expo/ios/Podfile.lock @@ -29,7 +29,7 @@ PODS: - ExpoModulesTestCore - EXApplication (56.0.3): - ExpoModulesCore - - EXConstants (56.0.6): + - EXConstants (56.0.7): - ExpoModulesCore - EXJSONUtils (56.0.0) - EXJSONUtils/Tests (56.0.0) @@ -38,7 +38,7 @@ PODS: - EXManifests/Tests (56.0.2): - ExpoModulesCore - ExpoModulesTestCore - - Expo (56.0.0-preview.7): + - Expo (56.0.0-preview.9): - ExpoModulesCore - ExpoModulesJSI - hermes-engine @@ -64,15 +64,15 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-client (56.0.5): + - expo-dev-client (56.0.6): - EXManifests - expo-dev-launcher - expo-dev-menu - expo-dev-menu-interface - EXUpdatesInterface - - expo-dev-launcher (56.0.5): + - expo-dev-launcher (56.0.6): - EXManifests - - expo-dev-launcher/Main (= 56.0.5) + - expo-dev-launcher/Main (= 56.0.6) - expo-dev-menu - expo-dev-menu-interface - ExpoModulesCore @@ -101,7 +101,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-launcher/Main (56.0.5): + - expo-dev-launcher/Main (56.0.6): - EXManifests - expo-dev-launcher/Unsafe - expo-dev-menu @@ -132,7 +132,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-launcher/Tests (56.0.5): + - expo-dev-launcher/Tests (56.0.6): - EXManifests - expo-dev-menu - expo-dev-menu-interface @@ -167,7 +167,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-launcher/Unsafe (56.0.5): + - expo-dev-launcher/Unsafe (56.0.6): - EXManifests - expo-dev-menu - expo-dev-menu-interface @@ -197,8 +197,8 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-menu (56.0.5): - - expo-dev-menu/Main (= 56.0.5) + - expo-dev-menu (56.0.6): + - expo-dev-menu/Main (= 56.0.6) - hermes-engine - RCTRequired - RCTTypeSafety @@ -221,7 +221,7 @@ PODS: - ReactNativeDependencies - Yoga - expo-dev-menu-interface (56.0.1) - - expo-dev-menu/Main (56.0.5): + - expo-dev-menu/Main (56.0.6): - EXManifests - expo-dev-menu-interface - ExpoModulesCore @@ -247,7 +247,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-menu/Tests (56.0.5): + - expo-dev-menu/Tests (56.0.6): - ExpoModulesTestCore - hermes-engine - Nimble @@ -273,7 +273,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-menu/UITests (56.0.5): + - expo-dev-menu/UITests (56.0.6): - ExpoModulesTestCore - hermes-engine - RCTRequired @@ -299,7 +299,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - Expo/Tests (56.0.0-preview.7): + - Expo/Tests (56.0.0-preview.9): - ExpoModulesCore - ExpoModulesJSI - ExpoModulesTestCore @@ -332,7 +332,7 @@ PODS: - ExpoModulesCore - ExpoAppleAuthentication (56.0.3): - ExpoModulesCore - - ExpoAppMetrics (56.0.5): + - ExpoAppMetrics (56.0.6): - ExpoModulesCore - EXUpdatesInterface - hermes-engine @@ -356,7 +356,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoAppMetrics/Tests (56.0.5): + - ExpoAppMetrics/Tests (56.0.6): - ExpoModulesCore - EXUpdatesInterface - hermes-engine @@ -380,16 +380,16 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoAsset (56.0.6): + - ExpoAsset (56.0.7): - ExpoModulesCore - - ExpoAudio (56.0.3): + - ExpoAudio (56.0.4): - ExpoModulesCore - - ExpoBackgroundFetch (56.0.5): + - ExpoBackgroundFetch (56.0.6): - ExpoModulesCore - - ExpoBackgroundTask (56.0.5): + - ExpoBackgroundTask (56.0.6): - ExpoModulesCore - ExpoTaskManager - - ExpoBackgroundTask/Tests (56.0.5): + - ExpoBackgroundTask/Tests (56.0.6): - ExpoModulesCore - ExpoModulesTestCore - ExpoTaskManager @@ -401,7 +401,7 @@ PODS: - ExpoModulesCore - ExpoBrightness (56.0.3): - ExpoModulesCore - - ExpoBrownfield (56.0.5): + - ExpoBrownfield (56.0.6): - ExpoModulesCore - ExpoCalendar (56.0.4): - ExpoModulesCore @@ -455,12 +455,12 @@ PODS: - SDWebImageAVIFCoder (~> 0.11.0) - SDWebImageSVGCoder (~> 1.7.0) - SDWebImageWebPCoder (~> 0.14.6) - - ExpoImageManipulator (56.0.5): + - ExpoImageManipulator (56.0.6): - ExpoModulesCore - SDWebImageWebPCoder - - ExpoImagePicker (56.0.5): + - ExpoImagePicker (56.0.6): - ExpoModulesCore - - ExpoInsights (56.0.5): + - ExpoInsights (56.0.6): - EASClient - ExpoModulesCore - hermes-engine @@ -488,7 +488,7 @@ PODS: - ExpoModulesCore - ExpoLinearGradient (56.0.4): - ExpoModulesCore - - ExpoLinking (56.0.4): + - ExpoLinking (56.0.5): - ExpoModulesCore - ExpoLivePhoto (56.0.3): - ExpoModulesCore @@ -496,13 +496,13 @@ PODS: - ExpoModulesCore - ExpoLocalization (56.0.3): - ExpoModulesCore - - ExpoLocation (56.0.5): + - ExpoLocation (56.0.6): - ExpoModulesCore - - ExpoLogBox (56.0.6): + - ExpoLogBox (56.0.7): - React-Core - ExpoMailComposer (56.0.3): - ExpoModulesCore - - ExpoMaps (56.0.3): + - ExpoMaps (56.0.4): - ExpoModulesCore - ExpoMediaLibrary (56.0.3): - ExpoModulesCore @@ -513,7 +513,7 @@ PODS: - React-Core - ExpoMeshGradient (56.0.3): - ExpoModulesCore - - ExpoModulesCore (56.0.5): + - ExpoModulesCore (56.0.6): - ExpoModulesJSI - hermes-engine - RCTRequired @@ -537,7 +537,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoModulesCore/Tests (56.0.5): + - ExpoModulesCore/Tests (56.0.6): - ExpoModulesJSI - ExpoModulesTestCore - hermes-engine @@ -562,10 +562,10 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoModulesJSI (56.0.2): + - ExpoModulesJSI (56.0.3): - React-Core - ReactCommon - - ExpoModulesJSI/Tests (56.0.2): + - ExpoModulesJSI/Tests (56.0.3): - React-Core - ReactCommon - ExpoModulesTestCore (56.0.0): @@ -573,22 +573,22 @@ PODS: - Nimble (~> 13.0.0) - Quick (~> 7.3.0) - React-hermes - - ExpoModulesWorklets (56.0.5): + - ExpoModulesWorklets (56.0.6): - ExpoModulesCore - ExpoModulesJSI - - ExpoModulesWorkletsAdapter (56.0.5): + - ExpoModulesWorkletsAdapter (56.0.6): - ExpoModulesCore - ExpoModulesJSI - ExpoModulesWorklets - RNWorklets - ExpoNetwork (56.0.3): - ExpoModulesCore - - ExpoNotifications (56.0.5): + - ExpoNotifications (56.0.6): - ExpoModulesCore - - ExpoNotifications/Tests (56.0.5): + - ExpoNotifications/Tests (56.0.6): - ExpoModulesCore - ExpoModulesTestCore - - ExpoObserve (56.0.5): + - ExpoObserve (56.0.6): - EASClient - ExpoAppMetrics - ExpoModulesCore @@ -613,7 +613,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoObserve/Tests (56.0.5): + - ExpoObserve/Tests (56.0.6): - EASClient - ExpoAppMetrics - ExpoModulesCore @@ -669,7 +669,7 @@ PODS: - ExpoModulesCore - ExpoSensors (56.0.3): - ExpoModulesCore - - ExpoSharing (56.0.5): + - ExpoSharing (56.0.6): - ExpoModulesCore - ExpoSMS (56.0.3): - ExpoModulesCore @@ -685,16 +685,16 @@ PODS: - ExpoModulesCore - ExpoSystemUI (56.0.4): - ExpoModulesCore - - ExpoTaskManager (56.0.5): + - ExpoTaskManager (56.0.6): - ExpoModulesCore - UMAppLoader - - ExpoTaskManager/Tests (56.0.5): + - ExpoTaskManager/Tests (56.0.6): - ExpoModulesCore - ExpoModulesTestCore - UMAppLoader - ExpoTrackingTransparency (56.0.3): - ExpoModulesCore - - ExpoUI (56.0.4): + - ExpoUI (56.0.5): - ExpoModulesCore - ExpoModulesWorklets - React-RCTFabric @@ -709,7 +709,7 @@ PODS: - ExpoModulesCore - EXStructuredHeaders (56.0.0) - EXStructuredHeaders/Tests (56.0.0) - - EXUpdates (56.0.6): + - EXUpdates (56.0.7): - EASClient - EXManifests - ExpoModulesCore @@ -737,7 +737,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - EXUpdates/Tests (56.0.6): + - EXUpdates/Tests (56.0.7): - EASClient - EXManifests - ExpoModulesCore @@ -3073,7 +3073,7 @@ PODS: - ReactNativeDependencies - RNWorklets - Yoga - - RNScreens (4.25.0-beta.3): + - RNScreens (4.25.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -3095,9 +3095,9 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - - RNScreens/common (= 4.25.0-beta.3) + - RNScreens/common (= 4.25.0) - Yoga - - RNScreens/common (4.25.0-beta.3): + - RNScreens/common (4.25.0): - hermes-engine - RCTRequired - RCTTypeSafety @@ -3483,7 +3483,7 @@ DEPENDENCIES: - "RNDateTimePicker (from `../../../node_modules/.pnpm/@react-native-community+datetimepicker@8.6.0_expo@packages+expo_react-native@0.85.3_@ba_fe22ba3f6bc184022828182340650ec6/node_modules/@react-native-community/datetimepicker`)" - "RNGestureHandler (from `../../../node_modules/.pnpm/react-native-gesture-handler@2.30.0_react-native@0.85.3_@babel+core@7.29.0_@react-nativ_9a6358180c81a5519b6da847dcb246ed/node_modules/react-native-gesture-handler`)" - "RNReanimated (from `../../../node_modules/.pnpm/react-native-reanimated@4.3.1_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_1a5e3d09dfc1ab41347a1ceaceaf61bc/node_modules/react-native-reanimated`)" - - "RNScreens (from `../../../node_modules/.pnpm/react-native-screens@4.25.0-beta.3_react-native@0.85.3_@babel+core@7.29.0_@react-native_d946f5d10f696c25c0f95066694ac89d/node_modules/react-native-screens`)" + - "RNScreens (from `../../../node_modules/.pnpm/react-native-screens@4.25.0_react-native@0.85.3_@babel+core@7.29.0_@react-native+jest-p_27bafc37770a4b472b96129a8e818eae/node_modules/react-native-screens`)" - "RNSVG (from `../../../node_modules/.pnpm/react-native-svg@15.15.4_react-native@0.85.3_@babel+core@7.29.0_@react-native+jest-pres_492c03827e778ae24445fe49da301b55/node_modules/react-native-svg`)" - "RNWorklets (from `../../../node_modules/.pnpm/react-native-worklets@0.8.3_patch_hash=3f49a21b44ba558989a3366eeff9c92ee331e18b736dbe89_42b4111e02dad0db2c0db5ed881424fc/node_modules/react-native-worklets`)" - TestExpoUi (from `../modules/test-expo-ui/ios`) @@ -3943,7 +3943,7 @@ EXTERNAL SOURCES: RNReanimated: :path: "../../../node_modules/.pnpm/react-native-reanimated@4.3.1_patch_hash=1e34e4238541638db96b94d5a2e974e73f3b801788a3d8_1a5e3d09dfc1ab41347a1ceaceaf61bc/node_modules/react-native-reanimated" RNScreens: - :path: "../../../node_modules/.pnpm/react-native-screens@4.25.0-beta.3_react-native@0.85.3_@babel+core@7.29.0_@react-native_d946f5d10f696c25c0f95066694ac89d/node_modules/react-native-screens" + :path: "../../../node_modules/.pnpm/react-native-screens@4.25.0_react-native@0.85.3_@babel+core@7.29.0_@react-native+jest-p_27bafc37770a4b472b96129a8e818eae/node_modules/react-native-screens" RNSVG: :path: "../../../node_modules/.pnpm/react-native-svg@15.15.4_react-native@0.85.3_@babel+core@7.29.0_@react-native+jest-pres_492c03827e778ae24445fe49da301b55/node_modules/react-native-svg" RNWorklets: @@ -3964,27 +3964,27 @@ SPEC CHECKSUMS: BenchmarkingModule: 75a52c0f605790d86e8cd73979f42693e26a5c14 EASClient: 2321f8d99fa86c710a6f68e017f3b54366baed9f EXApplication: e6040c92edc5522accd62852342e6b14742d42c0 - EXConstants: cc547c6827ad7c335125b77ef0d34500600072dc + EXConstants: 6d77c642e750498fa02e16c9e3ce34a7e6629c9a EXJSONUtils: dba2755f4e24009eaf87a876b2d615ea06c16e42 EXManifests: e20226d12c44cb2d27fca73c274287ff0012b40b - Expo: 5fe2949b83b93d1cd1158c12ddfa6f6d7fee65c0 - expo-dev-client: 7d7a3ea257dc6ec92ed7b3f33ff865593c7fdae6 - expo-dev-launcher: 9ba7cee272da2cef4a5b3ec6593dbc8ca4d6c65f - expo-dev-menu: bda0d19c25ee92b9b7aef4833101615c4037f835 + Expo: 361c317245ae0dae9d76b20d7ddf0cb38ff5b8f9 + expo-dev-client: 2451b6bbee39431d4eea694b4d71feec91b647d9 + expo-dev-launcher: 0e756468b080474ce70bdab3fe9be6e31276642d + expo-dev-menu: 8532b699f6448e80972fc8b5f9bfe61e8a46a208 expo-dev-menu-interface: 65402d4affb8b418aa6cec29b3abb0e313c8f443 ExpoAgeRange: c3e104dedb469958077d56961cbc1d4aaf7a858a ExpoAppIntegrity: 43cc62f24c533b960de07b5038568acedc3a567a ExpoAppleAuthentication: 47f6f6c6722a7facef29d15397635b785086bc5e - ExpoAppMetrics: ca2049cc1f198e69286ad33a9d23636d595b08b8 - ExpoAsset: cd00f5c0f9004d9e502fa7d6c54a437ffe20cd94 - ExpoAudio: fc809158cb86bdad608e8a224331cfb5481d8ea3 - ExpoBackgroundFetch: fbe31df2735bd3d624175b31d6b849bec3a2a736 - ExpoBackgroundTask: fadd6970920cb7ca89a78693a7cd266687fb0d57 + ExpoAppMetrics: debc33b91a4d26dbc67bd7aafc7ac1784b53e194 + ExpoAsset: 966be429f5344096dc6e76c8c7d14d553b195e95 + ExpoAudio: c4a6f9fd2e1d0b39c3bc0ff43c0f36c14a9741c3 + ExpoBackgroundFetch: 2b1d9d1dd6a62dda793c74bd763dcb49b6a55524 + ExpoBackgroundTask: 21a1701a082ff1501bdeba938d848786b9560d36 ExpoBattery: 4fbebca8ce0ee2bb4038efbcfa24d763012af07d ExpoBlob: 3e896c97726abf49bdecf63151e09fb4f7e21195 ExpoBlur: caddd80171e5f8f3581ff3d865e99c6465047240 ExpoBrightness: e394ebb59feb3191a0b0db7453861b3d3431381f - ExpoBrownfield: 859816bf2ddc2cf4f5491fc9f2bec412a1eadf1a + ExpoBrownfield: 5978b14e3c48f40ae8f60cf7f46ccd8d18207ef5 ExpoCalendar: fcf3a20e5228541c7b060fd563d337a83860a19b ExpoCamera: 90595ff52b7cfccf9590a80e23e938e846c112ae ExpoCameraBarcodeScanning: e43e457bb457ce1dfb88b2d812e9457c825bd05c @@ -4001,35 +4001,35 @@ SPEC CHECKSUMS: ExpoGlassEffect: 7d4233dc0727ee2b28dd757eda70e1b6abf662fd ExpoHaptics: 89364cf3c3ca2cfd54cafed42f3be3169bab6d42 ExpoImage: 59f71ed6d030241ffadead114064cfd01bd0dc12 - ExpoImageManipulator: 6c489193ef8b16ef5c527206e052498d689817ac - ExpoImagePicker: 08328e8c841e1e9d3a894bafe1ea51b97a9efcf0 - ExpoInsights: e1fe2d95835f61b35f06c0bb78a08127c19a9d52 + ExpoImageManipulator: 4700b24856c5f7c20e31e1a191edb0c2d84b0110 + ExpoImagePicker: e95eff5433e28baa37d7e8d105bfdcff91bfe49e + ExpoInsights: 38b25f3679c3fcd35da80eb623510112225b3ab1 ExpoKeepAwake: 359c47a1d9ccc3a3c519bca6e39562cce230c5bb ExpoLinearGradient: 16c2b9c6105444883d34958d573725de1293b8d0 - ExpoLinking: eafd5d612d940b353781d85b16a7326e96bfda97 + ExpoLinking: 5fe73159a975396b5753a90dcd644f91d4997083 ExpoLivePhoto: 3c2bd665a63afa8a465b16b564e4c9ab83ea60eb ExpoLocalAuthentication: 64e8c5756df07c8a89f078293ec17899c1325a43 ExpoLocalization: 74b7a2319781fd14f5db01e932c7c3a075ea1b4b - ExpoLocation: bb6fe4f65be6eb26acb8661062ec6d2632395795 - ExpoLogBox: 349eb7ae84d0705e717736ab22c0fd8eaf060297 + ExpoLocation: 42c1691e9485ca9cbcaf881063da470c4f956dfe + ExpoLogBox: 810821edcd35fa4c9347a891b9a4f70b24986d53 ExpoMailComposer: e202b670f62063851ed74c964034037312d523a8 - ExpoMaps: 7fd43313b3be943c93df66df7dd09e6337703a37 + ExpoMaps: d9442d9a3ff4f36cf865ceeddb61dc0c2f04f21b ExpoMediaLibrary: ee2d74d5e52154305b8229dcb5c4319c84f30311 ExpoMeshGradient: baf62012104fd9c1719de67f88c69958abcd2ed1 - ExpoModulesCore: 5bca19db7db63ab6b60af8b6853f05e7d41fda4c - ExpoModulesJSI: 0740aeb1d9d2d3a7e4cd3368b09835d59cba0eb6 + ExpoModulesCore: 7340aa49394f2285dc8effc32c33efa1a61c3834 + ExpoModulesJSI: f672bac18356446b024588f7a77b364d80909e71 ExpoModulesTestCore: 5660ab6b5928747366d4946580622a578865696a - ExpoModulesWorklets: f6674212fdcd312c11642b1e51b9433ab1940a2f - ExpoModulesWorkletsAdapter: 23fa6f8b59e1096e35849bf4f13210640b896822 + ExpoModulesWorklets: 8861dc33348d68f45da07f6b1ce36bbf7932ce34 + ExpoModulesWorkletsAdapter: 89b494dacfec3d6f48f587fe6925a52d983f8d32 ExpoNetwork: 6c8e0cc425a2c7f6591fabcab16417506441242c - ExpoNotifications: 64eaf693447432639bb5db20968cb8619af93bcf - ExpoObserve: ba64aeff255577af6f1a047ade738de63cf73504 + ExpoNotifications: 95f3404429f5af67d9bc63f32c7dfd21ce973a15 + ExpoObserve: 251757b724d23044321252aa352b0f8d64e8ff3a ExpoPrint: 6b5bcac4492908b7e28144c2e7265c1c5ee4ade0 ExpoScreenCapture: f23a26d9fda8c42c77e7a818a1e20e3e8b94134b ExpoScreenOrientation: d009b38c96c03f4ef2bd658cdcf52e130176a7af ExpoSecureStore: 4d1c0303f8ead59766d7466c3c14d0ce4336fc0f ExpoSensors: 4ed48ba1a8d48e236fd22a966b77498188f8f48c - ExpoSharing: 6f6802ef169ebc3240bd97f3ad53be62caf63cd6 + ExpoSharing: 69c9b71fde18b933f449d3ff04b3a94f54374848 ExpoSMS: 2cebfd889706da39a397d20c8a68abb0ce7f185d ExpoSpeech: fe3706df8653ab8c16ff88251e33fab79b07a420 ExpoSplashScreen: 9832cc07432f8c16d2be3b01c0a481ded2ebac4b @@ -4037,18 +4037,18 @@ SPEC CHECKSUMS: ExpoStoreReview: f785057aececd9c63a113c69a82b491e5f90694e ExpoSymbols: f83c91f2897d37102b98b9224c603095630be9d0 ExpoSystemUI: 6f9eddf66c31d074c402ba4a9e5cd2320edda37f - ExpoTaskManager: 89039e1608d021a9eb382dc310c2bda012440b54 + ExpoTaskManager: ab40f53c388e66b79927d8e12a575c5570dc5b2c ExpoTrackingTransparency: dbdb87acf9ae2d85cb6c70f70a9d87d706949efd - ExpoUI: c09f44682fed7c2be300e8efdb39349e03a71c62 + ExpoUI: 4fba40237ef6d9f07b3c336920e962d5201aa017 ExpoVideo: fa20020308f9f8e3458c05c7216d139d47fc1b32 ExpoVideoDashSupportModule: a8197584e7b7e533a67e75d3349c5fa827358ad6 ExpoVideoThumbnails: 116c2563d2bd3a1e98326a267020e25fea8af79e ExpoWebBrowser: fb9b5a94ebaa3483987f4acf4af6fd85c401df3e EXStructuredHeaders: 9e89bcdd636ae2ecb59995cfba3230f5d7547c08 - EXUpdates: fc6bc50db66d455cb3caf8141b74b2dc546b43a7 + EXUpdates: d4ddb00f917ff20c29d67c6148797c08ee3cfdc8 EXUpdatesInterface: 25408a97d682355eb9fb37e5aa6e22caece1881f FBLazyVector: 24e62c765683b8d89006a88a2c8f5cf019f0074d - hermes-engine: 725fd85144e1348879039099a6be950c471a4f2c + hermes-engine: a1bc0e0ef43518b5cd7e6af56c491fe33c8e3906 libavif: 5f8e715bea24debec477006f21ef9e95432e254d libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 @@ -4066,7 +4066,7 @@ SPEC CHECKSUMS: React: e2dc35338068bbd299c66f043ae0d7f25de8499e React-callinvoker: 28b25d21b124c26cebaea713ba7d801b9351dc48 React-Core: 02ed7d2ffb70437bdf2aba074a13078a7b0b9ff0 - React-Core-prebuilt: fde6815789f6abf356769ef91706ab8edd09483e + React-Core-prebuilt: 73eec4b30ca228b7491f00b9ed0738b5e7987136 React-CoreModules: b3a5a42dadcde3b5d47b325bd912eb2ced89e146 React-cxxreact: fe8f88dda044e5905e99a00f41b7a874c3908716 React-debug: 92944dc4d89f56d640e75498266cbde557a48189 @@ -4137,14 +4137,14 @@ SPEC CHECKSUMS: ReactAppDependencyProvider: 25c9c516839be2c5e3d3344f95dc7da5f7e63fc2 ReactCodegen: 4a6399e11baf2544e971652efe65e3d3f29d5080 ReactCommon: 7dfc3250793bf36cf221096ff59e1179e13eef7f - ReactNativeDependencies: 3d528364388addff90003964f5c3a003b40939d2 + ReactNativeDependencies: 64169934a7369c23d6619a9d1583fa18c6a48fa7 RNCAsyncStorage: 2ad919e88b8bc2cd80e8697ce66d04d006743283 RNCMaskedView: eb2b2e538afa907f05a5848a1a1ac26092e6fec9 RNCPicker: d74667bdfc08ed389a2a277d95b8faf2349290a9 RNDateTimePicker: b9e20c2a3af26f4ab10646359777205bbad1fdac RNGestureHandler: c84901d120acdae2f6f27b5889a7cf144e64e6ec RNReanimated: a1b89be9f4b3f85c708900d0a167cd22d869a198 - RNScreens: 9d8bbdc7185cc51e594567e50d87c674ccee3e9c + RNScreens: a6a509f05ea74d50abab8c21b319b33cfca1ea1c RNSVG: 04044c3abcf177fd674a1a3d13097efa1adebcbe RNWorklets: edcd0af162eba9fb81af89a4761f1af35086d1cc SDWebImage: e9fc87c1aab89a8ab1bbd74eba378c6f53be8abf diff --git a/apps/eas-expo-go/eas.json b/apps/eas-expo-go/eas.json index affe084d0d1657..c367c3ab8c69d1 100644 --- a/apps/eas-expo-go/eas.json +++ b/apps/eas-expo-go/eas.json @@ -18,7 +18,8 @@ "EXPO_ROOT_DIR": "/home/expo/workingdir/build", "SHARP_IGNORE_GLOBAL_LIBVIPS": "1", "EAS_BUILD_DISABLE_BUNDLE_JAVASCRIPT_STEP": "1", - "GRADLE_OPTS": "-Xmx16g -XX:MaxMetaspaceSize=1g -Dorg.gradle.vfs.watch=false" + "GRADLE_OPTS": "-Xmx16g -XX:MaxMetaspaceSize=1g -Dorg.gradle.vfs.watch=false", + "EAS_RESTORE_CACHE": "0" } }, "ios": { @@ -29,7 +30,9 @@ "EAS_BUILD_PLATFORM": "ios", "EXPO_ROOT_DIR": "/Users/expo/workingdir/build", "SHARP_IGNORE_GLOBAL_LIBVIPS": "1", - "EAS_BUILD_DISABLE_BUNDLE_JAVASCRIPT_STEP": "1" + "EAS_BUILD_DISABLE_BUNDLE_JAVASCRIPT_STEP": "1", + "EAS_RESTORE_CACHE": "0", + "USE_CCACHE": "0" } } }, diff --git a/apps/eas-expo-go/scripts/eas-build-pre-install.sh b/apps/eas-expo-go/scripts/eas-build-pre-install.sh index a7f42bda7b7141..a62a408c39bc83 100755 --- a/apps/eas-expo-go/scripts/eas-build-pre-install.sh +++ b/apps/eas-expo-go/scripts/eas-build-pre-install.sh @@ -44,6 +44,10 @@ fi pushd $ROOT_DIR/tools +# Install just the `tools` workspace and its deps so `et` can run here. The +# root `pnpm install` runs in a later EAS phase. +pnpm install --filter expotools... --ignore-scripts --dir "$ROOT_DIR" + if [ "$EAS_BUILD_PROFILE" = "release-client" ] && [ "$EAS_BUILD_PLATFORM" = "ios" ]; then et eas remove-background-permissions-from-info-plist fi diff --git a/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/ExpoUpdatesAppLoader.kt b/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/ExpoUpdatesAppLoader.kt index 398c6663e3906e..630003fbfe0a41 100644 --- a/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/ExpoUpdatesAppLoader.kt +++ b/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/ExpoUpdatesAppLoader.kt @@ -30,6 +30,7 @@ import host.exp.exponent.kernel.ExpoViewKernel import host.exp.exponent.kernel.Kernel import host.exp.exponent.kernel.KernelConfig import host.exp.exponent.storage.ExponentSharedPreferences +import host.exp.exponent.utils.HermesBundleUtils import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -37,6 +38,7 @@ import org.json.JSONArray import org.json.JSONException import org.json.JSONObject import java.io.File +import java.net.URI import javax.inject.Inject import kotlin.time.DurationUnit import kotlin.time.toDuration @@ -263,7 +265,16 @@ class ExpoUpdatesAppLoader @JvmOverloads constructor( // ReactAndroid will load the bundle on its own in development mode if (!manifest.isDevelopmentMode()) { - callback.onBundleCompleted(launcher.launchAssetFile!!) + val launchAssetFile = launcher.launchAssetFile!! + val isEasUpdate = runCatching { URI(manifestUrl).host }.getOrNull() == "u.expo.dev" + if (!isEasUpdate && HermesBundleUtils.isHermesBundle(File(launchAssetFile))) { + val errorJson = JSONObject().apply { + put("errorCode", "EXPERIENCE_HERMES_BUNDLE_NOT_SUPPORTED") + put("message", "Hermes bytecode bundle is not supported by Expo Go") + } + throw ManifestException(null, manifestUrl, errorJson) + } + callback.onBundleCompleted(launchAssetFile) } } catch (e: Exception) { callback.onError(e) diff --git a/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/exceptions/ManifestException.kt b/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/exceptions/ManifestException.kt index 67761c8b2e7dc5..679665e5d44235 100644 --- a/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/exceptions/ManifestException.kt +++ b/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/exceptions/ManifestException.kt @@ -37,6 +37,7 @@ class ManifestException : ExponentException { } "EXPERIENCE_SDK_VERSION_TOO_NEW" -> "Project is incompatible with this version of Expo Go" "SNACK_NOT_FOUND_FOR_SDK_VERSION" -> "This Snack is incompatible with this version of Expo Go" + "EXPERIENCE_HERMES_BUNDLE_NOT_SUPPORTED" -> "Project is incompatible with Expo Go" else -> null } } catch (e: JSONException) { @@ -116,6 +117,13 @@ class ManifestException : ExponentException { "You need to log in. If the snack is still unavailable after logging in, ask the owner to grant you access." } + "EXPERIENCE_HERMES_BUNDLE_NOT_SUPPORTED" -> { + formattedMessage = "This project was published with a precompiled Hermes bytecode bundle. Expo Go runs plain JavaScript bundles, so it can't load this update." + fixInstructions = + "Open this project in a development build instead, or use eas update --no-bytecode." + canRetry = false + } + "USER_SNACK_NOT_FOUND", "SNACK_NOT_FOUND" -> formattedMessage = "No snack found at $manifestUrl." diff --git a/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/experience/ReactNativeActivity.kt b/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/experience/ReactNativeActivity.kt index e9e9dfb970f4f6..281fc3245847fc 100644 --- a/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/experience/ReactNativeActivity.kt +++ b/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/experience/ReactNativeActivity.kt @@ -21,6 +21,7 @@ import com.facebook.react.ReactHost import com.facebook.react.bridge.ReactContext.RCTDeviceEventEmitter import com.facebook.react.devsupport.DefaultDevLoadingViewImplementation import com.facebook.react.devsupport.DevInternalSettings +import com.facebook.react.devsupport.DevSupportManagerBase import com.facebook.react.devsupport.DoubleTapReloadRecognizer import com.facebook.react.devsupport.interfaces.DevSupportManager import com.facebook.react.interfaces.fabric.ReactSurface @@ -34,6 +35,7 @@ import expo.modules.manifests.core.Manifest import host.exp.exponent.ExponentManifest import host.exp.exponent.analytics.EXL import host.exp.exponent.di.NativeModuleDepsProvider +import host.exp.exponent.exceptions.ManifestException import host.exp.exponent.experience.BaseExperienceActivity.ExperienceContentLoaded import host.exp.exponent.experience.splashscreen.LoadingView import host.exp.exponent.factories.ReactHostFactory @@ -58,6 +60,7 @@ import org.json.JSONObject import versioned.host.exp.exponent.ExpoNetworkInterceptor import versioned.host.exp.exponent.ExponentDevBundleDownloadListener import versioned.host.exp.exponent.ExponentPackage +import java.io.File import java.util.LinkedList import java.util.Queue import javax.inject.Inject @@ -359,7 +362,23 @@ abstract class ReactNativeActivity : instanceManagerBuilderProperties ) - val devBundleDownloadListener = ExponentDevBundleDownloadListener(progressListener) + var devSupportManager: DevSupportManager? = null + val capturedManifestUrl = manifestUrl + val devBundleDownloadListener = ExponentDevBundleDownloadListener( + progressListener, + downloadedBundleFileProvider = { + (devSupportManager as? DevSupportManagerBase)?.downloadedJSBundleFile?.let(::File) + }, + onHermesDetected = { + if (capturedManifestUrl != null) { + val errorJson = JSONObject().apply { + put("errorCode", "EXPERIENCE_HERMES_BUNDLE_NOT_SUPPORTED") + put("message", "Hermes bytecode bundle is not supported by Expo Go") + } + KernelProvider.instance.handleError(ManifestException(null, capturedManifestUrl, errorJson)) + } + } + ) if (delegate.isDebugModeEnabled) { val debuggerHost = manifest!!.getDebuggerHost() @@ -377,6 +396,7 @@ abstract class ReactNativeActivity : useDevSupport = nativeHost.useDeveloperSupport, devBundleDownloadListener = devBundleDownloadListener ) + devSupportManager = reactHost.devSupportManager val bundle = Bundle() val exponentProps = JSONObject() diff --git a/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/utils/HermesBundleUtils.kt b/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/utils/HermesBundleUtils.kt new file mode 100644 index 00000000000000..6a3378a954b744 --- /dev/null +++ b/apps/expo-go/android/expoview/src/main/java/host/exp/exponent/utils/HermesBundleUtils.kt @@ -0,0 +1,32 @@ +// Copyright 2015-present 650 Industries. All rights reserved. +package host.exp.exponent.utils + +import java.io.File +import java.io.IOException + +object HermesBundleUtils { + // https://github.com/facebook/hermes/blob/ae8554141cd3d3f64eb98d70c97112fcc6143d34/include/hermes/BCGen/HBC/BytecodeFileFormat.h#L26-L27 + private val HERMES_MAGIC_HEADER = byteArrayOf( + 0xc6.toByte(), + 0x1f.toByte(), + 0xbc.toByte(), + 0x03.toByte(), + 0xc1.toByte(), + 0x03.toByte(), + 0x19.toByte(), + 0x1f.toByte() + ) + + fun isHermesBundle(file: File): Boolean { + if (!file.exists() || file.length() < HERMES_MAGIC_HEADER.size) return false + return try { + file.inputStream().use { input -> + val bytes = ByteArray(HERMES_MAGIC_HEADER.size) + val read = input.read(bytes, 0, bytes.size) + read == HERMES_MAGIC_HEADER.size && bytes.contentEquals(HERMES_MAGIC_HEADER) + } + } catch (e: IOException) { + false + } + } +} diff --git a/apps/expo-go/android/expoview/src/main/java/versioned/host/exp/exponent/ExponentDevBundleDownloadListener.kt b/apps/expo-go/android/expoview/src/main/java/versioned/host/exp/exponent/ExponentDevBundleDownloadListener.kt index c5b627d71bdbe7..2fb51805299d68 100644 --- a/apps/expo-go/android/expoview/src/main/java/versioned/host/exp/exponent/ExponentDevBundleDownloadListener.kt +++ b/apps/expo-go/android/expoview/src/main/java/versioned/host/exp/exponent/ExponentDevBundleDownloadListener.kt @@ -2,15 +2,28 @@ package versioned.host.exp.exponent import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener import host.exp.exponent.experience.DevBundleDownloadProgressListener +import host.exp.exponent.utils.HermesBundleUtils +import java.io.File import kotlin.Exception /** * Acts as a bridge between the versioned DevBundleDownloadListener and unversioned - * DevBundleDownloadProgressListener + * DevBundleDownloadProgressListener. Optionally sniffs the downloaded bundle for the + * Hermes magic header and fails instead of succeeding when matched. */ -class ExponentDevBundleDownloadListener(private val listener: DevBundleDownloadProgressListener) : - DevBundleDownloadListener { +class ExponentDevBundleDownloadListener( + private val listener: DevBundleDownloadProgressListener, + private val downloadedBundleFileProvider: (() -> File?)? = null, + private val onHermesDetected: ((Exception) -> Unit)? = null +) : DevBundleDownloadListener { override fun onSuccess() { + val bundleFile = downloadedBundleFileProvider?.invoke() + if (bundleFile != null && HermesBundleUtils.isHermesBundle(bundleFile)) { + val error = Exception("hermes bytecode bundle is not supported by expo-go") + onHermesDetected?.invoke(error) + listener.onFailure(error) + return + } listener.onSuccess() } diff --git a/apps/expo-go/ios/Exponent/Kernel/AppLoader/CachedResource/EXManifestResource.h b/apps/expo-go/ios/Exponent/Kernel/AppLoader/CachedResource/EXManifestResource.h index 98e09d73f5dfe6..22ab3d9cccf046 100644 --- a/apps/expo-go/ios/Exponent/Kernel/AppLoader/CachedResource/EXManifestResource.h +++ b/apps/expo-go/ios/Exponent/Kernel/AppLoader/CachedResource/EXManifestResource.h @@ -7,6 +7,7 @@ NS_ASSUME_NONNULL_BEGIN +extern NSString * const EXRuntimeErrorDomain; extern NSString * const EXFixInstructionsKey; extern NSString * const EXShowTryAgainButtonKey; diff --git a/apps/expo-go/ios/Exponent/Kernel/AppLoader/CachedResource/EXManifestResource.m b/apps/expo-go/ios/Exponent/Kernel/AppLoader/CachedResource/EXManifestResource.m index 93d1770e60c8c7..f06c61f301fc92 100644 --- a/apps/expo-go/ios/Exponent/Kernel/AppLoader/CachedResource/EXManifestResource.m +++ b/apps/expo-go/ios/Exponent/Kernel/AppLoader/CachedResource/EXManifestResource.m @@ -343,6 +343,10 @@ - (NSError *)formatError:(NSError *)error formattedMessage = @"The project you requested requires a newer version of Expo Go."; fixInstructions = @"Download the latest version of Expo Go from the App Store."; showTryAgainButton = false; + } else if ([errorCode isEqualToString:@"EXPERIENCE_HERMES_BUNDLE_NOT_SUPPORTED"]) { + formattedMessage = @"This project was published with a precompiled Hermes bytecode bundle. Expo Go runs plain JavaScript bundles, so it can't load this update."; + fixInstructions = @"Open this project in a [development build](https://docs.expo.dev/develop/development-builds/introduction/) instead, or use **eas update --no-bytecode**."; + showTryAgainButton = false; } else if ([errorCode isEqualToString:@"NO_COMPATIBLE_EXPERIENCE_FOUND"]){ formattedMessage = rawMessage; // No compatible experience found at ${originalUrl}. Only ${currentSdkVersions} are supported. } else if ([errorCode isEqualToString:@"EXPERIENCE_NOT_VIEWABLE"]) { @@ -392,6 +396,8 @@ + (NSString * _Nonnull)formatHeader:(NSError * _Nonnull)error { return @"Project is incompatible with this version of Expo Go"; } else if ([errorCode isEqualToString:@"SNACK_NOT_FOUND_FOR_SDK_VERSION"]) { return @"This Snack is incompatible with this version of Expo Go"; + } else if ([errorCode isEqualToString:@"EXPERIENCE_HERMES_BUNDLE_NOT_SUPPORTED"]) { + return @"Project is incompatible with Expo Go"; } return nil; } diff --git a/apps/expo-go/ios/Exponent/Kernel/AppLoader/EXAppLoaderExpoUpdates.m b/apps/expo-go/ios/Exponent/Kernel/AppLoader/EXAppLoaderExpoUpdates.m index 4cb9a3439fe7a8..3ebf8a24baf446 100644 --- a/apps/expo-go/ios/Exponent/Kernel/AppLoader/EXAppLoaderExpoUpdates.m +++ b/apps/expo-go/ios/Exponent/Kernel/AppLoader/EXAppLoaderExpoUpdates.m @@ -256,6 +256,17 @@ - (void)appLoaderTask:(EXUpdatesAppLoaderTask *)appLoaderTask didFinishWithLaunc return; } _bundle = [NSData dataWithContentsOfURL:launcher.launchAssetUrl]; + BOOL isEasUpdate = [_httpManifestUrl.host isEqualToString:@"u.expo.dev"]; + if (!isEasUpdate && [EXAppLoaderExpoUpdates isHermesBundle:_bundle]) { + EXManifestResource *manifestResource = [[EXManifestResource alloc] initWithManifestUrl:_httpManifestUrl originalUrl:_manifestUrl]; + _error = [manifestResource formatError:[NSError errorWithDomain:EXRuntimeErrorDomain code:0 userInfo:@{ + @"errorCode": @"EXPERIENCE_HERMES_BUNDLE_NOT_SUPPORTED", + }]]; + if (self.delegate) { + [self.delegate appLoader:self didFailWithError:_error]; + } + return; + } if (self.delegate) { [self.delegate appLoader:self didFinishLoadingManifest:_confirmedManifest bundle:_bundle]; } @@ -292,6 +303,16 @@ - (void)appLoaderTaskDidFinishAllLoading:(EXUpdatesAppLoaderTask *)appLoaderTask #pragma mark - internal ++ (BOOL)isHermesBundle:(NSData *)bundle +{ + // https://github.com/facebook/hermes/blob/ae8554141cd3d3f64eb98d70c97112fcc6143d34/include/hermes/BCGen/HBC/BytecodeFileFormat.h#L26-L27 + static const uint8_t kHermesMagic[] = { 0xc6, 0x1f, 0xbc, 0x03, 0xc1, 0x03, 0x19, 0x1f }; + if (bundle.length < sizeof(kHermesMagic)) { + return NO; + } + return memcmp(bundle.bytes, kHermesMagic, sizeof(kHermesMagic)) == 0; +} + + (NSURL *)_httpUrlFromManifestUrl:(NSURL *)url { NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:YES]; @@ -471,6 +492,18 @@ - (void)_loadDevelopmentJavaScriptResource [self.delegate appLoader:self didLoadBundleWithProgress:progress]; } } success:^(NSData *bundle) { + if ([EXAppLoaderExpoUpdates isHermesBundle:bundle]) { + EXManifestResource *manifestResource = [[EXManifestResource alloc] initWithManifestUrl:self.httpManifestUrl originalUrl:self.manifestUrl]; + NSError *hermesError = [manifestResource formatError:[NSError errorWithDomain:EXRuntimeErrorDomain code:0 userInfo:@{ + @"errorCode": @"EXPERIENCE_HERMES_BUNDLE_NOT_SUPPORTED", + }]]; + self.error = hermesError; + self.isLoadingDevelopmentJavaScriptResource = NO; + if (self.delegate) { + [self.delegate appLoader:self didFailWithError:hermesError]; + } + return; + } self.isUpToDate = YES; self.bundle = bundle; self.isLoadingDevelopmentJavaScriptResource = NO; diff --git a/apps/expo-go/ios/Podfile.lock b/apps/expo-go/ios/Podfile.lock index 1f7ec576a55afa..927eadafd48a55 100644 --- a/apps/expo-go/ios/Podfile.lock +++ b/apps/expo-go/ios/Podfile.lock @@ -11,7 +11,7 @@ PODS: - ExpoModulesTestCore - EXApplication (56.0.3): - ExpoModulesCore - - EXConstants (56.0.6): + - EXConstants (56.0.7): - ExpoModulesCore - EXJSONUtils (56.0.0) - EXJSONUtils/Tests (56.0.0) @@ -20,7 +20,7 @@ PODS: - EXManifests/Tests (56.0.2): - ExpoModulesCore - ExpoModulesTestCore - - Expo (56.0.0-preview.7): + - Expo (56.0.0-preview.9): - boost - DoubleConversion - ExpoModulesCore @@ -52,7 +52,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - Expo/Tests (56.0.0-preview.7): + - Expo/Tests (56.0.0-preview.9): - boost - DoubleConversion - ExpoModulesCore @@ -85,16 +85,16 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - ExpoAsset (56.0.6): + - ExpoAsset (56.0.7): - ExpoModulesCore - - ExpoAudio (56.0.3): + - ExpoAudio (56.0.4): - ExpoModulesCore - - ExpoBackgroundFetch (56.0.5): + - ExpoBackgroundFetch (56.0.6): - ExpoModulesCore - - ExpoBackgroundTask (56.0.5): + - ExpoBackgroundTask (56.0.6): - ExpoModulesCore - ExpoTaskManager - - ExpoBackgroundTask/Tests (56.0.5): + - ExpoBackgroundTask/Tests (56.0.6): - ExpoModulesCore - ExpoModulesTestCore - ExpoTaskManager @@ -158,24 +158,24 @@ PODS: - SDWebImageAVIFCoder (~> 0.11.0) - SDWebImageSVGCoder (~> 1.7.0) - SDWebImageWebPCoder (~> 0.14.6) - - ExpoImageManipulator (56.0.5): + - ExpoImageManipulator (56.0.6): - ExpoModulesCore - SDWebImageWebPCoder - - ExpoImagePicker (56.0.5): + - ExpoImagePicker (56.0.6): - ExpoModulesCore - ExpoKeepAwake (56.0.3): - ExpoModulesCore - ExpoLinearGradient (56.0.4): - ExpoModulesCore - - ExpoLinking (56.0.4): + - ExpoLinking (56.0.5): - ExpoModulesCore - ExpoLocalAuthentication (56.0.3): - ExpoModulesCore - ExpoLocalization (56.0.3): - ExpoModulesCore - - ExpoLocation (56.0.5): + - ExpoLocation (56.0.6): - ExpoModulesCore - - ExpoLogBox (56.0.6): + - ExpoLogBox (56.0.7): - React-Core - ExpoMailComposer (56.0.3): - ExpoModulesCore @@ -186,7 +186,7 @@ PODS: - ExpoModulesCore - ExpoModulesTestCore - React-Core - - ExpoModulesCore (56.0.5): + - ExpoModulesCore (56.0.6): - boost - DoubleConversion - ExpoModulesJSI @@ -216,7 +216,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - ExpoModulesCore/Tests (56.0.5): + - ExpoModulesCore/Tests (56.0.6): - boost - DoubleConversion - ExpoModulesJSI @@ -247,10 +247,10 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - ExpoModulesJSI (56.0.2): + - ExpoModulesJSI (56.0.3): - React-Core - ReactCommon - - ExpoModulesJSI/Tests (56.0.2): + - ExpoModulesJSI/Tests (56.0.3): - React-Core - ReactCommon - ExpoModulesTestCore (56.0.0): @@ -258,27 +258,27 @@ PODS: - Nimble (~> 13.0.0) - Quick (~> 7.3.0) - React-hermes - - ExpoModulesWorklets (56.0.5): + - ExpoModulesWorklets (56.0.6): - ExpoModulesCore - ExpoModulesJSI - - ExpoModulesWorkletsAdapter (56.0.5): + - ExpoModulesWorkletsAdapter (56.0.6): - ExpoModulesCore - ExpoModulesJSI - ExpoModulesWorklets - RNWorklets - ExpoNetwork (56.0.3): - ExpoModulesCore - - ExpoNotifications (56.0.5): + - ExpoNotifications (56.0.6): - ExpoModulesCore - - ExpoNotifications/Tests (56.0.5): + - ExpoNotifications/Tests (56.0.6): - ExpoModulesCore - ExpoModulesTestCore - ExpoPrint (56.0.3): - ExpoModulesCore - - ExpoRouter (56.1.1): + - ExpoRouter (56.1.3): - ExpoModulesCore - RNScreens - - ExpoRouter/Tests (56.1.1): + - ExpoRouter/Tests (56.1.3): - ExpoModulesCore - ExpoModulesTestCore - RNScreens @@ -317,7 +317,7 @@ PODS: - ExpoModulesCore - ExpoSensors (56.0.3): - ExpoModulesCore - - ExpoSharing (56.0.5): + - ExpoSharing (56.0.6): - ExpoModulesCore - ExpoSMS (56.0.3): - ExpoModulesCore @@ -331,16 +331,16 @@ PODS: - ExpoModulesCore - ExpoSystemUI (56.0.4): - ExpoModulesCore - - ExpoTaskManager (56.0.5): + - ExpoTaskManager (56.0.6): - ExpoModulesCore - UMAppLoader - - ExpoTaskManager/Tests (56.0.5): + - ExpoTaskManager/Tests (56.0.6): - ExpoModulesCore - ExpoModulesTestCore - UMAppLoader - ExpoTrackingTransparency (56.0.3): - ExpoModulesCore - - ExpoUI (56.0.4): + - ExpoUI (56.0.5): - ExpoModulesCore - ExpoModulesWorklets - React-RCTFabric @@ -352,7 +352,7 @@ PODS: - ExpoModulesCore - EXStructuredHeaders (56.0.0) - EXStructuredHeaders/Tests (56.0.0) - - EXUpdates (56.0.6): + - EXUpdates (56.0.7): - boost - DoubleConversion - EASClient @@ -386,7 +386,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - EXUpdates/Tests (56.0.6): + - EXUpdates/Tests (56.0.7): - boost - DoubleConversion - EASClient @@ -4640,14 +4640,14 @@ SPEC CHECKSUMS: DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb EASClient: 2321f8d99fa86c710a6f68e017f3b54366baed9f EXApplication: e6040c92edc5522accd62852342e6b14742d42c0 - EXConstants: cc547c6827ad7c335125b77ef0d34500600072dc + EXConstants: 6d77c642e750498fa02e16c9e3ce34a7e6629c9a EXJSONUtils: dba2755f4e24009eaf87a876b2d615ea06c16e42 EXManifests: e20226d12c44cb2d27fca73c274287ff0012b40b - Expo: d67adb443e0ad358fc5f26fd82cac2f53c94a182 - ExpoAsset: cd00f5c0f9004d9e502fa7d6c54a437ffe20cd94 - ExpoAudio: fc809158cb86bdad608e8a224331cfb5481d8ea3 - ExpoBackgroundFetch: fbe31df2735bd3d624175b31d6b849bec3a2a736 - ExpoBackgroundTask: fadd6970920cb7ca89a78693a7cd266687fb0d57 + Expo: 829f9df462a7ecc2db322a715db99cfae7b9e19a + ExpoAsset: 966be429f5344096dc6e76c8c7d14d553b195e95 + ExpoAudio: c4a6f9fd2e1d0b39c3bc0ff43c0f36c14a9741c3 + ExpoBackgroundFetch: 2b1d9d1dd6a62dda793c74bd763dcb49b6a55524 + ExpoBackgroundTask: 21a1701a082ff1501bdeba938d848786b9560d36 ExpoBattery: 4fbebca8ce0ee2bb4038efbcfa24d763012af07d ExpoBlob: 3e896c97726abf49bdecf63151e09fb4f7e21195 ExpoBlur: caddd80171e5f8f3581ff3d865e99c6465047240 @@ -4668,45 +4668,45 @@ SPEC CHECKSUMS: ExpoGlassEffect: 7d4233dc0727ee2b28dd757eda70e1b6abf662fd ExpoHaptics: 89364cf3c3ca2cfd54cafed42f3be3169bab6d42 ExpoImage: 59f71ed6d030241ffadead114064cfd01bd0dc12 - ExpoImageManipulator: 6c489193ef8b16ef5c527206e052498d689817ac - ExpoImagePicker: 08328e8c841e1e9d3a894bafe1ea51b97a9efcf0 + ExpoImageManipulator: 4700b24856c5f7c20e31e1a191edb0c2d84b0110 + ExpoImagePicker: e95eff5433e28baa37d7e8d105bfdcff91bfe49e ExpoKeepAwake: 359c47a1d9ccc3a3c519bca6e39562cce230c5bb ExpoLinearGradient: 16c2b9c6105444883d34958d573725de1293b8d0 - ExpoLinking: eafd5d612d940b353781d85b16a7326e96bfda97 + ExpoLinking: 5fe73159a975396b5753a90dcd644f91d4997083 ExpoLocalAuthentication: 64e8c5756df07c8a89f078293ec17899c1325a43 ExpoLocalization: 74b7a2319781fd14f5db01e932c7c3a075ea1b4b - ExpoLocation: bb6fe4f65be6eb26acb8661062ec6d2632395795 - ExpoLogBox: 349eb7ae84d0705e717736ab22c0fd8eaf060297 + ExpoLocation: 42c1691e9485ca9cbcaf881063da470c4f956dfe + ExpoLogBox: 810821edcd35fa4c9347a891b9a4f70b24986d53 ExpoMailComposer: e202b670f62063851ed74c964034037312d523a8 ExpoMediaLibrary: ee2d74d5e52154305b8229dcb5c4319c84f30311 - ExpoModulesCore: 2a0440b73015179c83c0bd92e2ffdf8decb41c00 - ExpoModulesJSI: 0740aeb1d9d2d3a7e4cd3368b09835d59cba0eb6 + ExpoModulesCore: 60cf0568f718671efd76a1ae18d9d11ee0fbdd85 + ExpoModulesJSI: f672bac18356446b024588f7a77b364d80909e71 ExpoModulesTestCore: 5660ab6b5928747366d4946580622a578865696a - ExpoModulesWorklets: f6674212fdcd312c11642b1e51b9433ab1940a2f - ExpoModulesWorkletsAdapter: 23fa6f8b59e1096e35849bf4f13210640b896822 + ExpoModulesWorklets: 8861dc33348d68f45da07f6b1ce36bbf7932ce34 + ExpoModulesWorkletsAdapter: 89b494dacfec3d6f48f587fe6925a52d983f8d32 ExpoNetwork: 6c8e0cc425a2c7f6591fabcab16417506441242c - ExpoNotifications: 64eaf693447432639bb5db20968cb8619af93bcf + ExpoNotifications: 95f3404429f5af67d9bc63f32c7dfd21ce973a15 ExpoPrint: 6b5bcac4492908b7e28144c2e7265c1c5ee4ade0 - ExpoRouter: 5687a490ecc753f030766efd86ea4647313218a9 + ExpoRouter: c123a7005eba063f55190f233df555d78dcaf044 ExpoScreenCapture: f23a26d9fda8c42c77e7a818a1e20e3e8b94134b ExpoScreenOrientation: 1e3a088b300c7f0d1520679a6c3660fc4738081a ExpoSecureStore: 4d1c0303f8ead59766d7466c3c14d0ce4336fc0f ExpoSensors: 4ed48ba1a8d48e236fd22a966b77498188f8f48c - ExpoSharing: 6f6802ef169ebc3240bd97f3ad53be62caf63cd6 + ExpoSharing: 69c9b71fde18b933f449d3ff04b3a94f54374848 ExpoSMS: 2cebfd889706da39a397d20c8a68abb0ce7f185d ExpoSpeech: fe3706df8653ab8c16ff88251e33fab79b07a420 ExpoSQLite: 35cd83a1d83122736bf3f39e99020588a8b00848 ExpoStoreReview: f785057aececd9c63a113c69a82b491e5f90694e ExpoSymbols: f83c91f2897d37102b98b9224c603095630be9d0 ExpoSystemUI: 6f9eddf66c31d074c402ba4a9e5cd2320edda37f - ExpoTaskManager: 89039e1608d021a9eb382dc310c2bda012440b54 + ExpoTaskManager: ab40f53c388e66b79927d8e12a575c5570dc5b2c ExpoTrackingTransparency: dbdb87acf9ae2d85cb6c70f70a9d87d706949efd - ExpoUI: c09f44682fed7c2be300e8efdb39349e03a71c62 + ExpoUI: 4fba40237ef6d9f07b3c336920e962d5201aa017 ExpoVideo: fa20020308f9f8e3458c05c7216d139d47fc1b32 ExpoVideoThumbnails: 116c2563d2bd3a1e98326a267020e25fea8af79e ExpoWebBrowser: fb9b5a94ebaa3483987f4acf4af6fd85c401df3e EXStructuredHeaders: 9e89bcdd636ae2ecb59995cfba3230f5d7547c08 - EXUpdates: 1f6036532aa24c1f2cb9e758796c95622f8f9552 + EXUpdates: 4e08f4e55a066911054d6bd42a93b6e829cc6940 EXUpdatesInterface: 25408a97d682355eb9fb37e5aa6e22caece1881f fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6 FBLazyVector: 473b935415b82ae4f7f9aa9d5b3378491143ccbf @@ -4723,7 +4723,7 @@ SPEC CHECKSUMS: GoogleAppMeasurement: 8a82b93a6400c8e6551c0bcd66a9177f2e067aed GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 - hermes-engine: 020d7dbf64ea2ac7f2dc43408d80cc6035c4b3e8 + hermes-engine: b35a5dc1ffceda2d490f9e9db0decef19984d7dc libavif: 5f8e715bea24debec477006f21ef9e95432e254d libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 diff --git a/apps/native-component-list/src/screens/UI/CommunitySliderScreen.tsx b/apps/native-component-list/src/screens/UI/CommunitySliderScreen.tsx new file mode 100644 index 00000000000000..fb76b1ba01749f --- /dev/null +++ b/apps/native-component-list/src/screens/UI/CommunitySliderScreen.tsx @@ -0,0 +1,210 @@ +import { Slider } from '@expo/ui/community/slider'; +import { useState } from 'react'; +import { Pressable, StyleSheet, Switch, Text, View } from 'react-native'; + +import { Page } from '../../components/Page'; + +const RANGES = [ + { label: '0 – 1', min: 0, max: 1 }, + { label: '0 – 100', min: 0, max: 100 }, + { label: '-1 – 1', min: -1, max: 1 }, +] as const; + +const WIDTHS = [ + { label: 'Auto', value: undefined }, + { label: '240', value: 240 }, +] as const; + +// Step is range-relative so it stays meaningful when range changes. +const STEPS = [ + { label: 'Continuous', factor: 0 }, + { label: '1/10', factor: 0.1 }, + { label: '1/4', factor: 0.25 }, +] as const; + +const TINTS = [ + { label: 'Default', min: undefined, max: undefined, thumb: undefined }, + { label: 'Red', min: '#ef4444', max: '#fecaca', thumb: '#dc2626' }, + { label: 'Blue', min: '#3b82f6', max: '#bfdbfe', thumb: '#1d4ed8' }, +] as const; + +export default function CommunitySliderScreen() { + const [rangeIndex, setRangeIndex] = useState(0); + const [widthIndex, setWidthIndex] = useState(0); + const [stepIndex, setStepIndex] = useState(0); + const [tintIndex, setTintIndex] = useState(0); + const [disabled, setDisabled] = useState(false); + const [inverted, setInverted] = useState(false); + const [limited, setLimited] = useState(false); + const [value, setValue] = useState(0.5); + + const range = RANGES[rangeIndex]; + const width = WIDTHS[widthIndex].value; + const step = STEPS[stepIndex].factor * (range.max - range.min); + const tint = TINTS[tintIndex]; + // Limits clamp to the inner 60% of the range when enabled. + const span = range.max - range.min; + const lowerLimit = limited ? range.min + span * 0.2 : undefined; + const upperLimit = limited ? range.min + span * 0.8 : undefined; + + const onSelectRange = (i: number) => { + setRangeIndex(i); + const next = RANGES[i]; + setValue((next.min + next.max) / 2); + }; + + return ( + + + + {value.toFixed(3)} + + + + r.label)} + index={rangeIndex} + onSelect={onSelectRange} + /> + s.label)} + index={stepIndex} + onSelect={setStepIndex} + /> + t.label)} + index={tintIndex} + onSelect={setTintIndex} + /> + w.label)} + index={widthIndex} + onSelect={setWidthIndex} + /> + + Disabled + + + + Inverted + + + + Limits (inner 60%) + + + + + ); +} + +CommunitySliderScreen.navigationOptions = { + title: 'Community Slider', +}; + +function PillRow({ + label, + options, + index, + onSelect, +}: { + label: string; + options: readonly string[]; + index: number; + onSelect: (i: number) => void; +}) { + return ( + + {label} + + {options.map((opt, i) => { + const selected = i === index; + return ( + onSelect(i)} + style={[styles.pill, selected && styles.pillSelected]}> + {opt} + + ); + })} + + + ); +} + +const styles = StyleSheet.create({ + preview: { + backgroundColor: '#f3f4f6', + borderRadius: 16, + padding: 20, + marginTop: 16, + gap: 12, + }, + valueLabel: { + fontFamily: 'Menlo', + fontSize: 18, + color: '#111827', + textAlign: 'center', + }, + controls: { + marginTop: 20, + gap: 12, + }, + row: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + paddingVertical: 6, + }, + rowLabel: { + fontSize: 15, + color: '#374151', + fontWeight: '500', + }, + pillGroup: { + flexDirection: 'row', + backgroundColor: '#e5e7eb', + borderRadius: 999, + padding: 2, + }, + pill: { + paddingHorizontal: 12, + paddingVertical: 6, + borderRadius: 999, + }, + pillSelected: { + backgroundColor: '#ffffff', + shadowColor: '#000', + shadowOpacity: 0.08, + shadowRadius: 2, + shadowOffset: { width: 0, height: 1 }, + elevation: 1, + }, + pillText: { + fontSize: 13, + color: '#6b7280', + fontWeight: '500', + }, + pillTextSelected: { + color: '#111827', + }, +}); diff --git a/apps/native-component-list/src/screens/UI/UIScreen.android.tsx b/apps/native-component-list/src/screens/UI/UIScreen.android.tsx index 11432617c8fd68..efc07a47df3961 100644 --- a/apps/native-component-list/src/screens/UI/UIScreen.android.tsx +++ b/apps/native-component-list/src/screens/UI/UIScreen.android.tsx @@ -130,6 +130,14 @@ export const UIScreens = [ return optionalRequire(() => require('./CommunitySegmentedControlScreen')); }, }, + { + name: 'Community Slider replacement', + route: 'ui/community-slider', + options: {}, + getComponent() { + return optionalRequire(() => require('./CommunitySliderScreen')); + }, + }, { name: 'Community MaskedView replacement', route: 'ui/community-masked-view', diff --git a/apps/native-component-list/src/screens/UI/UIScreen.ios.tsx b/apps/native-component-list/src/screens/UI/UIScreen.ios.tsx index d0ef411e95ce9c..6f9c2d80194f9c 100644 --- a/apps/native-component-list/src/screens/UI/UIScreen.ios.tsx +++ b/apps/native-component-list/src/screens/UI/UIScreen.ios.tsx @@ -58,6 +58,14 @@ export const UIScreens = [ return optionalRequire(() => require('./CommunitySegmentedControlScreen')); }, }, + { + name: 'Community Slider replacement', + route: 'ui/community-slider', + options: {}, + getComponent() { + return optionalRequire(() => require('./CommunitySliderScreen')); + }, + }, { name: 'Community MaskedView replacement', route: 'ui/community-masked-view', diff --git a/apps/native-component-list/src/screens/UI/UIScreen.tsx b/apps/native-component-list/src/screens/UI/UIScreen.tsx index c4c62676d34e8b..6a0acbdc29685d 100644 --- a/apps/native-component-list/src/screens/UI/UIScreen.tsx +++ b/apps/native-component-list/src/screens/UI/UIScreen.tsx @@ -26,6 +26,14 @@ export const UIScreens = [ return optionalRequire(() => require('./CommunitySegmentedControlScreen')); }, }, + { + name: 'Community Slider replacement', + route: 'ui/community-slider', + options: {}, + getComponent() { + return optionalRequire(() => require('./CommunitySliderScreen')); + }, + }, ]; export default function UIScreen() { diff --git a/docs/pages/versions/unversioned/sdk/ui/drop-in-replacements/index.mdx b/docs/pages/versions/unversioned/sdk/ui/drop-in-replacements/index.mdx index 76efc5d8b32ff3..fe16eee186bfd8 100644 --- a/docs/pages/versions/unversioned/sdk/ui/drop-in-replacements/index.mdx +++ b/docs/pages/versions/unversioned/sdk/ui/drop-in-replacements/index.mdx @@ -13,4 +13,5 @@ The following components provide API-compatible replacements for popular React N - **[BottomSheet](bottomsheet)**: Compatible with `@gorhom/bottom-sheet` - **[Picker](picker)**: Compatible with `@react-native-picker/picker` - **[SegmentedControl](segmentedcontrol)**: Compatible with `@react-native-segmented-control/segmented-control` +- **[Slider](slider)**: Compatible with `@react-native-community/slider` - **[MaskedView](maskedview)**: Compatible with `@react-native-masked-view/masked-view` diff --git a/docs/pages/versions/unversioned/sdk/ui/drop-in-replacements/slider.mdx b/docs/pages/versions/unversioned/sdk/ui/drop-in-replacements/slider.mdx new file mode 100644 index 00000000000000..87e9a0a207ee1d --- /dev/null +++ b/docs/pages/versions/unversioned/sdk/ui/drop-in-replacements/slider.mdx @@ -0,0 +1,56 @@ +--- +title: Slider +description: A slider compatible with @react-native-community/slider. +sourceCodeUrl: 'https://github.com/expo/expo/tree/main/packages/expo-ui' +packageName: '@expo/ui' +platforms: ['android', 'ios', 'web', 'expo-go'] +--- + +import APISection from '~/components/plugins/APISection'; +import { APIInstallSection } from '~/components/plugins/InstallSection'; + +A `Slider` component with an API compatible with [`@react-native-community/slider`](https://www.npmjs.com/package/@react-native-community/slider). It uses a Material 3 `Slider` on Android, a SwiftUI `Slider` on iOS, and a native `` element on web. + +Under the hood this component wraps the platform-specific `@expo/ui` primitives: + +- **Android**: [Jetpack Compose Slider](../jetpack-compose/slider) +- **iOS**: [SwiftUI Slider](../swift-ui/slider) + +If you need lower-level control, use those primitives directly. + +## Installation + + + +## Migrating from `@react-native-community/slider` + +- Update the import from `import Slider from '@react-native-community/slider'` to `import Slider from '@expo/ui/community/slider'`. +- `onSlidingStart`, `onSlidingComplete`, `tapToSeek`, `StepMarker`, `renderStepNumber`, `thumbImage`, `minimumTrackImage`, `maximumTrackImage`, `trackImage`, `accessibilityUnits`, `accessibilityIncrements`, `testID`, and `ref.updateValue` are not yet supported. +- On iOS, `maximumTrackTintColor` and `thumbTintColor` have no visual effect — SwiftUI's `Slider` only exposes the minimum (active) track tint. `minimumTrackTintColor` works on both platforms. + +## Basic usage + +```tsx SliderExample.tsx +import { useState } from 'react'; +import { Text, View } from 'react-native'; +import Slider from '@expo/ui/community/slider'; + +export default function SliderExample() { + const [value, setValue] = useState(0.5); + + return ( + + + Value: {value.toFixed(3)} + + ); +} +``` + +## API + +```tsx +import Slider from '@expo/ui/community/slider'; +``` + + diff --git a/docs/pages/versions/v56.0.0/sdk/ui/drop-in-replacements/index.mdx b/docs/pages/versions/v56.0.0/sdk/ui/drop-in-replacements/index.mdx index 56d4c0cd81827f..075b8d48004858 100644 --- a/docs/pages/versions/v56.0.0/sdk/ui/drop-in-replacements/index.mdx +++ b/docs/pages/versions/v56.0.0/sdk/ui/drop-in-replacements/index.mdx @@ -13,4 +13,5 @@ The following components provide API-compatible replacements for popular React N - **[BottomSheet](bottomsheet)**: Compatible with `@gorhom/bottom-sheet` - **[Picker](picker)**: Compatible with `@react-native-picker/picker` - **[SegmentedControl](segmentedcontrol)**: Compatible with `@react-native-segmented-control/segmented-control` +- **[Slider](slider)**: Compatible with `@react-native-community/slider` - **[MaskedView](maskedview)**: Compatible with `@react-native-masked-view/masked-view` diff --git a/docs/pages/versions/v56.0.0/sdk/ui/drop-in-replacements/slider.mdx b/docs/pages/versions/v56.0.0/sdk/ui/drop-in-replacements/slider.mdx new file mode 100644 index 00000000000000..87e9a0a207ee1d --- /dev/null +++ b/docs/pages/versions/v56.0.0/sdk/ui/drop-in-replacements/slider.mdx @@ -0,0 +1,56 @@ +--- +title: Slider +description: A slider compatible with @react-native-community/slider. +sourceCodeUrl: 'https://github.com/expo/expo/tree/main/packages/expo-ui' +packageName: '@expo/ui' +platforms: ['android', 'ios', 'web', 'expo-go'] +--- + +import APISection from '~/components/plugins/APISection'; +import { APIInstallSection } from '~/components/plugins/InstallSection'; + +A `Slider` component with an API compatible with [`@react-native-community/slider`](https://www.npmjs.com/package/@react-native-community/slider). It uses a Material 3 `Slider` on Android, a SwiftUI `Slider` on iOS, and a native `` element on web. + +Under the hood this component wraps the platform-specific `@expo/ui` primitives: + +- **Android**: [Jetpack Compose Slider](../jetpack-compose/slider) +- **iOS**: [SwiftUI Slider](../swift-ui/slider) + +If you need lower-level control, use those primitives directly. + +## Installation + + + +## Migrating from `@react-native-community/slider` + +- Update the import from `import Slider from '@react-native-community/slider'` to `import Slider from '@expo/ui/community/slider'`. +- `onSlidingStart`, `onSlidingComplete`, `tapToSeek`, `StepMarker`, `renderStepNumber`, `thumbImage`, `minimumTrackImage`, `maximumTrackImage`, `trackImage`, `accessibilityUnits`, `accessibilityIncrements`, `testID`, and `ref.updateValue` are not yet supported. +- On iOS, `maximumTrackTintColor` and `thumbTintColor` have no visual effect — SwiftUI's `Slider` only exposes the minimum (active) track tint. `minimumTrackTintColor` works on both platforms. + +## Basic usage + +```tsx SliderExample.tsx +import { useState } from 'react'; +import { Text, View } from 'react-native'; +import Slider from '@expo/ui/community/slider'; + +export default function SliderExample() { + const [value, setValue] = useState(0.5); + + return ( + + + Value: {value.toFixed(3)} + + ); +} +``` + +## API + +```tsx +import Slider from '@expo/ui/community/slider'; +``` + + diff --git a/docs/pnpm-workspace.yaml b/docs/pnpm-workspace.yaml index 820ca2a837417c..660cf63fa8f507 100644 --- a/docs/pnpm-workspace.yaml +++ b/docs/pnpm-workspace.yaml @@ -17,3 +17,11 @@ ignoredBuiltDependencies: - '@fingerprintjs/fingerprintjs-pro-react' - esbuild - unrs-resolver + +# Reject package versions younger than 24 hours to reduce exposure to +# supply-chain attacks via freshly published malicious versions. Matches the +# root expo monorepo's gate. +minimumReleaseAge: 1440 + +minimumReleaseAgeExclude: + - '@expo/*' diff --git a/docs/public/static/data/unversioned/expo-ui/community/slider.json b/docs/public/static/data/unversioned/expo-ui/community/slider.json new file mode 100644 index 00000000000000..d215d1d5ace48a --- /dev/null +++ b/docs/public/static/data/unversioned/expo-ui/community/slider.json @@ -0,0 +1 @@ +{"schemaVersion":"2.0","id":161,"name":"@expo/ui","variant":"project","kind":1,"flags":{},"children":[{"id":162,"name":"SliderProps","variant":"declaration","kind":2097152,"flags":{},"comment":{"summary":[{"kind":"text","text":"Props for the "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":" community drop-in component.\nCompatible with "},{"kind":"code","text":"`@react-native-community/slider`"},{"kind":"text","text":"."}]},"children":[{"id":169,"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If true the user won't be able to move the slider."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"id":171,"name":"inverted","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Reverses the direction of the slider so the maximum value is on the\nleft and the minimum value is on the right."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"id":167,"name":"lowerLimit","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The lower limit value of the slider. The user won't be able to slide\nbelow this limit."}]},"type":{"type":"intrinsic","name":"number"}},{"id":173,"name":"maximumTrackTintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Color of the track to the right of the thumb."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"id":166,"name":"maximumValue","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Initial maximum value of the slider."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"1"}]}]},"type":{"type":"intrinsic","name":"number"}},{"id":172,"name":"minimumTrackTintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Color of the track to the left of the thumb."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"id":165,"name":"minimumValue","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Initial minimum value of the slider."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}},{"id":175,"name":"onValueChange","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback continuously called while the user is dragging the slider."}]},"type":{"type":"reflection","declaration":{"id":176,"name":"__type","variant":"declaration","kind":65536,"flags":{},"signatures":[{"id":177,"name":"__type","variant":"signature","kind":4096,"flags":{},"parameters":[{"id":178,"name":"value","variant":"param","kind":32768,"flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"id":170,"name":"step","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Step value of the slider. The value should be between 0 and\n(maximumValue - minimumValue). A value of 0 means continuous (no\nsnapping)."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}},{"id":179,"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Used to style and layout the Slider."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"ViewStyle"},"name":"ViewStyle","package":"react-native"}],"name":"StyleProp","package":"react-native"}},{"id":174,"name":"thumbTintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Color of the thumb."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"id":168,"name":"upperLimit","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The upper limit value of the slider. The user won't be able to slide\nabove this limit."}]},"type":{"type":"intrinsic","name":"number"}},{"id":164,"name":"value","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Initial / current value of the slider.\nBehaves like the community lib: passing a new value updates the thumb,\nbut live drag emits via "},{"kind":"code","text":"`onValueChange`"},{"kind":"text","text":" without needing external state."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}}],"groups":[{"title":"Properties","children":[169,171,167,173,166,172,165,175,170,179,174,168,164]}]},{"id":180,"name":"Slider","variant":"declaration","kind":64,"flags":{},"children":[{"id":183,"name":"displayName","variant":"declaration","kind":1024,"flags":{},"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[183]}],"signatures":[{"id":181,"name":"Slider","variant":"signature","kind":4096,"flags":{},"comment":{"summary":[{"kind":"text","text":"A drop-in replacement for "},{"kind":"code","text":"`@react-native-community/slider`"},{"kind":"text","text":" on web.\nRenders a native HTML "},{"kind":"code","text":"``"},{"kind":"text","text":" element."}]},"parameters":[{"id":182,"name":"props","variant":"param","kind":32768,"flags":{},"type":{"type":"reference","target":162,"name":"SliderProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"id":184,"name":"default","variant":"reference","kind":4194304,"flags":{},"target":180}],"groups":[{"title":"Type Aliases","children":[162]},{"title":"Functions","children":[180]},{"title":"References","children":[184]}],"packageName":"@expo/ui","readme":[{"kind":"text","text":"# @expo/ui\n\nA collection of UI components by Expo."}],"symbolIdMap":{"161":{"packageName":"@expo/ui","packagePath":"src/community/slider/index.tsx","qualifiedName":""},"162":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"SliderProps"},"164":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.value"},"165":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.minimumValue"},"166":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.maximumValue"},"167":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.lowerLimit"},"168":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.upperLimit"},"169":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.disabled"},"170":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.step"},"171":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.inverted"},"172":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.minimumTrackTintColor"},"173":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.maximumTrackTintColor"},"174":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.thumbTintColor"},"175":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.onValueChange"},"176":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type"},"177":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type"},"178":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"value"},"179":{"packageName":"@expo/ui","packagePath":"src/community/slider/types.tsx","qualifiedName":"__type.style"},"180":{"packageName":"@expo/ui","packagePath":"src/community/slider/Slider.tsx","qualifiedName":"Slider"},"181":{"packageName":"@expo/ui","packagePath":"src/community/slider/Slider.tsx","qualifiedName":"Slider"},"182":{"packageName":"@expo/ui","packagePath":"src/community/slider/Slider.tsx","qualifiedName":"props"},"183":{"packageName":"@expo/ui","packagePath":"src/community/slider/Slider.tsx","qualifiedName":"Slider.displayName"},"184":{"packageName":"@expo/ui","packagePath":"src/community/slider/index.tsx","qualifiedName":"default"}},"files":{"entries":{"1":"packages/expo-ui/src/community/slider/index.tsx","2":"packages/expo-ui/README.md","3":"packages/expo-ui"},"reflections":{"1":161,"2":161,"3":161}}} diff --git a/docs/public/static/data/unversioned/expo-ui/jetpack-compose/slider.json b/docs/public/static/data/unversioned/expo-ui/jetpack-compose/slider.json index 043b0fd02fd4dc..284bfffc1cf57e 100644 --- a/docs/public/static/data/unversioned/expo-ui/jetpack-compose/slider.json +++ b/docs/public/static/data/unversioned/expo-ui/jetpack-compose/slider.json @@ -1 +1 @@ -{"schemaVersion":"2.0","name":"expo-ui/jetpack-compose/slider","variant":"project","kind":1,"children":[{"name":"SliderColors","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Colors for slider elements. Maps directly to Material3's "},{"kind":"code","text":"`SliderDefaults.colors()`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"children":[{"name":"activeTickColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"activeTrackColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"inactiveTickColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"inactiveTrackColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"thumbColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]},{"name":"SliderProps","variant":"declaration","kind":2097152,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Slot children for custom thumb and track."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"colors","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Colors for slider elements. Maps to Material3's "},{"kind":"code","text":"`SliderDefaults.colors()`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","name":"SliderColors","package":"@expo/ui"}},{"name":"enabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the slider is enabled for user interaction."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"max","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The maximum value of the slider. Updating this value does not trigger callbacks if the current value is above "},{"kind":"code","text":"`max`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"1"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"min","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The minimum value of the slider. Updating this value does not trigger callbacks if the current value is below "},{"kind":"code","text":"`min`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"modifiers","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Modifiers for the component."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/types.ts","qualifiedName":"ModifierConfig"},"name":"ModifierConfig","package":"@expo/ui"}}},{"name":"onValueChange","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered on dragging along the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"value","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"onValueChangeFinished","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered when the user finishes changing the value (for example, lifts a finger).\nMaps to Material3's "},{"kind":"code","text":"`onValueChangeFinished`"},{"kind":"text","text":"."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"steps","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The number of steps between the minimum and maximum values, "},{"kind":"code","text":"`0`"},{"kind":"text","text":" signifies infinite steps."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"value","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The current value of the slider."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}}]},{"name":"Slider","variant":"declaration","kind":64,"children":[{"name":"Thumb","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A custom thumb slot for "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":".\nWrap any content to use as the slider's thumb indicator."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"Track","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A custom track slot for "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":".\nWrap any content to use as the slider's track."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}}],"signatures":[{"name":"Slider","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A slider component that wraps Material3's "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"SliderProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}],"packageName":"@expo/ui"} \ No newline at end of file +{"schemaVersion":"2.0","name":"expo-ui/jetpack-compose/slider","variant":"project","kind":1,"children":[{"name":"SliderColors","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Colors for slider elements. Maps directly to Material3's "},{"kind":"code","text":"`SliderDefaults.colors()`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"children":[{"name":"activeTickColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"activeTrackColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"inactiveTickColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"inactiveTrackColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"thumbColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]},{"name":"SliderProps","variant":"declaration","kind":2097152,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Slot children for custom thumb and track."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"colors","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Colors for slider elements. Maps to Material3's "},{"kind":"code","text":"`SliderDefaults.colors()`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","name":"SliderColors","package":"@expo/ui"}},{"name":"enabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the slider is enabled for user interaction."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"lowerLimit","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Lower limit the user can drag the thumb to. The visible track still\nspans "},{"kind":"code","text":"`min..max`"},{"kind":"text","text":", but the thumb stops at "},{"kind":"code","text":"`lowerLimit`"},{"kind":"text","text":" during drag."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"max","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The maximum value of the slider. Updating this value does not trigger callbacks if the current value is above "},{"kind":"code","text":"`max`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"1"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"min","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The minimum value of the slider. Updating this value does not trigger callbacks if the current value is below "},{"kind":"code","text":"`min`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"modifiers","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Modifiers for the component."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/types.ts","qualifiedName":"ModifierConfig"},"name":"ModifierConfig","package":"@expo/ui"}}},{"name":"onValueChange","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered on dragging along the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"value","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"onValueChangeFinished","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered when the user finishes changing the value (for example, lifts a finger).\nMaps to Material3's "},{"kind":"code","text":"`onValueChangeFinished`"},{"kind":"text","text":"."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"steps","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The number of steps between the minimum and maximum values, "},{"kind":"code","text":"`0`"},{"kind":"text","text":" signifies infinite steps."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"upperLimit","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Upper limit the user can drag the thumb to. The visible track still\nspans "},{"kind":"code","text":"`min..max`"},{"kind":"text","text":", but the thumb stops at "},{"kind":"code","text":"`upperLimit`"},{"kind":"text","text":" during drag."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"value","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The current value of the slider."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}}]},{"name":"Slider","variant":"declaration","kind":64,"children":[{"name":"Thumb","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A custom thumb slot for "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":".\nWrap any content to use as the slider's thumb indicator."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"Track","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A custom track slot for "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":".\nWrap any content to use as the slider's track."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}}],"signatures":[{"name":"Slider","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A slider component that wraps Material3's "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"SliderProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}],"packageName":"@expo/ui"} \ No newline at end of file diff --git a/docs/public/static/data/unversioned/expo-ui/swift-ui/slider.json b/docs/public/static/data/unversioned/expo-ui/swift-ui/slider.json index 35e2e1f9f9f5c2..2c653b1fa7f7bb 100644 --- a/docs/public/static/data/unversioned/expo-ui/swift-ui/slider.json +++ b/docs/public/static/data/unversioned/expo-ui/swift-ui/slider.json @@ -1 +1 @@ -{"schemaVersion":"2.0","name":"expo-ui/swift-ui/slider","variant":"project","kind":1,"children":[{"name":"SliderProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"label","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A label describing the slider's purpose."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"max","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The maximum value of the slider. Updating this value does not trigger callbacks if the current value is above "},{"kind":"code","text":"`max`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"maximumValueLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A label displayed at the maximum value position."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"min","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The minimum value of the slider. Updating this value does not trigger callbacks if the current value is below "},{"kind":"code","text":"`min`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"minimumValueLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A label displayed at the minimum value position."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"onEditingChanged","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered when the user starts or ends editing the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"isEditing","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"onValueChange","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered on dragging along the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"value","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"step","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The step increment for the slider."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"value","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The current value of the slider."}]},"type":{"type":"intrinsic","name":"number"}}]}},{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/swift-ui/types.ts","qualifiedName":"CommonViewModifierProps"},"name":"CommonViewModifierProps","package":"@expo/ui"}]}},{"name":"Slider","variant":"declaration","kind":64,"signatures":[{"name":"Slider","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"SliderProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}],"packageName":"@expo/ui"} \ No newline at end of file +{"schemaVersion":"2.0","name":"expo-ui/swift-ui/slider","variant":"project","kind":1,"children":[{"name":"SliderProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"label","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A label describing the slider's purpose."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"lowerLimit","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Lower limit the user can drag the thumb to. The visible track still\nspans "},{"kind":"code","text":"`min..max`"},{"kind":"text","text":", but the thumb stops at "},{"kind":"code","text":"`lowerLimit`"},{"kind":"text","text":" during drag."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"max","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The maximum value of the slider. Updating this value does not trigger callbacks if the current value is above "},{"kind":"code","text":"`max`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"maximumValueLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A label displayed at the maximum value position."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"min","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The minimum value of the slider. Updating this value does not trigger callbacks if the current value is below "},{"kind":"code","text":"`min`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"minimumValueLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A label displayed at the minimum value position."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"onEditingChanged","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered when the user starts or ends editing the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"isEditing","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"onValueChange","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered on dragging along the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"value","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"step","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The step increment for the slider."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"upperLimit","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Upper limit the user can drag the thumb to. The visible track still\nspans "},{"kind":"code","text":"`min..max`"},{"kind":"text","text":", but the thumb stops at "},{"kind":"code","text":"`upperLimit`"},{"kind":"text","text":" during drag."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"value","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The current value of the slider."}]},"type":{"type":"intrinsic","name":"number"}}]}},{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/swift-ui/types.ts","qualifiedName":"CommonViewModifierProps"},"name":"CommonViewModifierProps","package":"@expo/ui"}]}},{"name":"Slider","variant":"declaration","kind":64,"signatures":[{"name":"Slider","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"SliderProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}],"packageName":"@expo/ui"} \ No newline at end of file diff --git a/docs/public/static/data/unversioned/expo-ui/swift-ui/usenativestate.json b/docs/public/static/data/unversioned/expo-ui/swift-ui/usenativestate.json index 4435fab90f13d2..722018908bdb4c 100644 --- a/docs/public/static/data/unversioned/expo-ui/swift-ui/usenativestate.json +++ b/docs/public/static/data/unversioned/expo-ui/swift-ui/usenativestate.json @@ -1 +1 @@ -{"schemaVersion":"2.0","name":"expo-ui/swift-ui/usenativestate","variant":"project","kind":1,"children":[{"name":"ObservableState","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Observable state shared between JavaScript and native views (Jetpack Compose\non Android and SwiftUI on iOS)."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/SharedObject.ts","qualifiedName":"SharedObject"},"name":"SharedObject","package":"expo-modules-core"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"value","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The current value. Reads are safe from any thread; prefer writing from a worklet\nso the update runs on the native UI thread. Updating state from the JS thread\nmight show a development warning."}]},"type":{"type":"reference","name":"T","package":"@expo/ui","refersToTypeParameter":true}}]}}]}},{"name":"useNativeState","variant":"declaration","kind":64,"signatures":[{"name":"useNativeState","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Creates an observable native state that is automatically cleaned up when the component unmounts."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072}],"parameters":[{"name":"initialValue","variant":"param","kind":32768,"type":{"type":"reference","name":"T","package":"@expo/ui","refersToTypeParameter":true}}],"type":{"type":"reference","typeArguments":[{"type":"reference","name":"T","package":"@expo/ui","refersToTypeParameter":true}],"name":"ObservableState","package":"@expo/ui"}}]}],"packageName":"@expo/ui"} \ No newline at end of file +{"schemaVersion":"2.0","name":"expo-ui/swift-ui/usenativestate","variant":"project","kind":1,"children":[{"name":"ObservableState","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Observable state shared between JavaScript and native views (Jetpack Compose\non Android and SwiftUI on iOS)."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/SharedObject.ts","qualifiedName":"SharedObject"},"name":"SharedObject","package":"expo-modules-core"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"value","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The current value. Reads are safe from any thread; prefer writing from a worklet\nso the update runs on the native UI thread. Updating state from the JS thread\nmight show a development warning."}]},"type":{"type":"reference","name":"T","package":"@expo/ui","refersToTypeParameter":true}}]}}]}},{"name":"useNativeState","variant":"declaration","kind":64,"signatures":[{"name":"useNativeState","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Creates an observable native state that is automatically cleaned up when the\ncomponent unmounts. "},{"kind":"code","text":"`initialValue`"},{"kind":"text","text":" is captured once on the first render"}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072}],"parameters":[{"name":"initialValue","variant":"param","kind":32768,"type":{"type":"reference","name":"T","package":"@expo/ui","refersToTypeParameter":true}}],"type":{"type":"reference","typeArguments":[{"type":"reference","name":"T","package":"@expo/ui","refersToTypeParameter":true}],"name":"ObservableState","package":"@expo/ui"}}]}],"packageName":"@expo/ui"} \ No newline at end of file diff --git a/docs/public/static/data/v56.0.0/expo-ui/community/slider.json b/docs/public/static/data/v56.0.0/expo-ui/community/slider.json new file mode 100644 index 00000000000000..a25dd08e25b992 --- /dev/null +++ b/docs/public/static/data/v56.0.0/expo-ui/community/slider.json @@ -0,0 +1 @@ +{"schemaVersion":"2.0","name":"expo-ui/community/slider","variant":"project","kind":1,"children":[{"name":"SliderProps","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Props for the "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":" community drop-in component.\nCompatible with "},{"kind":"code","text":"`@react-native-community/slider`"},{"kind":"text","text":"."}]},"children":[{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If true the user won't be able to move the slider."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"inverted","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Reverses the direction of the slider so the maximum value is on the\nleft and the minimum value is on the right."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"lowerLimit","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The lower limit value of the slider. The user won't be able to slide\nbelow this limit."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"maximumTrackTintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Color of the track to the right of the thumb."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"maximumValue","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Initial maximum value of the slider."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"1"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"minimumTrackTintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Color of the track to the left of the thumb."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"minimumValue","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Initial minimum value of the slider."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"onValueChange","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback continuously called while the user is dragging the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"value","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"step","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Step value of the slider. The value should be between 0 and\n(maximumValue - minimumValue). A value of 0 means continuous (no\nsnapping)."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Used to style and layout the Slider."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"ViewStyle"},"name":"ViewStyle","package":"react-native"}],"name":"StyleProp","package":"react-native"}},{"name":"thumbTintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Color of the thumb."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"upperLimit","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The upper limit value of the slider. The user won't be able to slide\nabove this limit."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"value","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Initial / current value of the slider.\nBehaves like the community lib: passing a new value updates the thumb,\nbut live drag emits via "},{"kind":"code","text":"`onValueChange`"},{"kind":"text","text":" without needing external state."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}}]},{"name":"Slider","variant":"declaration","kind":64,"children":[{"name":"displayName","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}],"signatures":[{"name":"Slider","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A drop-in replacement for "},{"kind":"code","text":"`@react-native-community/slider`"},{"kind":"text","text":" on web.\nRenders a native HTML "},{"kind":"code","text":"``"},{"kind":"text","text":" element."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"SliderProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"default","variant":"reference","kind":4194304}],"packageName":"@expo/ui"} \ No newline at end of file diff --git a/docs/public/static/data/v56.0.0/expo-ui/jetpack-compose/slider.json b/docs/public/static/data/v56.0.0/expo-ui/jetpack-compose/slider.json index 043b0fd02fd4dc..284bfffc1cf57e 100644 --- a/docs/public/static/data/v56.0.0/expo-ui/jetpack-compose/slider.json +++ b/docs/public/static/data/v56.0.0/expo-ui/jetpack-compose/slider.json @@ -1 +1 @@ -{"schemaVersion":"2.0","name":"expo-ui/jetpack-compose/slider","variant":"project","kind":1,"children":[{"name":"SliderColors","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Colors for slider elements. Maps directly to Material3's "},{"kind":"code","text":"`SliderDefaults.colors()`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"children":[{"name":"activeTickColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"activeTrackColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"inactiveTickColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"inactiveTrackColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"thumbColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]},{"name":"SliderProps","variant":"declaration","kind":2097152,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Slot children for custom thumb and track."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"colors","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Colors for slider elements. Maps to Material3's "},{"kind":"code","text":"`SliderDefaults.colors()`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","name":"SliderColors","package":"@expo/ui"}},{"name":"enabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the slider is enabled for user interaction."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"max","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The maximum value of the slider. Updating this value does not trigger callbacks if the current value is above "},{"kind":"code","text":"`max`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"1"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"min","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The minimum value of the slider. Updating this value does not trigger callbacks if the current value is below "},{"kind":"code","text":"`min`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"modifiers","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Modifiers for the component."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/types.ts","qualifiedName":"ModifierConfig"},"name":"ModifierConfig","package":"@expo/ui"}}},{"name":"onValueChange","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered on dragging along the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"value","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"onValueChangeFinished","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered when the user finishes changing the value (for example, lifts a finger).\nMaps to Material3's "},{"kind":"code","text":"`onValueChangeFinished`"},{"kind":"text","text":"."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"steps","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The number of steps between the minimum and maximum values, "},{"kind":"code","text":"`0`"},{"kind":"text","text":" signifies infinite steps."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"value","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The current value of the slider."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}}]},{"name":"Slider","variant":"declaration","kind":64,"children":[{"name":"Thumb","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A custom thumb slot for "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":".\nWrap any content to use as the slider's thumb indicator."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"Track","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A custom track slot for "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":".\nWrap any content to use as the slider's track."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}}],"signatures":[{"name":"Slider","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A slider component that wraps Material3's "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"SliderProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}],"packageName":"@expo/ui"} \ No newline at end of file +{"schemaVersion":"2.0","name":"expo-ui/jetpack-compose/slider","variant":"project","kind":1,"children":[{"name":"SliderColors","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Colors for slider elements. Maps directly to Material3's "},{"kind":"code","text":"`SliderDefaults.colors()`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"children":[{"name":"activeTickColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"activeTrackColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"inactiveTickColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"inactiveTrackColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"thumbColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]},{"name":"SliderProps","variant":"declaration","kind":2097152,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Slot children for custom thumb and track."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"colors","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Colors for slider elements. Maps to Material3's "},{"kind":"code","text":"`SliderDefaults.colors()`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","name":"SliderColors","package":"@expo/ui"}},{"name":"enabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the slider is enabled for user interaction."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"lowerLimit","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Lower limit the user can drag the thumb to. The visible track still\nspans "},{"kind":"code","text":"`min..max`"},{"kind":"text","text":", but the thumb stops at "},{"kind":"code","text":"`lowerLimit`"},{"kind":"text","text":" during drag."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"max","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The maximum value of the slider. Updating this value does not trigger callbacks if the current value is above "},{"kind":"code","text":"`max`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"1"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"min","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The minimum value of the slider. Updating this value does not trigger callbacks if the current value is below "},{"kind":"code","text":"`min`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"modifiers","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Modifiers for the component."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/types.ts","qualifiedName":"ModifierConfig"},"name":"ModifierConfig","package":"@expo/ui"}}},{"name":"onValueChange","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered on dragging along the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"value","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"onValueChangeFinished","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered when the user finishes changing the value (for example, lifts a finger).\nMaps to Material3's "},{"kind":"code","text":"`onValueChangeFinished`"},{"kind":"text","text":"."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"steps","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The number of steps between the minimum and maximum values, "},{"kind":"code","text":"`0`"},{"kind":"text","text":" signifies infinite steps."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"upperLimit","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Upper limit the user can drag the thumb to. The visible track still\nspans "},{"kind":"code","text":"`min..max`"},{"kind":"text","text":", but the thumb stops at "},{"kind":"code","text":"`upperLimit`"},{"kind":"text","text":" during drag."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"value","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The current value of the slider."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"0"}]}]},"type":{"type":"intrinsic","name":"number"}}]},{"name":"Slider","variant":"declaration","kind":64,"children":[{"name":"Thumb","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A custom thumb slot for "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":".\nWrap any content to use as the slider's thumb indicator."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"Track","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A custom track slot for "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":".\nWrap any content to use as the slider's track."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}}],"signatures":[{"name":"Slider","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A slider component that wraps Material3's "},{"kind":"code","text":"`Slider`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"SliderProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}],"packageName":"@expo/ui"} \ No newline at end of file diff --git a/docs/public/static/data/v56.0.0/expo-ui/swift-ui/slider.json b/docs/public/static/data/v56.0.0/expo-ui/swift-ui/slider.json index 35e2e1f9f9f5c2..2c653b1fa7f7bb 100644 --- a/docs/public/static/data/v56.0.0/expo-ui/swift-ui/slider.json +++ b/docs/public/static/data/v56.0.0/expo-ui/swift-ui/slider.json @@ -1 +1 @@ -{"schemaVersion":"2.0","name":"expo-ui/swift-ui/slider","variant":"project","kind":1,"children":[{"name":"SliderProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"label","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A label describing the slider's purpose."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"max","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The maximum value of the slider. Updating this value does not trigger callbacks if the current value is above "},{"kind":"code","text":"`max`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"maximumValueLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A label displayed at the maximum value position."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"min","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The minimum value of the slider. Updating this value does not trigger callbacks if the current value is below "},{"kind":"code","text":"`min`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"minimumValueLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A label displayed at the minimum value position."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"onEditingChanged","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered when the user starts or ends editing the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"isEditing","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"onValueChange","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered on dragging along the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"value","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"step","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The step increment for the slider."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"value","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The current value of the slider."}]},"type":{"type":"intrinsic","name":"number"}}]}},{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/swift-ui/types.ts","qualifiedName":"CommonViewModifierProps"},"name":"CommonViewModifierProps","package":"@expo/ui"}]}},{"name":"Slider","variant":"declaration","kind":64,"signatures":[{"name":"Slider","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"SliderProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}],"packageName":"@expo/ui"} \ No newline at end of file +{"schemaVersion":"2.0","name":"expo-ui/swift-ui/slider","variant":"project","kind":1,"children":[{"name":"SliderProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"label","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A label describing the slider's purpose."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"lowerLimit","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Lower limit the user can drag the thumb to. The visible track still\nspans "},{"kind":"code","text":"`min..max`"},{"kind":"text","text":", but the thumb stops at "},{"kind":"code","text":"`lowerLimit`"},{"kind":"text","text":" during drag."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"max","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The maximum value of the slider. Updating this value does not trigger callbacks if the current value is above "},{"kind":"code","text":"`max`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"maximumValueLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A label displayed at the maximum value position."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"min","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The minimum value of the slider. Updating this value does not trigger callbacks if the current value is below "},{"kind":"code","text":"`min`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"minimumValueLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A label displayed at the minimum value position."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}},{"name":"onEditingChanged","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered when the user starts or ends editing the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"isEditing","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"onValueChange","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback triggered on dragging along the slider."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"value","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"step","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The step increment for the slider."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"upperLimit","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Upper limit the user can drag the thumb to. The visible track still\nspans "},{"kind":"code","text":"`min..max`"},{"kind":"text","text":", but the thumb stops at "},{"kind":"code","text":"`upperLimit`"},{"kind":"text","text":" during drag."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"value","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The current value of the slider."}]},"type":{"type":"intrinsic","name":"number"}}]}},{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/swift-ui/types.ts","qualifiedName":"CommonViewModifierProps"},"name":"CommonViewModifierProps","package":"@expo/ui"}]}},{"name":"Slider","variant":"declaration","kind":64,"signatures":[{"name":"Slider","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"SliderProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}],"packageName":"@expo/ui"} \ No newline at end of file diff --git a/docs/public/static/data/v56.0.0/expo-ui/swift-ui/usenativestate.json b/docs/public/static/data/v56.0.0/expo-ui/swift-ui/usenativestate.json index 4435fab90f13d2..722018908bdb4c 100644 --- a/docs/public/static/data/v56.0.0/expo-ui/swift-ui/usenativestate.json +++ b/docs/public/static/data/v56.0.0/expo-ui/swift-ui/usenativestate.json @@ -1 +1 @@ -{"schemaVersion":"2.0","name":"expo-ui/swift-ui/usenativestate","variant":"project","kind":1,"children":[{"name":"ObservableState","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Observable state shared between JavaScript and native views (Jetpack Compose\non Android and SwiftUI on iOS)."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/SharedObject.ts","qualifiedName":"SharedObject"},"name":"SharedObject","package":"expo-modules-core"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"value","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The current value. Reads are safe from any thread; prefer writing from a worklet\nso the update runs on the native UI thread. Updating state from the JS thread\nmight show a development warning."}]},"type":{"type":"reference","name":"T","package":"@expo/ui","refersToTypeParameter":true}}]}}]}},{"name":"useNativeState","variant":"declaration","kind":64,"signatures":[{"name":"useNativeState","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Creates an observable native state that is automatically cleaned up when the component unmounts."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072}],"parameters":[{"name":"initialValue","variant":"param","kind":32768,"type":{"type":"reference","name":"T","package":"@expo/ui","refersToTypeParameter":true}}],"type":{"type":"reference","typeArguments":[{"type":"reference","name":"T","package":"@expo/ui","refersToTypeParameter":true}],"name":"ObservableState","package":"@expo/ui"}}]}],"packageName":"@expo/ui"} \ No newline at end of file +{"schemaVersion":"2.0","name":"expo-ui/swift-ui/usenativestate","variant":"project","kind":1,"children":[{"name":"ObservableState","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Observable state shared between JavaScript and native views (Jetpack Compose\non Android and SwiftUI on iOS)."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/SharedObject.ts","qualifiedName":"SharedObject"},"name":"SharedObject","package":"expo-modules-core"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"value","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The current value. Reads are safe from any thread; prefer writing from a worklet\nso the update runs on the native UI thread. Updating state from the JS thread\nmight show a development warning."}]},"type":{"type":"reference","name":"T","package":"@expo/ui","refersToTypeParameter":true}}]}}]}},{"name":"useNativeState","variant":"declaration","kind":64,"signatures":[{"name":"useNativeState","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Creates an observable native state that is automatically cleaned up when the\ncomponent unmounts. "},{"kind":"code","text":"`initialValue`"},{"kind":"text","text":" is captured once on the first render"}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072}],"parameters":[{"name":"initialValue","variant":"param","kind":32768,"type":{"type":"reference","name":"T","package":"@expo/ui","refersToTypeParameter":true}}],"type":{"type":"reference","typeArguments":[{"type":"reference","name":"T","package":"@expo/ui","refersToTypeParameter":true}],"name":"ObservableState","package":"@expo/ui"}}]}],"packageName":"@expo/ui"} \ No newline at end of file diff --git a/packages/@expo/cli/CHANGELOG.md b/packages/@expo/cli/CHANGELOG.md index 3938996b3ff153..f6210a0a9d2697 100644 --- a/packages/@expo/cli/CHANGELOG.md +++ b/packages/@expo/cli/CHANGELOG.md @@ -8,6 +8,16 @@ ### 🐛 Bug fixes +### 💡 Others + +## 56.1.2 — 2026-05-12 + +_This version does not introduce any user-facing changes._ + +## 56.1.1 — 2026-05-11 + +### 🐛 Bug fixes + - Fix regression hiding stderr output on fatal exit ([#45641](https://github.com/expo/expo/pull/45641) by [@kitten](https://github.com/kitten)) ### 💡 Others diff --git a/packages/@expo/cli/package.json b/packages/@expo/cli/package.json index b1031c94cea024..a76463bca8ee0d 100644 --- a/packages/@expo/cli/package.json +++ b/packages/@expo/cli/package.json @@ -1,6 +1,6 @@ { "name": "@expo/cli", - "version": "56.1.0", + "version": "56.1.2", "description": "The Expo CLI", "main": "main.js", "bin": { @@ -55,18 +55,18 @@ "@expo/devcert": "^1.2.1", "@expo/env": "workspace:~2.2.0", "@expo/image-utils": "workspace:^0.9.2", - "@expo/inline-modules": "workspace:^0.0.4", + "@expo/inline-modules": "workspace:^0.0.5", "@expo/json-file": "workspace:^10.1.0", - "@expo/log-box": "workspace:^56.0.6", + "@expo/log-box": "workspace:^56.0.7", "@expo/metro": "~56.0.0", - "@expo/metro-config": "workspace:~56.0.5", - "@expo/metro-file-map": "workspace:^56.0.0", + "@expo/metro-config": "workspace:~56.0.6", + "@expo/metro-file-map": "workspace:^56.0.1", "@expo/osascript": "workspace:^2.5.0", "@expo/package-manager": "workspace:^1.11.0", "@expo/plist": "workspace:^0.6.0", - "@expo/prebuild-config": "workspace:^56.0.4", + "@expo/prebuild-config": "workspace:^56.0.5", "@expo/require-utils": "workspace:^56.1.0", - "@expo/router-server": "workspace:^56.0.5", + "@expo/router-server": "workspace:^56.0.6", "@expo/schema-utils": "workspace:^56.0.0", "@expo/spawn-async": "^1.7.2", "@expo/ws-tunnel": "^1.0.1", diff --git a/packages/@expo/cli/src/start/server/middleware/ManifestMiddleware.ts b/packages/@expo/cli/src/start/server/middleware/ManifestMiddleware.ts index 8b7f1e4ce8f346..1831900007d339 100644 --- a/packages/@expo/cli/src/start/server/middleware/ManifestMiddleware.ts +++ b/packages/@expo/cli/src/start/server/middleware/ManifestMiddleware.ts @@ -16,6 +16,7 @@ import { resolveGoogleServicesFile, resolveManifestAssets } from './resolveAsset import type { RuntimePlatform } from './resolvePlatform'; import { parsePlatformHeader } from './resolvePlatform'; import type { ServerNext, ServerRequest, ServerResponse } from './server.types'; +import { getActorDisplayName, getUserAsync } from '../../../api/user/user'; import { isEnableHermesManaged } from '../../../export/exportHermes'; import * as Log from '../../../log'; import { env } from '../../../utils/env'; @@ -110,10 +111,15 @@ export abstract class ManifestMiddleware< const isHermesEnabled = isEnableHermesManaged(projectConfig.exp, platform); + // Resolve the signed-in CLI user to pass through the manifest + const user = await getUserAsync(); + const username = getActorDisplayName(user); + // Create the manifest and set fields within it const expoGoConfig = this.getExpoGoConfig({ mainModuleName, hostname, + username: username !== 'anonymous' ? username : undefined, }); const hostUri = this.options.constructUrl({ scheme: '', hostname }); @@ -229,9 +235,11 @@ export abstract class ManifestMiddleware< private getExpoGoConfig({ mainModuleName, hostname, + username, }: { mainModuleName: string; hostname?: string | null; + username?: string; }): ExpoGoConfig { return { // localhost:8081 @@ -247,6 +255,8 @@ export abstract class ManifestMiddleware< }, // Indicates the name of the main bundle. mainModuleName, + // The signed-in CLI username, used by Expo Go to verify account match. + ...(username ? { username } : undefined), }; } diff --git a/packages/@expo/cli/src/start/server/middleware/__tests__/ExpoGoManifestHandlerMiddleware-test.ts b/packages/@expo/cli/src/start/server/middleware/__tests__/ExpoGoManifestHandlerMiddleware-test.ts index 6c4f309b33dca2..43db75b388ea2f 100644 --- a/packages/@expo/cli/src/start/server/middleware/__tests__/ExpoGoManifestHandlerMiddleware-test.ts +++ b/packages/@expo/cli/src/start/server/middleware/__tests__/ExpoGoManifestHandlerMiddleware-test.ts @@ -198,7 +198,7 @@ describe('_getManifestResponseAsync', () => { middleware._resolveProjectSettingsAsync = jest.fn( async () => ({ - expoGoConfig: {}, + expoGoConfig: { username: 'wat' }, hostUri: 'https://localhost:8081', bundleUrl: 'https://localhost:8081/bundle.js', exp: { @@ -264,7 +264,7 @@ describe('_getManifestResponseAsync', () => { hostUri: 'https://localhost:8081', slug: 'slug', }, - expoGo: {}, + expoGo: { username: 'wat' }, scopeKey: expect.stringMatching(/@anonymous\/.*/), }, }); @@ -324,7 +324,7 @@ describe('_getManifestResponseAsync', () => { hostUri: 'https://localhost:8081', slug: 'slug', }, - expoGo: {}, + expoGo: { username: 'wat' }, scopeKey: expect.stringMatching(/@anonymous\/.*/), }, }); @@ -391,7 +391,7 @@ describe('_getManifestResponseAsync', () => { hostUri: 'https://localhost:8081', slug: 'slug', }, - expoGo: {}, + expoGo: { username: 'wat' }, scopeKey: expect.stringMatching(/@anonymous\/.*/), }, }); @@ -457,7 +457,7 @@ describe('_getManifestResponseAsync', () => { projectId: 'projectId', }, expoClient: expect.anything(), - expoGo: {}, + expoGo: { username: 'wat' }, scopeKey: expect.stringMatching(/@anonymous\/.*/), }, }); @@ -505,7 +505,7 @@ describe('_getManifestResponseAsync', () => { projectId: 'projectId', }, expoClient: expect.anything(), - expoGo: {}, + expoGo: { username: 'wat' }, scopeKey: 'scope-key', }, }); @@ -574,7 +574,7 @@ describe('_getManifestResponseAsync', () => { projectId: 'projectId', }, expoClient: expect.anything(), - expoGo: {}, + expoGo: { username: 'wat' }, scopeKey: expect.stringMatching(/@anonymous\/.*/), }, }); @@ -636,7 +636,7 @@ describe('_getManifestResponseAsync', () => { projectId: 'projectId', }, expoClient: expect.anything(), - expoGo: {}, + expoGo: { username: 'wat' }, scopeKey: 'scope-key', }, }); @@ -679,7 +679,7 @@ describe('_getManifestResponseAsync', () => { projectId: 'projectId', }, expoClient: expect.anything(), - expoGo: {}, + expoGo: { username: 'wat' }, scopeKey: expect.stringMatching(/@anonymous\/.*/), }, }); @@ -719,7 +719,7 @@ describe('_getManifestResponseAsync', () => { projectId: 'projectId', }, expoClient: expect.anything(), - expoGo: {}, + expoGo: { username: 'wat' }, scopeKey: expect.stringMatching(/@anonymous\/.*/), }, }); diff --git a/packages/@expo/config/src/Config.types.ts b/packages/@expo/config/src/Config.types.ts index 51360aaa3ab004..d202d8c0540046 100644 --- a/packages/@expo/config/src/Config.types.ts +++ b/packages/@expo/config/src/Config.types.ts @@ -90,6 +90,7 @@ export type ExpoGoConfig = { packagerOpts: { [key: string]: any; }; + username?: string; }; export type EASConfig = { diff --git a/packages/@expo/inline-modules/package.json b/packages/@expo/inline-modules/package.json index 420f34ebe4b8db..084f8244ce98bf 100644 --- a/packages/@expo/inline-modules/package.json +++ b/packages/@expo/inline-modules/package.json @@ -1,6 +1,6 @@ { "name": "@expo/inline-modules", - "version": "0.0.4", + "version": "0.0.5", "description": "The Expo inline modules", "main": "build/index.js", "scripts": { diff --git a/packages/@expo/local-build-cache-provider/CHANGELOG.md b/packages/@expo/local-build-cache-provider/CHANGELOG.md index f2a8f20d91d6cb..458b3d5c62cf08 100644 --- a/packages/@expo/local-build-cache-provider/CHANGELOG.md +++ b/packages/@expo/local-build-cache-provider/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.3 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.2 — 2026-05-06 _This version does not introduce any user-facing changes._ diff --git a/packages/@expo/local-build-cache-provider/package.json b/packages/@expo/local-build-cache-provider/package.json index 00619d79e92b51..4d8da9b3060b09 100644 --- a/packages/@expo/local-build-cache-provider/package.json +++ b/packages/@expo/local-build-cache-provider/package.json @@ -1,6 +1,6 @@ { "name": "@expo/local-build-cache-provider", - "version": "56.0.2", + "version": "56.0.3", "description": "Local build cache provider for Expo", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/@expo/log-box/CHANGELOG.md b/packages/@expo/log-box/CHANGELOG.md index 19f588a081afc6..67edc3b400937d 100644 --- a/packages/@expo/log-box/CHANGELOG.md +++ b/packages/@expo/log-box/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.7 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.6 — 2026-05-08 ### 🐛 Bug fixes diff --git a/packages/@expo/log-box/android/build.gradle b/packages/@expo/log-box/android/build.gradle index 8a5432869b34dd..f86270a6f106b0 100644 --- a/packages/@expo/log-box/android/build.gradle +++ b/packages/@expo/log-box/android/build.gradle @@ -6,7 +6,7 @@ plugins { } group = 'host.exp.exponent' -version = '56.0.6' +version = '56.0.7' expoModule { canBePublished false @@ -18,7 +18,7 @@ android { namespace "expo.modules.logbox" defaultConfig { versionCode 1 - versionName "56.0.6" + versionName "56.0.7" buildConfigField "boolean", "EXPO_UNSTABLE_LOG_BOX", isEnabled ? "true" : "false" } diff --git a/packages/@expo/log-box/package.json b/packages/@expo/log-box/package.json index 09d8d0fcfc77e9..885aaaacb95953 100644 --- a/packages/@expo/log-box/package.json +++ b/packages/@expo/log-box/package.json @@ -1,6 +1,6 @@ { "name": "@expo/log-box", - "version": "56.0.6", + "version": "56.0.7", "main": "app/index.ts", "scripts": { "start": "expo start", diff --git a/packages/@expo/metro-config/CHANGELOG.md b/packages/@expo/metro-config/CHANGELOG.md index 4914fb46b1cf16..c9b553b1c3c2b8 100644 --- a/packages/@expo/metro-config/CHANGELOG.md +++ b/packages/@expo/metro-config/CHANGELOG.md @@ -4,14 +4,20 @@ ### 🛠 Breaking changes -- Replace source-map representation used internally, and source-map format returned by transformer, reducing peak and retained memory usage ([#45594](https://github.com/expo/expo/pull/45594) by [@kitten](https://github.com/kitten)) - ### 🎉 New features ### 🐛 Bug fixes ### 💡 Others +## 56.0.6 — 2026-05-11 + +### 🛠 Breaking changes + +- Replace source-map representation used internally, and source-map format returned by transformer, reducing peak and retained memory usage ([#45594](https://github.com/expo/expo/pull/45594) by [@kitten](https://github.com/kitten)) + +### 💡 Others + - Bump to `postcss@^8.5.14` ([#45626](https://github.com/expo/expo/pull/45626) by [@kitten](https://github.com/kitten)) ## 56.0.5 — 2026-05-08 diff --git a/packages/@expo/metro-config/package.json b/packages/@expo/metro-config/package.json index 34e7a73f93a706..4a8113afce0fa7 100644 --- a/packages/@expo/metro-config/package.json +++ b/packages/@expo/metro-config/package.json @@ -1,6 +1,6 @@ { "name": "@expo/metro-config", - "version": "56.0.5", + "version": "56.0.6", "description": "A Metro config for running React Native projects with the Metro bundler", "main": "build/ExpoMetroConfig.js", "types": "build/ExpoMetroConfig.d.ts", diff --git a/packages/@expo/metro-file-map/CHANGELOG.md b/packages/@expo/metro-file-map/CHANGELOG.md index 0ea8b81b9be6e3..a49e1cd1854e17 100644 --- a/packages/@expo/metro-file-map/CHANGELOG.md +++ b/packages/@expo/metro-file-map/CHANGELOG.md @@ -8,6 +8,12 @@ ### 🐛 Bug fixes +### 💡 Others + +## 56.0.1 — 2026-05-11 + +### 🐛 Bug fixes + - Fix Windows path resolution for cross-device resolved paths ([#45648](https://github.com/expo/expo/pull/45648) by [@kitten](https://github.com/kitten)) ### 💡 Others diff --git a/packages/@expo/metro-file-map/package.json b/packages/@expo/metro-file-map/package.json index 9829d7c3bfd5fa..811ad91d9f3602 100644 --- a/packages/@expo/metro-file-map/package.json +++ b/packages/@expo/metro-file-map/package.json @@ -1,6 +1,6 @@ { "name": "@expo/metro-file-map", - "version": "56.0.0", + "version": "56.0.1", "description": "A metro-file-map fork for Expo used with the Metro bundler", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/@expo/metro-runtime/CHANGELOG.md b/packages/@expo/metro-runtime/CHANGELOG.md index c89e8cc0306899..8b4422ced6c509 100644 --- a/packages/@expo/metro-runtime/CHANGELOG.md +++ b/packages/@expo/metro-runtime/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-12 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 ### 💡 Others diff --git a/packages/@expo/metro-runtime/package.json b/packages/@expo/metro-runtime/package.json index e80094d5f6d37b..e452ed3bf02e53 100644 --- a/packages/@expo/metro-runtime/package.json +++ b/packages/@expo/metro-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@expo/metro-runtime", - "version": "56.0.5", + "version": "56.0.6", "description": "Tools for making advanced Metro bundler features work", "sideEffects": true, "main": "src/index.ts", @@ -38,7 +38,7 @@ "url": "https://github.com/expo/expo.git" }, "peerDependencies": { - "@expo/log-box": "workspace:^56.0.6", + "@expo/log-box": "workspace:^56.0.7", "expo": "*", "react": "*", "react-dom": "*", @@ -50,7 +50,7 @@ } }, "dependencies": { - "@expo/log-box": "workspace:^56.0.6", + "@expo/log-box": "workspace:^56.0.7", "anser": "^1.4.9", "stacktrace-parser": "^0.1.10", "pretty-format": "^29.7.0", diff --git a/packages/@expo/prebuild-config/CHANGELOG.md b/packages/@expo/prebuild-config/CHANGELOG.md index 5fe8919ecb50f1..718b41e93742e4 100644 --- a/packages/@expo/prebuild-config/CHANGELOG.md +++ b/packages/@expo/prebuild-config/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.5 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.4 — 2026-05-08 ### 🐛 Bug fixes diff --git a/packages/@expo/prebuild-config/package.json b/packages/@expo/prebuild-config/package.json index 98a7955b72b1eb..0c5e82720b5829 100644 --- a/packages/@expo/prebuild-config/package.json +++ b/packages/@expo/prebuild-config/package.json @@ -1,6 +1,6 @@ { "name": "@expo/prebuild-config", - "version": "56.0.4", + "version": "56.0.5", "description": "Get the prebuild config", "main": "build/index.js", "scripts": { @@ -45,7 +45,7 @@ "@expo/image-utils": "workspace:^0.9.2", "@expo/json-file": "workspace:^10.1.0", "@react-native/normalize-colors": "0.85.3", - "expo-modules-autolinking": "workspace:~56.0.3", + "expo-modules-autolinking": "workspace:~56.0.4", "debug": "^4.3.1", "resolve-from": "^5.0.0", "semver": "^7.6.0" diff --git a/packages/@expo/router-server/CHANGELOG.md b/packages/@expo/router-server/CHANGELOG.md index 516f89658f763f..b38ee8c1e8212b 100644 --- a/packages/@expo/router-server/CHANGELOG.md +++ b/packages/@expo/router-server/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-12 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/@expo/router-server/package.json b/packages/@expo/router-server/package.json index 34d973dc76a5bc..75113490893010 100644 --- a/packages/@expo/router-server/package.json +++ b/packages/@expo/router-server/package.json @@ -1,6 +1,6 @@ { "name": "@expo/router-server", - "version": "56.0.5", + "version": "56.0.6", "description": "Expo Router is a file-based router for React Native and web applications.", "author": "650 Industries, Inc.", "license": "MIT", @@ -34,9 +34,9 @@ "expo" ], "peerDependencies": { - "@expo/metro-runtime": "workspace:^56.0.5", + "@expo/metro-runtime": "workspace:^56.0.6", "expo": "*", - "expo-constants": "workspace:^56.0.6", + "expo-constants": "workspace:^56.0.7", "expo-font": "workspace:^56.0.3", "expo-router": "*", "expo-server": "workspace:^56.0.0", diff --git a/packages/babel-preset-expo/CHANGELOG.md b/packages/babel-preset-expo/CHANGELOG.md index 244d05ebf76695..74ab564b9f202e 100644 --- a/packages/babel-preset-expo/CHANGELOG.md +++ b/packages/babel-preset-expo/CHANGELOG.md @@ -8,12 +8,16 @@ ### 🐛 Bug fixes +### 💡 Others + +## 56.0.6 — 2026-05-11 + +### 🐛 Bug fixes + - Apply fix-up transform for Hermes v1 250829098 resolving undefined for async arrow functions with non-simple params ([#45601](https://github.com/expo/expo/pull/45601) by [@kitten](https://github.com/kitten)) - Apply fix-up transform for Hermes v1 250829098 misdeclaring classes in finally blocks ([#45601](https://github.com/expo/expo/pull/45601) by [@kitten](https://github.com/kitten)) - Apply fix-up transform for Hermes v1 250829098 mishandling super.prop accesses in computed object property methods ([#45601](https://github.com/expo/expo/pull/45601) by [@kitten](https://github.com/kitten)) -### 💡 Others - ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/babel-preset-expo/package.json b/packages/babel-preset-expo/package.json index be9c1bfc291fb1..d55693e4186907 100644 --- a/packages/babel-preset-expo/package.json +++ b/packages/babel-preset-expo/package.json @@ -1,6 +1,6 @@ { "name": "babel-preset-expo", - "version": "56.0.5", + "version": "56.0.6", "description": "The Babel preset for Expo projects", "main": "build/index.js", "files": [ @@ -41,7 +41,7 @@ "peerDependencies": { "@babel/runtime": "^7.20.0", "expo": "*", - "expo-widgets": "workspace:^56.0.5", + "expo-widgets": "workspace:^56.0.6", "react-refresh": ">=0.14.0 <1.0.0" }, "peerDependenciesMeta": { diff --git a/packages/expo-app-metrics/package.json b/packages/expo-app-metrics/package.json index 7a5abee43c0fb8..fafb1665bbf5e3 100644 --- a/packages/expo-app-metrics/package.json +++ b/packages/expo-app-metrics/package.json @@ -1,7 +1,7 @@ { "name": "expo-app-metrics", "title": "Expo App Metrics", - "version": "56.0.5", + "version": "56.0.6", "description": "Expo module that collects app startup, frame rate, memory, and session metrics", "main": "src/index.ts", "types": "build/index.d.ts", diff --git a/packages/expo-asset/CHANGELOG.md b/packages/expo-asset/CHANGELOG.md index 61d735ee1d9acd..54ceab88e61f54 100644 --- a/packages/expo-asset/CHANGELOG.md +++ b/packages/expo-asset/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.7 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.6 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-asset/android/build.gradle b/packages/expo-asset/android/build.gradle index 891604e6dc3775..fa9fbd01709e14 100644 --- a/packages/expo-asset/android/build.gradle +++ b/packages/expo-asset/android/build.gradle @@ -4,13 +4,13 @@ plugins { } group = 'expo.modules.asset' -version = '56.0.6' +version = '56.0.7' android { namespace "expo.modules.asset" defaultConfig { versionCode 1 - versionName "56.0.6" + versionName "56.0.7" } } diff --git a/packages/expo-asset/package.json b/packages/expo-asset/package.json index b9367b578e4ef0..47ed75f8a02add 100644 --- a/packages/expo-asset/package.json +++ b/packages/expo-asset/package.json @@ -1,6 +1,6 @@ { "name": "expo-asset", - "version": "56.0.6", + "version": "56.0.7", "description": "An Expo universal module to download assets and pass them into other APIs", "main": "build/index.js", "types": "build/index.d.ts", @@ -49,7 +49,7 @@ }, "dependencies": { "@expo/image-utils": "workspace:^0.9.2", - "expo-constants": "workspace:~56.0.6" + "expo-constants": "workspace:~56.0.7" }, "devDependencies": { "@testing-library/react-native": "^13.3.0", diff --git a/packages/expo-audio/CHANGELOG.md b/packages/expo-audio/CHANGELOG.md index a2d1ccc4a89863..9aa465034bb9dc 100644 --- a/packages/expo-audio/CHANGELOG.md +++ b/packages/expo-audio/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.4 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.3 — 2026-05-06 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-audio/android/build.gradle b/packages/expo-audio/android/build.gradle index 261a892d4ea9e6..d401690f6c401a 100644 --- a/packages/expo-audio/android/build.gradle +++ b/packages/expo-audio/android/build.gradle @@ -4,13 +4,13 @@ plugins { } group = 'expo.modules.audio' -version = '56.0.3' +version = '56.0.4' android { namespace "expo.modules.audio" defaultConfig { versionCode 1 - versionName "56.0.3" + versionName "56.0.4" } compileOptions { diff --git a/packages/expo-audio/package.json b/packages/expo-audio/package.json index cde03e5d99c13d..b7ec6591427fa4 100644 --- a/packages/expo-audio/package.json +++ b/packages/expo-audio/package.json @@ -1,7 +1,7 @@ { "name": "expo-audio", "title": "Expo Audio", - "version": "56.0.3", + "version": "56.0.4", "description": "A cross-platform audio library for React Native and Expo apps.", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/expo-auth-session/CHANGELOG.md b/packages/expo-auth-session/CHANGELOG.md index 3d80227303eb23..4238dd48048ed8 100644 --- a/packages/expo-auth-session/CHANGELOG.md +++ b/packages/expo-auth-session/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.5 — 2026-05-12 + +_This version does not introduce any user-facing changes._ + ## 56.0.4 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-auth-session/package.json b/packages/expo-auth-session/package.json index 580a3bdbca2fd3..839c25a4df2925 100644 --- a/packages/expo-auth-session/package.json +++ b/packages/expo-auth-session/package.json @@ -1,6 +1,6 @@ { "name": "expo-auth-session", - "version": "56.0.4", + "version": "56.0.5", "description": "Expo module for browser-based authentication", "main": "build/index.js", "types": "build/index.d.ts", @@ -34,9 +34,9 @@ "homepage": "https://docs.expo.dev/versions/latest/sdk/auth-session", "dependencies": { "expo-application": "workspace:~56.0.3", - "expo-constants": "workspace:~56.0.6", + "expo-constants": "workspace:~56.0.7", "expo-crypto": "workspace:~56.0.3", - "expo-linking": "workspace:~56.0.4", + "expo-linking": "workspace:~56.0.5", "expo-web-browser": "workspace:~56.0.4", "invariant": "^2.2.4" }, diff --git a/packages/expo-background-fetch/CHANGELOG.md b/packages/expo-background-fetch/CHANGELOG.md index d12ad3fb523f61..bb8c7778afde62 100644 --- a/packages/expo-background-fetch/CHANGELOG.md +++ b/packages/expo-background-fetch/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-background-fetch/android/build.gradle b/packages/expo-background-fetch/android/build.gradle index 8c6f0aedbeab67..48dfb9f9b63886 100644 --- a/packages/expo-background-fetch/android/build.gradle +++ b/packages/expo-background-fetch/android/build.gradle @@ -4,13 +4,13 @@ plugins { } group = 'host.exp.exponent' -version = '56.0.5' +version = '56.0.6' android { namespace "expo.modules.backgroundfetch" defaultConfig { versionCode 23 - versionName "56.0.5" + versionName "56.0.6" consumerProguardFiles("proguard-rules.pro") } } diff --git a/packages/expo-background-fetch/package.json b/packages/expo-background-fetch/package.json index 0b7753e8850aff..1cce5d313719aa 100644 --- a/packages/expo-background-fetch/package.json +++ b/packages/expo-background-fetch/package.json @@ -1,6 +1,6 @@ { "name": "expo-background-fetch", - "version": "56.0.5", + "version": "56.0.6", "description": "Expo universal module for BackgroundFetch API", "main": "build/BackgroundFetch.js", "types": "build/BackgroundFetch.d.ts", @@ -32,7 +32,7 @@ "license": "MIT", "homepage": "https://docs.expo.dev/versions/latest/sdk/background-fetch/", "dependencies": { - "expo-task-manager": "workspace:~56.0.5" + "expo-task-manager": "workspace:~56.0.6" }, "devDependencies": { "@types/node": "^22.14.0", diff --git a/packages/expo-background-task/CHANGELOG.md b/packages/expo-background-task/CHANGELOG.md index 0bc547995eb9ea..94ac080d91f1b6 100644 --- a/packages/expo-background-task/CHANGELOG.md +++ b/packages/expo-background-task/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-background-task/android/build.gradle b/packages/expo-background-task/android/build.gradle index 87764e49216628..da979b377ff85c 100644 --- a/packages/expo-background-task/android/build.gradle +++ b/packages/expo-background-task/android/build.gradle @@ -4,13 +4,13 @@ plugins { } group = 'host.exp.exponent' -version = '56.0.5' +version = '56.0.6' android { namespace "expo.modules.backgroundtask" defaultConfig { versionCode 23 - versionName "56.0.5" + versionName "56.0.6" consumerProguardFiles("proguard-rules.pro") } } diff --git a/packages/expo-background-task/package.json b/packages/expo-background-task/package.json index 3a8d5e2d188fd3..06c17cc569016c 100644 --- a/packages/expo-background-task/package.json +++ b/packages/expo-background-task/package.json @@ -1,6 +1,6 @@ { "name": "expo-background-task", - "version": "56.0.5", + "version": "56.0.6", "description": "Expo Android and iOS module for Background Task APIs", "main": "build/BackgroundTask.js", "types": "build/BackgroundTask.d.ts", @@ -31,7 +31,7 @@ "license": "MIT", "homepage": "https://docs.expo.dev/versions/latest/sdk/background-task/", "dependencies": { - "expo-task-manager": "workspace:~56.0.5" + "expo-task-manager": "workspace:~56.0.6" }, "devDependencies": { "expo": "workspace:*", diff --git a/packages/expo-brownfield/CHANGELOG.md b/packages/expo-brownfield/CHANGELOG.md index 18bc5f7e39e444..eaa0a2ccae8f28 100644 --- a/packages/expo-brownfield/CHANGELOG.md +++ b/packages/expo-brownfield/CHANGELOG.md @@ -8,10 +8,14 @@ ### 🐛 Bug fixes -- Fix reading updates app.manifest and meta-data tags ([#45655](https://github.com/expo/expo/pull/45655) by [@gabrieldonadel](https://github.com/gabrieldonadel)) - ### 💡 Others +## 56.0.6 — 2026-05-11 + +### 🐛 Bug fixes + +- Fix reading updates app.manifest and meta-data tags ([#45655](https://github.com/expo/expo/pull/45655) by [@gabrieldonadel](https://github.com/gabrieldonadel)) + ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-brownfield/android/build.gradle b/packages/expo-brownfield/android/build.gradle index c6d546eafb4583..78fbecd568a507 100644 --- a/packages/expo-brownfield/android/build.gradle +++ b/packages/expo-brownfield/android/build.gradle @@ -4,7 +4,7 @@ plugins { } group = 'expo.modules.brownfield' -version = '56.0.5' +version = '56.0.6' expoModule { canBePublished false @@ -14,7 +14,7 @@ android { namespace "expo.modules.brownfield" defaultConfig { versionCode 1 - versionName '56.0.5' + versionName '56.0.6' } } diff --git a/packages/expo-brownfield/package.json b/packages/expo-brownfield/package.json index 5807bbd1f5469d..ca95b10d7fa10c 100644 --- a/packages/expo-brownfield/package.json +++ b/packages/expo-brownfield/package.json @@ -1,6 +1,6 @@ { "name": "expo-brownfield", - "version": "56.0.5", + "version": "56.0.6", "description": "Toolkit and APIs for adding brownfield setup to Expo projects", "main": "./build/index.js", "types": "./build/index.d.ts", @@ -53,7 +53,7 @@ "chalk": "^4.1.2", "commander": "^14.0.3", "diff": "^5.2.0", - "expo-build-properties": "workspace:~56.0.5", + "expo-build-properties": "workspace:~56.0.6", "expo-manifests": "workspace:~56.0.1", "ora": "^5.4.1", "prompts": "^2.4.2" diff --git a/packages/expo-build-properties/CHANGELOG.md b/packages/expo-build-properties/CHANGELOG.md index 89ea50235ffeb7..5588caba7629a1 100644 --- a/packages/expo-build-properties/CHANGELOG.md +++ b/packages/expo-build-properties/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-build-properties/package.json b/packages/expo-build-properties/package.json index 5c0d1529c9bcb4..3d72adeca11cd9 100644 --- a/packages/expo-build-properties/package.json +++ b/packages/expo-build-properties/package.json @@ -1,6 +1,6 @@ { "name": "expo-build-properties", - "version": "56.0.5", + "version": "56.0.6", "description": "Config plugin to customize native build properties on prebuild", "main": "build/withBuildProperties.js", "types": "build/withBuildProperties.d.ts", diff --git a/packages/expo-codemod/CHANGELOG.md b/packages/expo-codemod/CHANGELOG.md index 82190918425e45..78f750eee209e5 100644 --- a/packages/expo-codemod/CHANGELOG.md +++ b/packages/expo-codemod/CHANGELOG.md @@ -6,12 +6,16 @@ ### 🎉 New features -- Warn when no paths are specified ([#45411](https://github.com/expo/expo/pull/45411) by [@Ubax](https://github.com/Ubax)) - ### 🐛 Bug fixes ### 💡 Others +## 56.0.3 — 2026-05-11 + +### 🎉 New features + +- Warn when no paths are specified ([#45411](https://github.com/expo/expo/pull/45411) by [@Ubax](https://github.com/Ubax)) + ## 56.0.2 — 2026-05-08 ### 🎉 New features diff --git a/packages/expo-codemod/package.json b/packages/expo-codemod/package.json index 3f2ca8f929bd84..5168b158e6d237 100644 --- a/packages/expo-codemod/package.json +++ b/packages/expo-codemod/package.json @@ -1,6 +1,6 @@ { "name": "expo-codemod", - "version": "56.0.2", + "version": "56.0.3", "description": "Codemods for migrating Expo apps between SDK versions", "license": "MIT", "keywords": [ diff --git a/packages/expo-constants/CHANGELOG.md b/packages/expo-constants/CHANGELOG.md index 18d9d869803e3d..fbe18b4fb6ed3f 100644 --- a/packages/expo-constants/CHANGELOG.md +++ b/packages/expo-constants/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.7 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.6 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-constants/android/build.gradle b/packages/expo-constants/android/build.gradle index 9bfd13186c907e..069c5ec484a5ba 100644 --- a/packages/expo-constants/android/build.gradle +++ b/packages/expo-constants/android/build.gradle @@ -6,7 +6,7 @@ plugins { apply from: "../scripts/get-app-config-android.gradle" group = 'host.exp.exponent' -version = '56.0.6' +version = '56.0.7' expoModule { // We can't prebuild the module because we need to apply `get-app-config-android.gradle` script. @@ -17,6 +17,6 @@ android { namespace "expo.modules.constants" defaultConfig { versionCode 33 - versionName "56.0.6" + versionName "56.0.7" } } diff --git a/packages/expo-constants/package.json b/packages/expo-constants/package.json index 6f665317b81bf9..ad800743229ae3 100644 --- a/packages/expo-constants/package.json +++ b/packages/expo-constants/package.json @@ -1,6 +1,6 @@ { "name": "expo-constants", - "version": "56.0.6", + "version": "56.0.7", "description": "Provides system information that remains constant throughout the lifetime of your app.", "main": "build/Constants.js", "types": "build/Constants.d.ts", diff --git a/packages/expo-dev-client/CHANGELOG.md b/packages/expo-dev-client/CHANGELOG.md index 2e13ebdc7f7098..22b24cd5e5f6a5 100644 --- a/packages/expo-dev-client/CHANGELOG.md +++ b/packages/expo-dev-client/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 ### 💡 Others diff --git a/packages/expo-dev-client/android/build.gradle b/packages/expo-dev-client/android/build.gradle index 74bcd32e470dce..a81085cf4a5e03 100644 --- a/packages/expo-dev-client/android/build.gradle +++ b/packages/expo-dev-client/android/build.gradle @@ -8,13 +8,13 @@ expoModule { } group = "host.exp.exponent" -version = "56.0.5" +version = "56.0.6" android { namespace "expo.modules.devclient" defaultConfig { versionCode 1 - versionName "56.0.5" + versionName "56.0.6" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/packages/expo-dev-client/package.json b/packages/expo-dev-client/package.json index a953b2a7939235..7ce735bc322ce6 100644 --- a/packages/expo-dev-client/package.json +++ b/packages/expo-dev-client/package.json @@ -1,6 +1,6 @@ { "name": "expo-dev-client", - "version": "56.0.5", + "version": "56.0.6", "description": "Expo Development Client", "main": "build/DevClient.js", "types": "build/DevClient.d.ts", @@ -31,8 +31,8 @@ "license": "MIT", "homepage": "https://docs.expo.dev/versions/latest/sdk/dev-client/", "dependencies": { - "expo-dev-launcher": "workspace:~56.0.5", - "expo-dev-menu": "workspace:~56.0.5", + "expo-dev-launcher": "workspace:~56.0.6", + "expo-dev-menu": "workspace:~56.0.6", "expo-dev-menu-interface": "workspace:~56.0.0", "expo-manifests": "workspace:~56.0.1", "expo-updates-interface": "workspace:~56.0.1" diff --git a/packages/expo-dev-launcher/CHANGELOG.md b/packages/expo-dev-launcher/CHANGELOG.md index 6863cc3e517823..347059b4a24c4d 100644 --- a/packages/expo-dev-launcher/CHANGELOG.md +++ b/packages/expo-dev-launcher/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 ### 💡 Others diff --git a/packages/expo-dev-launcher/android/build.gradle b/packages/expo-dev-launcher/android/build.gradle index 01276384028af5..2d5ddb38159997 100644 --- a/packages/expo-dev-launcher/android/build.gradle +++ b/packages/expo-dev-launcher/android/build.gradle @@ -26,13 +26,13 @@ expoModule { } group = "host.exp.exponent" -version = "56.0.5" +version = "56.0.6" android { namespace "expo.modules.devlauncher" defaultConfig { versionCode 9 - versionName "56.0.5" + versionName "56.0.6" } buildTypes { diff --git a/packages/expo-dev-launcher/package.json b/packages/expo-dev-launcher/package.json index 1897af09e45588..887f9f82ebba60 100644 --- a/packages/expo-dev-launcher/package.json +++ b/packages/expo-dev-launcher/package.json @@ -1,7 +1,7 @@ { "name": "expo-dev-launcher", "title": "Expo Development Launcher", - "version": "56.0.5", + "version": "56.0.6", "description": "Pre-release version of the Expo development launcher package for testing.", "repository": { "type": "git", @@ -20,7 +20,7 @@ "homepage": "https://docs.expo.dev", "dependencies": { "@expo/schema-utils": "workspace:^56.0.0", - "expo-dev-menu": "workspace:~56.0.5", + "expo-dev-menu": "workspace:~56.0.6", "expo-manifests": "workspace:~56.0.1" }, "peerDependencies": { diff --git a/packages/expo-dev-menu/CHANGELOG.md b/packages/expo-dev-menu/CHANGELOG.md index 65c6a6369b185e..9973367a4d0eea 100644 --- a/packages/expo-dev-menu/CHANGELOG.md +++ b/packages/expo-dev-menu/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 ### 💡 Others diff --git a/packages/expo-dev-menu/android/build.gradle b/packages/expo-dev-menu/android/build.gradle index 528ff072b4e7a1..3906f6964d0b5b 100644 --- a/packages/expo-dev-menu/android/build.gradle +++ b/packages/expo-dev-menu/android/build.gradle @@ -12,7 +12,7 @@ apply plugin: 'expo-module-gradle-plugin' apply plugin: 'org.jetbrains.kotlin.plugin.compose' group = 'host.exp.exponent' -version = '56.0.5' +version = '56.0.6' def hasDevLauncher = findProject(":expo-dev-launcher") != null def configureInRelease = findProperty("expo.devmenu.configureInRelease") == "true" @@ -29,7 +29,7 @@ android { defaultConfig { versionCode 10 - versionName '56.0.5' + versionName '56.0.6' } buildTypes { diff --git a/packages/expo-dev-menu/package.json b/packages/expo-dev-menu/package.json index dc73eeb7342e74..66164978ce05f7 100644 --- a/packages/expo-dev-menu/package.json +++ b/packages/expo-dev-menu/package.json @@ -1,6 +1,6 @@ { "name": "expo-dev-menu", - "version": "56.0.5", + "version": "56.0.6", "description": "Expo/React Native module with the developer menu.", "main": "build/DevMenu.js", "types": "build/DevMenu.d.ts", diff --git a/packages/expo-doctor/CHANGELOG.md b/packages/expo-doctor/CHANGELOG.md index 4552fa3ac86730..40e2a53fba13f3 100644 --- a/packages/expo-doctor/CHANGELOG.md +++ b/packages/expo-doctor/CHANGELOG.md @@ -6,13 +6,17 @@ ### 🎉 New features -- Skip `watchFolders` check for SDK 56 ([#45567](https://github.com/expo/expo/pull/45567) by [@kitten](https://github.com/kitten)) -- Warn when `blacklistRE` or invalid `blockList` regex are used ([#45567](https://github.com/expo/expo/pull/45567) by [@kitten](https://github.com/kitten)) - ### 🐛 Bug fixes ### 💡 Others +## 1.19.6 — 2026-05-11 + +### 🎉 New features + +- Skip `watchFolders` check for SDK 56 ([#45567](https://github.com/expo/expo/pull/45567) by [@kitten](https://github.com/kitten)) +- Warn when `blacklistRE` or invalid `blockList` regex are used ([#45567](https://github.com/expo/expo/pull/45567) by [@kitten](https://github.com/kitten)) + ## 1.19.5 — 2026-05-06 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-doctor/package.json b/packages/expo-doctor/package.json index de381d93e9edca..ce8dc20f663420 100644 --- a/packages/expo-doctor/package.json +++ b/packages/expo-doctor/package.json @@ -1,6 +1,6 @@ { "name": "expo-doctor", - "version": "1.19.5", + "version": "1.19.6", "main": "build/index.js", "description": "Check your Expo project for known issues", "keywords": [ diff --git a/packages/expo-image-manipulator/CHANGELOG.md b/packages/expo-image-manipulator/CHANGELOG.md index bfc49af747e19c..40c77d5f2071b9 100644 --- a/packages/expo-image-manipulator/CHANGELOG.md +++ b/packages/expo-image-manipulator/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-image-manipulator/android/build.gradle b/packages/expo-image-manipulator/android/build.gradle index d16788c9fca724..6613b24601b549 100644 --- a/packages/expo-image-manipulator/android/build.gradle +++ b/packages/expo-image-manipulator/android/build.gradle @@ -4,12 +4,12 @@ plugins { } group = 'host.exp.exponent' -version = '56.0.5' +version = '56.0.6' android { namespace "expo.modules.imagemanipulator" defaultConfig { versionCode 23 - versionName "56.0.5" + versionName "56.0.6" } } diff --git a/packages/expo-image-manipulator/package.json b/packages/expo-image-manipulator/package.json index 56a1e2bea3c5ee..024aef420d9336 100644 --- a/packages/expo-image-manipulator/package.json +++ b/packages/expo-image-manipulator/package.json @@ -1,6 +1,6 @@ { "name": "expo-image-manipulator", - "version": "56.0.5", + "version": "56.0.6", "description": "Provides functions that let you manipulation images on the local file system, eg: resize, crop.", "main": "src/index.ts", "types": "build/index.d.ts", diff --git a/packages/expo-image-picker/CHANGELOG.md b/packages/expo-image-picker/CHANGELOG.md index 6e707de0a3fbd7..7869368fe52084 100644 --- a/packages/expo-image-picker/CHANGELOG.md +++ b/packages/expo-image-picker/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-image-picker/android/build.gradle b/packages/expo-image-picker/android/build.gradle index b152911cf7b303..457872b65e0c1e 100644 --- a/packages/expo-image-picker/android/build.gradle +++ b/packages/expo-image-picker/android/build.gradle @@ -4,13 +4,13 @@ plugins { } group = 'host.exp.exponent' -version = '56.0.5' +version = '56.0.6' android { namespace "expo.modules.imagepicker" defaultConfig { versionCode 22 - versionName "56.0.5" + versionName "56.0.6" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } testOptions { diff --git a/packages/expo-image-picker/package.json b/packages/expo-image-picker/package.json index b8d1821e158487..914cbf2b1c395f 100644 --- a/packages/expo-image-picker/package.json +++ b/packages/expo-image-picker/package.json @@ -1,6 +1,6 @@ { "name": "expo-image-picker", - "version": "56.0.5", + "version": "56.0.6", "description": "Provides access to the system's UI for selecting images and videos from the phone's library or taking a photo with the camera.", "main": "build/ImagePicker.js", "types": "build/ImagePicker.d.ts", diff --git a/packages/expo-insights/android/build.gradle b/packages/expo-insights/android/build.gradle index 1857e3686a10ef..8212fb0e80ee13 100644 --- a/packages/expo-insights/android/build.gradle +++ b/packages/expo-insights/android/build.gradle @@ -4,13 +4,13 @@ plugins { } group = 'host.exp.exponent' -version = '56.0.5' +version = '56.0.6' android { namespace "expo.modules.insights" defaultConfig { versionCode 1 - versionName "56.0.5" + versionName "56.0.6" } } diff --git a/packages/expo-insights/package.json b/packages/expo-insights/package.json index 4c1b001d3174b1..01c4fc8a23e4fd 100644 --- a/packages/expo-insights/package.json +++ b/packages/expo-insights/package.json @@ -1,7 +1,7 @@ { "name": "expo-insights", "title": "Expo Insights", - "version": "56.0.5", + "version": "56.0.6", "description": "Expo module that offers developers insight into the usage data of the app", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/expo-linking/CHANGELOG.md b/packages/expo-linking/CHANGELOG.md index 83a4aa87b8e025..011321de130cfc 100644 --- a/packages/expo-linking/CHANGELOG.md +++ b/packages/expo-linking/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.5 — 2026-05-12 + +_This version does not introduce any user-facing changes._ + ## 56.0.4 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-linking/android/build.gradle b/packages/expo-linking/android/build.gradle index 566c6fe09b3691..268bcf7d77b670 100644 --- a/packages/expo-linking/android/build.gradle +++ b/packages/expo-linking/android/build.gradle @@ -4,13 +4,13 @@ plugins { } group = 'host.exp.exponent' -version = '56.0.4' +version = '56.0.5' android { namespace "expo.modules.linking" defaultConfig { versionCode 1 - versionName "56.0.4" + versionName "56.0.5" } lintOptions { abortOnError false diff --git a/packages/expo-linking/package.json b/packages/expo-linking/package.json index f68d5ada1004e0..3574c09d1bfb19 100644 --- a/packages/expo-linking/package.json +++ b/packages/expo-linking/package.json @@ -1,6 +1,6 @@ { "name": "expo-linking", - "version": "56.0.4", + "version": "56.0.5", "description": "Create and open deep links universally", "main": "build/Linking.js", "types": "build/Linking.d.ts", @@ -37,7 +37,7 @@ "license": "MIT", "homepage": "https://docs.expo.dev/versions/latest/sdk/linking", "dependencies": { - "expo-constants": "workspace:~56.0.6", + "expo-constants": "workspace:~56.0.7", "invariant": "^2.2.4" }, "devDependencies": { diff --git a/packages/expo-location/CHANGELOG.md b/packages/expo-location/CHANGELOG.md index 9dfff7ee37e073..865aa4de9e2df2 100644 --- a/packages/expo-location/CHANGELOG.md +++ b/packages/expo-location/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-location/android/build.gradle b/packages/expo-location/android/build.gradle index 94da5cef29dcaf..cadd46df7ea6c3 100644 --- a/packages/expo-location/android/build.gradle +++ b/packages/expo-location/android/build.gradle @@ -4,13 +4,13 @@ plugins { } group = 'host.exp.exponent' -version = '56.0.5' +version = '56.0.6' android { namespace "expo.modules.location" defaultConfig { versionCode 29 - versionName "56.0.5" + versionName "56.0.6" consumerProguardFiles("proguard-rules.pro") } } diff --git a/packages/expo-location/package.json b/packages/expo-location/package.json index d8ae0745f34bcd..66b9ee413ea496 100644 --- a/packages/expo-location/package.json +++ b/packages/expo-location/package.json @@ -1,6 +1,6 @@ { "name": "expo-location", - "version": "56.0.5", + "version": "56.0.6", "description": "Allows reading geolocation information from the device. Your app can poll for the current location or subscribe to location update events.", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/expo-maps/CHANGELOG.md b/packages/expo-maps/CHANGELOG.md index 305aa71994dd94..3b0864042da8ce 100644 --- a/packages/expo-maps/CHANGELOG.md +++ b/packages/expo-maps/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.4 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.3 — 2026-05-06 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-maps/android/build.gradle b/packages/expo-maps/android/build.gradle index e23eea2c53dc44..cbf1ce8e9fa375 100644 --- a/packages/expo-maps/android/build.gradle +++ b/packages/expo-maps/android/build.gradle @@ -14,13 +14,13 @@ apply plugin: 'expo-module-gradle-plugin' apply plugin: 'org.jetbrains.kotlin.plugin.compose' group = 'host.exp.exponent' -version = '56.0.3' +version = '56.0.4' android { namespace "expo.modules.maps" defaultConfig { versionCode 1 - versionName "56.0.3" + versionName "56.0.4" } buildFeatures { compose true diff --git a/packages/expo-maps/package.json b/packages/expo-maps/package.json index 9bee7bde86e624..5019f7f68c3cff 100644 --- a/packages/expo-maps/package.json +++ b/packages/expo-maps/package.json @@ -1,6 +1,6 @@ { "name": "expo-maps", - "version": "56.0.3", + "version": "56.0.4", "description": "Provides a Map component that uses Google Maps on Android and Apple Maps on iOS.", "main": "src/index.ts", "types": "build/index.d.ts", diff --git a/packages/expo-module-template/$package.json b/packages/expo-module-template/$package.json index 9e2bef5f23563b..e5670ad7c5643f 100644 --- a/packages/expo-module-template/$package.json +++ b/packages/expo-module-template/$package.json @@ -34,7 +34,7 @@ "babel-preset-expo": "~55.0.8", "eslint": "~9.39.4", "eslint-config-universe": "^15.0.3", - "expo": "^56.0.0-preview.7", + "expo": "^56.0.0-preview.9", "jest": "^29.7.0", "jest-expo": "~55.0.9", "prettier": "^3.0.0", diff --git a/packages/expo-module-template/package.json b/packages/expo-module-template/package.json index 42221bf9e947cb..0a90252049b9bd 100644 --- a/packages/expo-module-template/package.json +++ b/packages/expo-module-template/package.json @@ -1,6 +1,6 @@ { "name": "expo-module-template", - "version": "56.0.3", + "version": "56.0.4", "description": "ExpoModuleTemplate standalone module", "scripts": {}, "keywords": [ diff --git a/packages/expo-modules-autolinking/CHANGELOG.md b/packages/expo-modules-autolinking/CHANGELOG.md index 8c56b6767e5803..56500cde83dbe6 100644 --- a/packages/expo-modules-autolinking/CHANGELOG.md +++ b/packages/expo-modules-autolinking/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.4 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.3 — 2026-05-08 ### 🐛 Bug fixes diff --git a/packages/expo-modules-autolinking/package.json b/packages/expo-modules-autolinking/package.json index 7e75069bd4d3cf..9c070ccd0734bc 100644 --- a/packages/expo-modules-autolinking/package.json +++ b/packages/expo-modules-autolinking/package.json @@ -1,6 +1,6 @@ { "name": "expo-modules-autolinking", - "version": "56.0.3", + "version": "56.0.4", "description": "Scripts that autolink Expo modules.", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/expo-modules-core/CHANGELOG.md b/packages/expo-modules-core/CHANGELOG.md index 790adcbe2a43af..4b76f09c33edf7 100644 --- a/packages/expo-modules-core/CHANGELOG.md +++ b/packages/expo-modules-core/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +### 💡 Others + - [iOS] `AppContext.setRuntime` now takes the native React `RuntimeScheduler` pointer and a dispatch trampoline alongside the runtime pointer. ([#45636](https://github.com/expo/expo/pull/45636) by [@tsapeta](https://github.com/tsapeta)) ## 56.0.5 — 2026-05-08 diff --git a/packages/expo-modules-core/android/build.gradle b/packages/expo-modules-core/android/build.gradle index ef2f3bdebb02b5..2bae5ec61d2728 100644 --- a/packages/expo-modules-core/android/build.gradle +++ b/packages/expo-modules-core/android/build.gradle @@ -27,7 +27,7 @@ if (shouldIncludeCompose) { } group = 'host.exp.exponent' -version = '56.0.5' +version = '56.0.6' def isExpoModulesCoreTests = { Gradle gradle = getGradle() @@ -94,7 +94,7 @@ android { defaultConfig { consumerProguardFiles 'proguard-rules.pro' versionCode 1 - versionName "56.0.5" + versionName "56.0.6" buildConfigField "String", "EXPO_MODULES_CORE_VERSION", "\"${versionName}\"" buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", "true" diff --git a/packages/expo-modules-core/package.json b/packages/expo-modules-core/package.json index d7150e4b13a8b3..05ba322912bb8c 100644 --- a/packages/expo-modules-core/package.json +++ b/packages/expo-modules-core/package.json @@ -1,6 +1,6 @@ { "name": "expo-modules-core", - "version": "56.0.5", + "version": "56.0.6", "description": "The core of Expo Modules architecture", "main": "src/index.ts", "types": "build/index.d.ts", @@ -56,7 +56,7 @@ }, "dependencies": { "@expo/expo-modules-macros-plugin": "~0.0.8", - "expo-modules-jsi": "workspace:~56.0.2", + "expo-modules-jsi": "workspace:~56.0.3", "invariant": "^2.2.4" }, "peerDependencies": { diff --git a/packages/expo-modules-jsi/CHANGELOG.md b/packages/expo-modules-jsi/CHANGELOG.md index 89785a17e19a5c..bb3e6fb4058da2 100644 --- a/packages/expo-modules-jsi/CHANGELOG.md +++ b/packages/expo-modules-jsi/CHANGELOG.md @@ -8,10 +8,14 @@ ### 🐛 Bug fixes -- [iOS] Fixed launch-time crash in apps with source-built React Native. ([#45636](https://github.com/expo/expo/pull/45636) by [@tsapeta](https://github.com/tsapeta)) - ### 💡 Others +## 56.0.3 — 2026-05-11 + +### 🐛 Bug fixes + +- [iOS] Fixed launch-time crash in apps with source-built React Native. ([#45636](https://github.com/expo/expo/pull/45636) by [@tsapeta](https://github.com/tsapeta)) + ## 56.0.2 — 2026-05-08 ### 🐛 Bug fixes diff --git a/packages/expo-modules-jsi/package.json b/packages/expo-modules-jsi/package.json index 37b8c7bb56ae06..ea52a92db08de4 100644 --- a/packages/expo-modules-jsi/package.json +++ b/packages/expo-modules-jsi/package.json @@ -1,6 +1,6 @@ { "name": "expo-modules-jsi", - "version": "56.0.2", + "version": "56.0.3", "description": "The JavaScript Interface for Expo Modules", "main": "index.js", "sideEffects": [], diff --git a/packages/expo-notifications/CHANGELOG.md b/packages/expo-notifications/CHANGELOG.md index cb61ee50ca81bf..7e7d09a791217b 100644 --- a/packages/expo-notifications/CHANGELOG.md +++ b/packages/expo-notifications/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-notifications/android/build.gradle b/packages/expo-notifications/android/build.gradle index 3bb686c16f2b35..94811c904786d1 100644 --- a/packages/expo-notifications/android/build.gradle +++ b/packages/expo-notifications/android/build.gradle @@ -5,13 +5,13 @@ plugins { } group = 'host.exp.exponent' -version = '56.0.5' +version = '56.0.6' android { namespace "expo.modules.notifications" defaultConfig { versionCode 21 - versionName '56.0.5' + versionName '56.0.6' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/packages/expo-notifications/package.json b/packages/expo-notifications/package.json index 1ce99e3ce296f3..4b6e57865297a6 100644 --- a/packages/expo-notifications/package.json +++ b/packages/expo-notifications/package.json @@ -1,6 +1,6 @@ { "name": "expo-notifications", - "version": "56.0.5", + "version": "56.0.6", "description": "Provides an API to fetch push notification tokens and to present, schedule, receive, and respond to notifications.", "main": "build/index.js", "types": "build/index.d.ts", @@ -46,7 +46,7 @@ "abort-controller": "^3.0.0", "badgin": "^1.1.5", "expo-application": "workspace:~56.0.3", - "expo-constants": "workspace:~56.0.6" + "expo-constants": "workspace:~56.0.7" }, "devDependencies": { "@types/node": "^22.14.0", diff --git a/packages/expo-observe/package.json b/packages/expo-observe/package.json index bd81d5ef6a5ff6..228d03543cf5c7 100644 --- a/packages/expo-observe/package.json +++ b/packages/expo-observe/package.json @@ -1,7 +1,7 @@ { "name": "expo-observe", "title": "Expo Observe", - "version": "56.0.5", + "version": "56.0.6", "description": "Expo module that dispatches collected app metrics to EAS Observe", "main": "src/index.ts", "types": "build/index.d.ts", @@ -32,7 +32,7 @@ "author": "650 Industries, Inc.", "license": "MIT", "dependencies": { - "expo-app-metrics": "workspace:~56.0.5", + "expo-app-metrics": "workspace:~56.0.6", "expo-eas-client": "workspace:~56.0.0" }, "devDependencies": { diff --git a/packages/expo-processing/package.json b/packages/expo-processing/package.json index eb9a472f92fb8c..afad6119934c97 100644 --- a/packages/expo-processing/package.json +++ b/packages/expo-processing/package.json @@ -1,6 +1,6 @@ { "name": "expo-processing", - "version": "56.0.5", + "version": "56.0.6", "description": "Utilities for using Processing.js on Expo", "main": "index.js", "keywords": [ diff --git a/packages/expo-router/CHANGELOG.md b/packages/expo-router/CHANGELOG.md index 680b0663fd6fa4..3dd905f5b2a718 100644 --- a/packages/expo-router/CHANGELOG.md +++ b/packages/expo-router/CHANGELOG.md @@ -6,6 +6,18 @@ ### 🎉 New features +### 🐛 Bug fixes + +### 💡 Others + +## 56.1.3 — 2026-05-12 + +_This version does not introduce any user-facing changes._ + +## 56.1.2 — 2026-05-11 + +### 🎉 New features + - export new useCurrentRouteInfo hook ([#45566](https://github.com/expo/expo/pull/45566) by [@Ubax](https://github.com/Ubax)) - Upgrade react-native-screens to 4.25.0 ([#45644](https://github.com/expo/expo/pull/45644) by [@Ubax](https://github.com/Ubax)) @@ -13,8 +25,6 @@ - Fix drawer toggle asset path. ([#45170](https://github.com/expo/expo/pull/45170) by [@sleda](https://github.com/sleda)) -### 💡 Others - ## 56.1.1 — 2026-05-08 ### 🎉 New features diff --git a/packages/expo-router/android/build.gradle b/packages/expo-router/android/build.gradle index b049ecb6c690bb..f126df78c26e98 100644 --- a/packages/expo-router/android/build.gradle +++ b/packages/expo-router/android/build.gradle @@ -4,13 +4,13 @@ plugins { } group = 'expo.modules.router' -version = '56.1.1' +version = '56.1.3' android { namespace "expo.modules.router" defaultConfig { versionCode 1 - versionName "56.1.1" + versionName "56.1.3" } lintOptions { abortOnError false diff --git a/packages/expo-router/package.json b/packages/expo-router/package.json index 3c8a323bd6c7b5..8d31076771ce23 100644 --- a/packages/expo-router/package.json +++ b/packages/expo-router/package.json @@ -1,6 +1,6 @@ { "name": "expo-router", - "version": "56.1.1", + "version": "56.1.3", "description": "Expo Router is a file-based router for React Native and web applications.", "author": "650 Industries, Inc.", "license": "MIT", @@ -88,12 +88,12 @@ "expo" ], "peerDependencies": { - "@expo/log-box": "workspace:^56.0.6", - "@expo/metro-runtime": "workspace:^56.0.5", + "@expo/log-box": "workspace:^56.0.7", + "@expo/metro-runtime": "workspace:^56.0.6", "@testing-library/react-native": ">= 13.2.0", "expo": "*", - "expo-constants": "workspace:^56.0.6", - "expo-linking": "workspace:^56.0.4", + "expo-constants": "workspace:^56.0.7", + "expo-linking": "workspace:^56.0.5", "react": "*", "react-dom": "*", "react-native": "*", @@ -149,10 +149,10 @@ "tsd": "^0.33.0" }, "dependencies": { - "@expo/log-box": "workspace:^56.0.6", - "@expo/metro-runtime": "workspace:^56.0.5", + "@expo/log-box": "workspace:^56.0.7", + "@expo/metro-runtime": "workspace:^56.0.6", "@expo/schema-utils": "workspace:^56.0.0", - "@expo/ui": "workspace:^56.0.4", + "@expo/ui": "workspace:^56.0.5", "@radix-ui/react-slot": "^1.2.0", "@radix-ui/react-tabs": "^1.1.12", "@react-native-masked-view/masked-view": "^0.3.2", diff --git a/packages/expo-sharing/CHANGELOG.md b/packages/expo-sharing/CHANGELOG.md index 7833be32b52e1a..8ae7ad8f20b5da 100644 --- a/packages/expo-sharing/CHANGELOG.md +++ b/packages/expo-sharing/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-sharing/android/build.gradle b/packages/expo-sharing/android/build.gradle index 528146e0eb677e..81a69a8796a965 100644 --- a/packages/expo-sharing/android/build.gradle +++ b/packages/expo-sharing/android/build.gradle @@ -4,13 +4,13 @@ plugins { } group = 'host.exp.exponent' -version = '56.0.5' +version = '56.0.6' android { namespace "expo.modules.sharing" defaultConfig { versionCode 16 - versionName '56.0.5' + versionName '56.0.6' } } diff --git a/packages/expo-sharing/package.json b/packages/expo-sharing/package.json index 92bd9de4f3458d..a1e49e568a55b8 100644 --- a/packages/expo-sharing/package.json +++ b/packages/expo-sharing/package.json @@ -1,6 +1,6 @@ { "name": "expo-sharing", - "version": "56.0.5", + "version": "56.0.6", "description": "Provides a way to share files directly with other compatible applications.", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/expo-task-manager/CHANGELOG.md b/packages/expo-task-manager/CHANGELOG.md index 93bf602e34c9c9..3bf33a64f06637 100644 --- a/packages/expo-task-manager/CHANGELOG.md +++ b/packages/expo-task-manager/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-task-manager/android/build.gradle b/packages/expo-task-manager/android/build.gradle index 7d50423f8a904a..4f6050d10e7629 100644 --- a/packages/expo-task-manager/android/build.gradle +++ b/packages/expo-task-manager/android/build.gradle @@ -4,13 +4,13 @@ plugins { } group = 'host.exp.exponent' -version = '56.0.5' +version = '56.0.6' android { namespace "expo.modules.taskmanager" defaultConfig { versionCode 23 - versionName "56.0.5" + versionName "56.0.6" } } diff --git a/packages/expo-task-manager/package.json b/packages/expo-task-manager/package.json index 1ee72c1d460648..a39d1a52ac49d3 100644 --- a/packages/expo-task-manager/package.json +++ b/packages/expo-task-manager/package.json @@ -1,6 +1,6 @@ { "name": "expo-task-manager", - "version": "56.0.5", + "version": "56.0.6", "description": "Expo module that provides support for tasks that can run in the background.", "main": "build/TaskManager.js", "types": "build/TaskManager.d.ts", diff --git a/packages/expo-ui/CHANGELOG.md b/packages/expo-ui/CHANGELOG.md index db9e12c666c567..aad5dd2c3231d3 100644 --- a/packages/expo-ui/CHANGELOG.md +++ b/packages/expo-ui/CHANGELOG.md @@ -6,10 +6,20 @@ ### 🎉 New features -- [iOS] Added the `scrollIndicators(visibility, axes?)` SwiftUI modifier in `@expo/ui/swift-ui/modifiers`, wrapping SwiftUI's `scrollIndicators(_:axes:)`. ([#45649](https://github.com/expo/expo/pull/45649) by [@vonovak](https://github.com/vonovak)) +- Added `@expo/ui/community/slider`, a drop-in replacement for `@react-native-community/slider`. ([#45623](https://github.com/expo/expo/pull/45623) by [@nishan](https://github.com/intergalacticspacehighway)) ### 🐛 Bug fixes +- Fix `useNativeState` recreating the `ObservableState` when initial value changes; the seed is now captured once via `useRef`. ([#45623](https://github.com/expo/expo/pull/45623) by [@nishan](https://github.com/intergalacticspacehighway)) + +### 💡 Others + +## 56.0.5 — 2026-05-11 + +### 🎉 New features + +- [iOS] Added the `scrollIndicators(visibility, axes?)` SwiftUI modifier in `@expo/ui/swift-ui/modifiers`, wrapping SwiftUI's `scrollIndicators(_:axes:)`. ([#45649](https://github.com/expo/expo/pull/45649) by [@vonovak](https://github.com/vonovak)) + ### 💡 Others - [iOS] Consolidated the duplicate `AxisOptions` / `AxisSetType` enums into a single `AxisOptions` in `Convertibles/AxisOptions.swift`. ([#45649](https://github.com/expo/expo/pull/45649) by [@vonovak](https://github.com/vonovak)) diff --git a/packages/expo-ui/android/build.gradle b/packages/expo-ui/android/build.gradle index ea920055fff72e..fcef1da1a1f127 100644 --- a/packages/expo-ui/android/build.gradle +++ b/packages/expo-ui/android/build.gradle @@ -12,13 +12,13 @@ apply plugin: 'expo-module-gradle-plugin' apply plugin: 'org.jetbrains.kotlin.plugin.compose' group = 'expo.modules.ui' -version = '56.0.4' +version = '56.0.5' android { namespace "expo.modules.ui" defaultConfig { versionCode 1 - versionName "56.0.4" + versionName "56.0.5" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildFeatures { diff --git a/packages/expo-ui/android/src/main/java/expo/modules/ui/SliderView.kt b/packages/expo-ui/android/src/main/java/expo/modules/ui/SliderView.kt index 27c918bc46f298..aad496149be08a 100644 --- a/packages/expo-ui/android/src/main/java/expo/modules/ui/SliderView.kt +++ b/packages/expo-ui/android/src/main/java/expo/modules/ui/SliderView.kt @@ -42,6 +42,8 @@ data class SliderProps( val value: Float = 0.0f, val min: Float = 0.0f, val max: Float = 1.0f, + val lowerLimit: Float? = null, + val upperLimit: Float? = null, val steps: Int = 0, val enabled: Boolean = true, val colors: SliderColors = SliderColors(), @@ -60,9 +62,12 @@ fun FunctionalComposableScope.SliderContent(props: SliderProps) { val onValueChangeFinished by remember { this@SliderContent.EventDispatcher() } val interactionSource = remember { MutableInteractionSource() } - var localValue by remember { mutableFloatStateOf(props.value.coerceIn(props.min, props.max)) } + val effectiveLower = maxOf(props.min, props.lowerLimit ?: Float.NEGATIVE_INFINITY) + val effectiveUpper = minOf(props.max, props.upperLimit ?: Float.POSITIVE_INFINITY) + + var localValue by remember { mutableFloatStateOf(props.value.coerceIn(effectiveLower, effectiveUpper)) } var isDragging by remember { mutableStateOf(false) } - val clampedPropsValue = props.value.coerceIn(props.min, props.max) + val clampedPropsValue = props.value.coerceIn(effectiveLower, effectiveUpper) var prevPropsValue by remember { mutableFloatStateOf(clampedPropsValue) } if (clampedPropsValue != prevPropsValue) { @@ -90,9 +95,10 @@ fun FunctionalComposableScope.SliderContent(props: SliderProps) { enabled = props.enabled, interactionSource = interactionSource, onValueChange = { + val clamped = it.coerceIn(effectiveLower, effectiveUpper) isDragging = true - localValue = it - onValueChange(SliderValueChangedEvent(it)) + localValue = clamped + onValueChange(SliderValueChangedEvent(clamped)) }, onValueChangeFinished = { isDragging = false diff --git a/packages/expo-ui/build/State/useNativeState.d.ts b/packages/expo-ui/build/State/useNativeState.d.ts index 2862d1af32702f..409a5467ecf1b9 100644 --- a/packages/expo-ui/build/State/useNativeState.d.ts +++ b/packages/expo-ui/build/State/useNativeState.d.ts @@ -12,7 +12,8 @@ export type ObservableState = SharedObject & { value: T; }; /** - * Creates an observable native state that is automatically cleaned up when the component unmounts. + * Creates an observable native state that is automatically cleaned up when the + * component unmounts. `initialValue` is captured once on the first render */ export declare function useNativeState(initialValue: T): ObservableState; //# sourceMappingURL=useNativeState.d.ts.map \ No newline at end of file diff --git a/packages/expo-ui/build/State/useNativeState.d.ts.map b/packages/expo-ui/build/State/useNativeState.d.ts.map index 9eb4ad485c5741..71718b6a950ebb 100644 --- a/packages/expo-ui/build/State/useNativeState.d.ts.map +++ b/packages/expo-ui/build/State/useNativeState.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"useNativeState.d.ts","sourceRoot":"","sources":["../../src/State/useNativeState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAMhF;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,YAAY,GAAG;IAC9C;;;;OAIG;IACH,KAAK,EAAE,CAAC,CAAC;CACV,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAMrE"} \ No newline at end of file +{"version":3,"file":"useNativeState.d.ts","sourceRoot":"","sources":["../../src/State/useNativeState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAOhF;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,YAAY,GAAG;IAC9C;;;;OAIG;IACH,KAAK,EAAE,CAAC,CAAC;CACV,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAOrE"} \ No newline at end of file diff --git a/packages/expo-ui/build/community/slider/Slider.android.d.ts b/packages/expo-ui/build/community/slider/Slider.android.d.ts new file mode 100644 index 00000000000000..55d369ccfe8d98 --- /dev/null +++ b/packages/expo-ui/build/community/slider/Slider.android.d.ts @@ -0,0 +1,7 @@ +import { type SliderProps } from './types'; +/** + * A drop-in replacement for `@react-native-community/slider` on Android. + * Renders a Material 3 `Slider` wrapped in a Host. + */ +export declare function Slider(props: SliderProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=Slider.android.d.ts.map \ No newline at end of file diff --git a/packages/expo-ui/build/community/slider/Slider.android.d.ts.map b/packages/expo-ui/build/community/slider/Slider.android.d.ts.map new file mode 100644 index 00000000000000..0f2c51a88a230f --- /dev/null +++ b/packages/expo-ui/build/community/slider/Slider.android.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Slider.android.d.ts","sourceRoot":"","sources":["../../../src/community/slider/Slider.android.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,2CAwCxC"} \ No newline at end of file diff --git a/packages/expo-ui/build/community/slider/Slider.d.ts b/packages/expo-ui/build/community/slider/Slider.d.ts new file mode 100644 index 00000000000000..eb304468e94605 --- /dev/null +++ b/packages/expo-ui/build/community/slider/Slider.d.ts @@ -0,0 +1,8 @@ +import { type SliderProps } from './types'; +/** + * A drop-in replacement for `@react-native-community/slider`. Renders a + * SwiftUI `Slider` on iOS, a Material 3 `Slider` on Android, and a native + * HTML `` on web. + */ +export declare function Slider(props: SliderProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=Slider.d.ts.map \ No newline at end of file diff --git a/packages/expo-ui/build/community/slider/Slider.d.ts.map b/packages/expo-ui/build/community/slider/Slider.d.ts.map new file mode 100644 index 00000000000000..7095aba81836c2 --- /dev/null +++ b/packages/expo-ui/build/community/slider/Slider.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../../src/community/slider/Slider.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,2CAkCxC"} \ No newline at end of file diff --git a/packages/expo-ui/build/community/slider/Slider.ios.d.ts b/packages/expo-ui/build/community/slider/Slider.ios.d.ts new file mode 100644 index 00000000000000..f4cabf5bcffe7c --- /dev/null +++ b/packages/expo-ui/build/community/slider/Slider.ios.d.ts @@ -0,0 +1,7 @@ +import { type SliderProps } from './types'; +/** + * A drop-in replacement for `@react-native-community/slider` on iOS. + * Renders a SwiftUI `Slider` wrapped in a Host. + */ +export declare function Slider(props: SliderProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=Slider.ios.d.ts.map \ No newline at end of file diff --git a/packages/expo-ui/build/community/slider/Slider.ios.d.ts.map b/packages/expo-ui/build/community/slider/Slider.ios.d.ts.map new file mode 100644 index 00000000000000..355ede743c0267 --- /dev/null +++ b/packages/expo-ui/build/community/slider/Slider.ios.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Slider.ios.d.ts","sourceRoot":"","sources":["../../../src/community/slider/Slider.ios.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAM3C;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,2CAqCxC"} \ No newline at end of file diff --git a/packages/expo-ui/build/community/slider/index.d.ts b/packages/expo-ui/build/community/slider/index.d.ts new file mode 100644 index 00000000000000..524ed8544fc884 --- /dev/null +++ b/packages/expo-ui/build/community/slider/index.d.ts @@ -0,0 +1,5 @@ +import { Slider } from './Slider'; +export type { SliderProps } from './types'; +export default Slider; +export { Slider }; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/expo-ui/build/community/slider/index.d.ts.map b/packages/expo-ui/build/community/slider/index.d.ts.map new file mode 100644 index 00000000000000..bf4e6d509e8e1a --- /dev/null +++ b/packages/expo-ui/build/community/slider/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/community/slider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAe,MAAM,CAAC;AAEtB,OAAO,EAAE,MAAM,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/expo-ui/build/community/slider/types.d.ts b/packages/expo-ui/build/community/slider/types.d.ts new file mode 100644 index 00000000000000..5ad710b8c2d9dd --- /dev/null +++ b/packages/expo-ui/build/community/slider/types.d.ts @@ -0,0 +1,75 @@ +import type { ColorValue, StyleProp, ViewStyle } from 'react-native'; +/** + * Props for the `Slider` community drop-in component. + * Compatible with `@react-native-community/slider`. + */ +export type SliderProps = { + /** + * Initial / current value of the slider. + * Behaves like the community lib: passing a new value updates the thumb, + * but live drag emits via `onValueChange` without needing external state. + * @default 0 + */ + value?: number; + /** + * Initial minimum value of the slider. + * @default 0 + */ + minimumValue?: number; + /** + * Initial maximum value of the slider. + * @default 1 + */ + maximumValue?: number; + /** + * The lower limit value of the slider. The user won't be able to slide + * below this limit. + */ + lowerLimit?: number; + /** + * The upper limit value of the slider. The user won't be able to slide + * above this limit. + */ + upperLimit?: number; + /** + * If true the user won't be able to move the slider. + * @default false + */ + disabled?: boolean; + /** + * Step value of the slider. The value should be between 0 and + * (maximumValue - minimumValue). A value of 0 means continuous (no + * snapping). + * @default 0 + */ + step?: number; + /** + * Reverses the direction of the slider so the maximum value is on the + * left and the minimum value is on the right. + * @default false + */ + inverted?: boolean; + /** + * Color of the track to the left of the thumb. + */ + minimumTrackTintColor?: ColorValue; + /** + * Color of the track to the right of the thumb. + * @platform android + */ + maximumTrackTintColor?: ColorValue; + /** + * Color of the thumb. + * @platform android + */ + thumbTintColor?: ColorValue; + /** + * Callback continuously called while the user is dragging the slider. + */ + onValueChange?: (value: number) => void; + /** + * Used to style and layout the Slider. + */ + style?: StyleProp; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/packages/expo-ui/build/community/slider/types.d.ts.map b/packages/expo-ui/build/community/slider/types.d.ts.map new file mode 100644 index 00000000000000..b2960db8800598 --- /dev/null +++ b/packages/expo-ui/build/community/slider/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/community/slider/types.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,qBAAqB,CAAC,EAAE,UAAU,CAAC;IACnC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,UAAU,CAAC;IACnC;;;OAGG;IACH,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC"} \ No newline at end of file diff --git a/packages/expo-ui/build/jetpack-compose/Slider/index.d.ts b/packages/expo-ui/build/jetpack-compose/Slider/index.d.ts index 2963e356a42635..85ba24ecdb04cb 100644 --- a/packages/expo-ui/build/jetpack-compose/Slider/index.d.ts +++ b/packages/expo-ui/build/jetpack-compose/Slider/index.d.ts @@ -32,6 +32,16 @@ export type SliderProps = { * @default 1 */ max?: number; + /** + * Lower limit the user can drag the thumb to. The visible track still + * spans `min..max`, but the thumb stops at `lowerLimit` during drag. + */ + lowerLimit?: number; + /** + * Upper limit the user can drag the thumb to. The visible track still + * spans `min..max`, but the thumb stops at `upperLimit` during drag. + */ + upperLimit?: number; /** * Whether the slider is enabled for user interaction. * @default true diff --git a/packages/expo-ui/build/jetpack-compose/Slider/index.d.ts.map b/packages/expo-ui/build/jetpack-compose/Slider/index.d.ts.map index 3e8c5c815a8138..067f958ef4b7a1 100644 --- a/packages/expo-ui/build/jetpack-compose/Slider/index.d.ts.map +++ b/packages/expo-ui/build/jetpack-compose/Slider/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jetpack-compose/Slider/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AAa7D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,iBAAiB,CAAC,EAAE,UAAU,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC;;OAEG;IACH,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAqDF;;;;GAIG;AACH,iBAAS,eAAe,CAAC,KAAK,EAAE,WAAW,2CAG1C;kBAHQ,eAAe;uBAnBF;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE;uBAU7B;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE;;AAiBnD,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jetpack-compose/Slider/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AAa7D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,iBAAiB,CAAC,EAAE,UAAU,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC;;OAEG;IACH,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAqDF;;;;GAIG;AACH,iBAAS,eAAe,CAAC,KAAK,EAAE,WAAW,2CAG1C;kBAHQ,eAAe;uBAnBF;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE;uBAU7B;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE;;AAiBnD,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/expo-ui/build/swift-ui/Slider/index.d.ts b/packages/expo-ui/build/swift-ui/Slider/index.d.ts index a74750ed0a161a..9511c0237cf838 100644 --- a/packages/expo-ui/build/swift-ui/Slider/index.d.ts +++ b/packages/expo-ui/build/swift-ui/Slider/index.d.ts @@ -16,6 +16,16 @@ export type SliderProps = { * The maximum value of the slider. Updating this value does not trigger callbacks if the current value is above `max`. */ max?: number; + /** + * Lower limit the user can drag the thumb to. The visible track still + * spans `min..max`, but the thumb stops at `lowerLimit` during drag. + */ + lowerLimit?: number; + /** + * Upper limit the user can drag the thumb to. The visible track still + * spans `min..max`, but the thumb stops at `upperLimit` during drag. + */ + upperLimit?: number; /** * A label describing the slider's purpose. */ diff --git a/packages/expo-ui/build/swift-ui/Slider/index.d.ts.map b/packages/expo-ui/build/swift-ui/Slider/index.d.ts.map index 04eee4d7e0e04e..b48626392b4769 100644 --- a/packages/expo-ui/build/swift-ui/Slider/index.d.ts.map +++ b/packages/expo-ui/build/swift-ui/Slider/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/swift-ui/Slider/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC;;OAEG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CACjD,GAAG,uBAAuB,CAAC;AAwC5B,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,2CAUxC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/swift-ui/Slider/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC;;OAEG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CACjD,GAAG,uBAAuB,CAAC;AAwC5B,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,2CAUxC"} \ No newline at end of file diff --git a/packages/expo-ui/ios/SliderView.swift b/packages/expo-ui/ios/SliderView.swift index 1ffa70e3be10bc..09a6771857c3d8 100644 --- a/packages/expo-ui/ios/SliderView.swift +++ b/packages/expo-ui/ios/SliderView.swift @@ -16,11 +16,11 @@ struct SliderView: ExpoSwiftUI.View { #if !os(tvOS) sliderContent .onAppear { - value = props.value ?? 0.0 + value = clamp(props.value ?? 0.0) } .onChange(of: props.value) { newValue in guard !isEditing else { return } - value = newValue ?? 0.0 + value = clamp(newValue ?? 0.0) } .onChange(of: value) { newValue in if props.value != newValue { @@ -35,6 +35,19 @@ struct SliderView: ExpoSwiftUI.View { } #if !os(tvOS) + private func clamp(_ raw: Float) -> Float { + let lower = Swift.max(props.min ?? -.infinity, props.lowerLimit ?? -.infinity) + let upper = Swift.min(props.max ?? .infinity, props.upperLimit ?? .infinity) + return Swift.min(upper, Swift.max(lower, raw)) + } + + private var clampedBinding: Binding { + Binding( + get: { value }, + set: { newValue in value = clamp(newValue) } + ) + } + @ViewBuilder private var sliderContent: some View { let label = props.children?.slot("label") @@ -43,7 +56,7 @@ struct SliderView: ExpoSwiftUI.View { if let min = props.min, let max = props.max, let step = props.step { Slider( - value: $value, + value: clampedBinding, in: min...max, step: step, label: { label }, @@ -55,7 +68,7 @@ struct SliderView: ExpoSwiftUI.View { } } else if let min = props.min, let max = props.max { Slider( - value: $value, + value: clampedBinding, in: min...max, label: { label }, minimumValueLabel: { minimumValueLabel }, @@ -66,7 +79,7 @@ struct SliderView: ExpoSwiftUI.View { } } else if let step = props.step { Slider( - value: $value, + value: clampedBinding, in: 0...1, step: step, label: { label }, @@ -78,7 +91,7 @@ struct SliderView: ExpoSwiftUI.View { } } else { Slider( - value: $value, + value: clampedBinding, label: { label }, minimumValueLabel: { minimumValueLabel }, maximumValueLabel: { maximumValueLabel } @@ -96,6 +109,8 @@ final class SliderProps: UIBaseViewProps { @Field var step: Float? @Field var min: Float? @Field var max: Float? + @Field var lowerLimit: Float? + @Field var upperLimit: Float? var onValueChanged = EventDispatcher() var onEditingChanged = EventDispatcher() } diff --git a/packages/expo-ui/package.json b/packages/expo-ui/package.json index 673b63d5ecc86e..dda2099ea92327 100644 --- a/packages/expo-ui/package.json +++ b/packages/expo-ui/package.json @@ -1,6 +1,6 @@ { "name": "@expo/ui", - "version": "56.0.4", + "version": "56.0.5", "description": "A collection of UI components", "sideEffects": [ "*.fx.js" @@ -43,6 +43,10 @@ "types": "./build/community/picker/index.d.ts", "default": "./src/community/picker/index.tsx" }, + "./community/slider": { + "types": "./build/community/slider/index.d.ts", + "default": "./src/community/slider/index.tsx" + }, "./community/masked-view": { "types": "./build/community/masked-view/index.d.ts", "default": "./src/community/masked-view/index.tsx" diff --git a/packages/expo-ui/src/State/useNativeState.ts b/packages/expo-ui/src/State/useNativeState.ts index d4dd47433fe5ac..a2852c566a0656 100644 --- a/packages/expo-ui/src/State/useNativeState.ts +++ b/packages/expo-ui/src/State/useNativeState.ts @@ -1,5 +1,6 @@ import { requireNativeModule } from 'expo'; import { type SharedObject, useReleasingSharedObject } from 'expo-modules-core'; +import { useRef } from 'react'; import { worklets } from './optionalWorklets'; @@ -19,14 +20,16 @@ export type ObservableState = SharedObject & { }; /** - * Creates an observable native state that is automatically cleaned up when the component unmounts. + * Creates an observable native state that is automatically cleaned up when the + * component unmounts. `initialValue` is captured once on the first render */ export function useNativeState(initialValue: T): ObservableState { + const initialValueRef = useRef(initialValue); return useReleasingSharedObject(() => { - const state = new ExpoUI.ObservableState({ value: initialValue }); + const state = new ExpoUI.ObservableState({ value: initialValueRef.current }); defineValueProperty(state); return state; - }, [JSON.stringify(initialValue)]) as ObservableState; + }, []) as ObservableState; } type NativeObservableState = { diff --git a/packages/expo-ui/src/community/slider/Slider.android.tsx b/packages/expo-ui/src/community/slider/Slider.android.tsx new file mode 100644 index 00000000000000..e240d44d562bf1 --- /dev/null +++ b/packages/expo-ui/src/community/slider/Slider.android.tsx @@ -0,0 +1,49 @@ +import { type SliderProps } from './types'; +import { Host } from '../../jetpack-compose/Host'; +import { Slider as ComposeSlider } from '../../jetpack-compose/Slider'; + +/** + * A drop-in replacement for `@react-native-community/slider` on Android. + * Renders a Material 3 `Slider` wrapped in a Host. + */ +export function Slider(props: SliderProps) { + const { + value, + minimumValue, + maximumValue, + lowerLimit, + upperLimit, + step, + disabled, + inverted, + minimumTrackTintColor, + maximumTrackTintColor, + thumbTintColor, + onValueChange, + style, + } = props; + const min = minimumValue ?? 0; + const max = maximumValue ?? 1; + const steps = step && step > 0 ? Math.max(0, Math.round((max - min) / step) - 1) : 0; + const hostStyle = inverted ? [style, { transform: [{ scaleX: -1 }] }] : style; + const colors = { + activeTrackColor: minimumTrackTintColor, + inactiveTrackColor: maximumTrackTintColor, + thumbColor: thumbTintColor, + }; + return ( + + + + ); +} diff --git a/packages/expo-ui/src/community/slider/Slider.ios.tsx b/packages/expo-ui/src/community/slider/Slider.ios.tsx new file mode 100644 index 00000000000000..b9e0d6a46e98e2 --- /dev/null +++ b/packages/expo-ui/src/community/slider/Slider.ios.tsx @@ -0,0 +1,48 @@ +import { type SliderProps } from './types'; +import { Host } from '../../swift-ui/Host'; +import { Slider as SwiftUISlider } from '../../swift-ui/Slider'; +import { disabled as disabledModifier, tint as tintModifier } from '../../swift-ui/modifiers'; +import type { ModifierConfig } from '../../types'; + +/** + * A drop-in replacement for `@react-native-community/slider` on iOS. + * Renders a SwiftUI `Slider` wrapped in a Host. + */ +export function Slider(props: SliderProps) { + const { + value, + minimumValue, + maximumValue, + lowerLimit, + upperLimit, + step, + disabled, + inverted, + minimumTrackTintColor, + onValueChange, + style, + } = props; + const hostStyle = inverted ? [style, { transform: [{ scaleX: -1 }] }] : style; + // SwiftUI's Slider only exposes `.tint(...)` for the minimum (active) + // track. `maximumTrackTintColor` and `thumbTintColor` are accepted at the + // type level but not visually applied on iOS + const modifiers: ModifierConfig[] = []; + if (disabled) modifiers.push(disabledModifier(true)); + if (minimumTrackTintColor !== undefined) { + modifiers.push(tintModifier(minimumTrackTintColor as string)); + } + return ( + + 0 ? step : undefined} + modifiers={modifiers.length > 0 ? modifiers : undefined} + onValueChange={onValueChange} + /> + + ); +} diff --git a/packages/expo-ui/src/community/slider/Slider.tsx b/packages/expo-ui/src/community/slider/Slider.tsx new file mode 100644 index 00000000000000..60acf1f8c70106 --- /dev/null +++ b/packages/expo-ui/src/community/slider/Slider.tsx @@ -0,0 +1,45 @@ +import * as React from 'react'; +import { StyleSheet } from 'react-native'; + +import { type SliderProps } from './types'; + +/** + * A drop-in replacement for `@react-native-community/slider`. Renders a + * SwiftUI `Slider` on iOS, a Material 3 `Slider` on Android, and a native + * HTML `` on web. + */ +export function Slider(props: SliderProps) { + const { + value, + minimumValue = 0, + maximumValue = 1, + lowerLimit, + upperLimit, + step, + disabled, + inverted, + minimumTrackTintColor, + onValueChange, + style, + } = props; + const clamp = (v: number) => + Math.min(upperLimit ?? Infinity, Math.max(lowerLimit ?? -Infinity, v)); + return ( + 0 ? step : 'any'} + value={clamp(value ?? 0)} + disabled={disabled} + onChange={(e) => onValueChange?.(clamp(e.target.valueAsNumber))} + style={{ + ...(StyleSheet.flatten(style) as React.CSSProperties), + ...(minimumTrackTintColor !== undefined && { + accentColor: minimumTrackTintColor as string, + }), + ...(inverted && { transform: 'scaleX(-1)' }), + }} + /> + ); +} diff --git a/packages/expo-ui/src/community/slider/index.tsx b/packages/expo-ui/src/community/slider/index.tsx new file mode 100644 index 00000000000000..0d36bdae4a6743 --- /dev/null +++ b/packages/expo-ui/src/community/slider/index.tsx @@ -0,0 +1,7 @@ +import { Slider } from './Slider'; + +export type { SliderProps } from './types'; + +export default Slider; +// named export needed for docs generator +export { Slider }; diff --git a/packages/expo-ui/src/community/slider/types.tsx b/packages/expo-ui/src/community/slider/types.tsx new file mode 100644 index 00000000000000..52f9db8cf748a6 --- /dev/null +++ b/packages/expo-ui/src/community/slider/types.tsx @@ -0,0 +1,75 @@ +import type { ColorValue, StyleProp, ViewStyle } from 'react-native'; + +/** + * Props for the `Slider` community drop-in component. + * Compatible with `@react-native-community/slider`. + */ +export type SliderProps = { + /** + * Initial / current value of the slider. + * Behaves like the community lib: passing a new value updates the thumb, + * but live drag emits via `onValueChange` without needing external state. + * @default 0 + */ + value?: number; + /** + * Initial minimum value of the slider. + * @default 0 + */ + minimumValue?: number; + /** + * Initial maximum value of the slider. + * @default 1 + */ + maximumValue?: number; + /** + * The lower limit value of the slider. The user won't be able to slide + * below this limit. + */ + lowerLimit?: number; + /** + * The upper limit value of the slider. The user won't be able to slide + * above this limit. + */ + upperLimit?: number; + /** + * If true the user won't be able to move the slider. + * @default false + */ + disabled?: boolean; + /** + * Step value of the slider. The value should be between 0 and + * (maximumValue - minimumValue). A value of 0 means continuous (no + * snapping). + * @default 0 + */ + step?: number; + /** + * Reverses the direction of the slider so the maximum value is on the + * left and the minimum value is on the right. + * @default false + */ + inverted?: boolean; + /** + * Color of the track to the left of the thumb. + */ + minimumTrackTintColor?: ColorValue; + /** + * Color of the track to the right of the thumb. + * @platform android + */ + maximumTrackTintColor?: ColorValue; + /** + * Color of the thumb. + * @platform android + */ + thumbTintColor?: ColorValue; + /** + * Callback continuously called while the user is dragging the slider. + */ + onValueChange?: (value: number) => void; + /** + * Used to style and layout the Slider. + */ + style?: StyleProp; +}; diff --git a/packages/expo-ui/src/jetpack-compose/Slider/index.tsx b/packages/expo-ui/src/jetpack-compose/Slider/index.tsx index 179a70e492ba4e..05523117de9ca3 100644 --- a/packages/expo-ui/src/jetpack-compose/Slider/index.tsx +++ b/packages/expo-ui/src/jetpack-compose/Slider/index.tsx @@ -47,6 +47,16 @@ export type SliderProps = { * @default 1 */ max?: number; + /** + * Lower limit the user can drag the thumb to. The visible track still + * spans `min..max`, but the thumb stops at `lowerLimit` during drag. + */ + lowerLimit?: number; + /** + * Upper limit the user can drag the thumb to. The visible track still + * spans `min..max`, but the thumb stops at `upperLimit` during drag. + */ + upperLimit?: number; /** * Whether the slider is enabled for user interaction. * @default true diff --git a/packages/expo-ui/src/swift-ui/Slider/index.tsx b/packages/expo-ui/src/swift-ui/Slider/index.tsx index 8f0fc526ad4560..ca540fc58d1c83 100644 --- a/packages/expo-ui/src/swift-ui/Slider/index.tsx +++ b/packages/expo-ui/src/swift-ui/Slider/index.tsx @@ -21,6 +21,16 @@ export type SliderProps = { * The maximum value of the slider. Updating this value does not trigger callbacks if the current value is above `max`. */ max?: number; + /** + * Lower limit the user can drag the thumb to. The visible track still + * spans `min..max`, but the thumb stops at `lowerLimit` during drag. + */ + lowerLimit?: number; + /** + * Upper limit the user can drag the thumb to. The visible track still + * spans `min..max`, but the thumb stops at `upperLimit` during drag. + */ + upperLimit?: number; /** * A label describing the slider's purpose. */ diff --git a/packages/expo-updates/CHANGELOG.md b/packages/expo-updates/CHANGELOG.md index cd9ddcfc127e0c..d9ddde921bd4e2 100644 --- a/packages/expo-updates/CHANGELOG.md +++ b/packages/expo-updates/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.7 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.6 — 2026-05-08 ### 💡 Others diff --git a/packages/expo-updates/android/build.gradle b/packages/expo-updates/android/build.gradle index 500e00b69afc86..214dcd191c67da 100644 --- a/packages/expo-updates/android/build.gradle +++ b/packages/expo-updates/android/build.gradle @@ -42,7 +42,7 @@ expoModule { } group = 'host.exp.exponent' -version = '56.0.6' +version = '56.0.7' // Utility method to derive boolean values from the environment or from Java properties, // and return them as strings to be used in BuildConfig fields @@ -89,7 +89,7 @@ android { namespace "expo.modules.updates" defaultConfig { versionCode 31 - versionName '56.0.6' + versionName '56.0.7' consumerProguardFiles("proguard-rules.pro") testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/packages/expo-updates/package.json b/packages/expo-updates/package.json index 1932f03c3729ff..2ee761dc009be6 100644 --- a/packages/expo-updates/package.json +++ b/packages/expo-updates/package.json @@ -1,6 +1,6 @@ { "name": "expo-updates", - "version": "56.0.6", + "version": "56.0.7", "description": "Fetches and manages remotely-hosted assets and updates to your app's JS bundle.", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/expo-widgets/CHANGELOG.md b/packages/expo-widgets/CHANGELOG.md index 94389f3f284b94..fdfee245c982ad 100644 --- a/packages/expo-widgets/CHANGELOG.md +++ b/packages/expo-widgets/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.6 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.5 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/expo-widgets/package.json b/packages/expo-widgets/package.json index ed9c01747dd8cf..05ceeb0e8d9ffb 100644 --- a/packages/expo-widgets/package.json +++ b/packages/expo-widgets/package.json @@ -1,6 +1,6 @@ { "name": "expo-widgets", - "version": "56.0.5", + "version": "56.0.6", "description": "Widgets.", "main": "build/index.js", "types": "build/index.d.ts", @@ -32,7 +32,7 @@ "homepage": "https://docs.expo.dev/versions/latest/sdk/widgets/", "dependencies": { "@expo/plist": "workspace:^0.6.0", - "@expo/ui": "workspace:~56.0.4" + "@expo/ui": "workspace:~56.0.5" }, "devDependencies": { "@expo/spawn-async": "^1.7.2", diff --git a/packages/expo/CHANGELOG.md b/packages/expo/CHANGELOG.md index ab308c554c78a2..54c6726a41ffdf 100644 --- a/packages/expo/CHANGELOG.md +++ b/packages/expo/CHANGELOG.md @@ -8,10 +8,18 @@ ### 🐛 Bug fixes -- [iOS] Fixed launch-time crash in apps with source-built React Native by wiring the React `RuntimeScheduler` into `ExpoModulesJSI` from `ExpoReactNativeFactory`. ([#45636](https://github.com/expo/expo/pull/45636) by [@tsapeta](https://github.com/tsapeta)) - ### 💡 Others +## 56.0.0-preview.9 — 2026-05-12 + +_This version does not introduce any user-facing changes._ + +## 56.0.0-preview.8 — 2026-05-11 + +### 🐛 Bug fixes + +- [iOS] Fixed launch-time crash in apps with source-built React Native by wiring the React `RuntimeScheduler` into `ExpoModulesJSI` from `ExpoReactNativeFactory`. ([#45636](https://github.com/expo/expo/pull/45636) by [@tsapeta](https://github.com/tsapeta)) + ## 56.0.0-preview.7 — 2026-05-08 ### 🐛 Bug fixes diff --git a/packages/expo/android/build.gradle b/packages/expo/android/build.gradle index 46ec72c6db9217..3d903791022bb1 100644 --- a/packages/expo/android/build.gradle +++ b/packages/expo/android/build.gradle @@ -10,7 +10,7 @@ buildscript { } group = 'host.exp.exponent' -version = '56.0.0-preview.7' +version = '56.0.0-preview.9' expoModule { // We can't prebuild the module because it depends on the generated files. @@ -21,7 +21,7 @@ android { namespace "expo.core" defaultConfig { versionCode 1 - versionName "56.0.0-preview.7" + versionName "56.0.0-preview.9" consumerProguardFiles("proguard-rules.pro") } testOptions { diff --git a/packages/expo/bundledNativeModules.json b/packages/expo/bundledNativeModules.json index 56438d5ca991ee..4dfff02df28718 100644 --- a/packages/expo/bundledNativeModules.json +++ b/packages/expo/bundledNativeModules.json @@ -1,8 +1,8 @@ { "@expo/fingerprint": "~0.17.4", - "@expo/metro-runtime": "~56.0.5", + "@expo/metro-runtime": "~56.0.6", "@expo/vector-icons": "^15.0.2", - "@expo/ui": "~56.0.4", + "@expo/ui": "~56.0.5", "@react-native-async-storage/async-storage": "2.2.0", "@react-native-community/datetimepicker": "9.1.0", "@react-native-masked-view/masked-view": "0.3.2", @@ -16,28 +16,28 @@ "expo-analytics-amplitude": "~11.3.0", "expo-app-auth": "~11.1.0", "expo-app-loader-provider": "~8.0.0", - "expo-app-metrics": "~56.0.5", + "expo-app-metrics": "~56.0.6", "expo-apple-authentication": "~56.0.3", "expo-application": "~56.0.3", - "expo-asset": "~56.0.6", - "expo-audio": "~56.0.3", - "expo-auth-session": "~56.0.4", - "expo-background-fetch": "~56.0.5", - "expo-background-task": "~56.0.5", + "expo-asset": "~56.0.7", + "expo-audio": "~56.0.4", + "expo-auth-session": "~56.0.5", + "expo-background-fetch": "~56.0.6", + "expo-background-task": "~56.0.6", "expo-battery": "~56.0.3", "expo-blur": "~56.0.3", "expo-brightness": "~56.0.3", - "expo-brownfield": "~56.0.5", - "expo-build-properties": "~56.0.5", + "expo-brownfield": "~56.0.6", + "expo-build-properties": "~56.0.6", "expo-calendar": "~56.0.4", "expo-camera": "~56.0.3", "expo-cellular": "~56.0.3", "expo-checkbox": "~56.0.1", "expo-clipboard": "~56.0.3", - "expo-constants": "~56.0.6", + "expo-constants": "~56.0.7", "expo-contacts": "~56.0.3", "expo-crypto": "~56.0.3", - "expo-dev-client": "~56.0.5", + "expo-dev-client": "~56.0.6", "expo-device": "~56.0.4", "expo-document-picker": "~56.0.3", "expo-file-system": "~56.0.4", @@ -48,37 +48,37 @@ "expo-haptics": "~56.0.3", "expo-image": "~56.0.4", "expo-image-loader": "~56.0.3", - "expo-image-manipulator": "~56.0.5", - "expo-image-picker": "~56.0.5", + "expo-image-manipulator": "~56.0.6", + "expo-image-picker": "~56.0.6", "expo-intent-launcher": "~56.0.3", - "expo-insights": "~56.0.5", + "expo-insights": "~56.0.6", "expo-keep-awake": "~56.0.3", "expo-linear-gradient": "~56.0.4", - "expo-linking": "~56.0.4", + "expo-linking": "~56.0.5", "expo-local-authentication": "~56.0.3", "expo-localization": "~56.0.3", - "expo-location": "~56.0.5", + "expo-location": "~56.0.6", "expo-mail-composer": "~56.0.3", "expo-manifests": "~56.0.2", - "expo-maps": "~56.0.3", + "expo-maps": "~56.0.4", "expo-mcp": "~0.2.1", "expo-media-library": "~56.0.3", "expo-mesh-gradient": "~56.0.3", - "expo-module-template": "~56.0.3", - "expo-modules-core": "~56.0.5", + "expo-module-template": "~56.0.4", + "expo-modules-core": "~56.0.6", "expo-navigation-bar": "~56.0.3", "expo-network": "~56.0.3", - "expo-notifications": "~56.0.5", - "expo-observe": "~56.0.5", + "expo-notifications": "~56.0.6", + "expo-observe": "~56.0.6", "expo-print": "~56.0.3", "expo-live-photo": "~56.0.3", - "expo-router": "~56.1.1", + "expo-router": "~56.1.3", "expo-screen-capture": "~56.0.3", "expo-screen-orientation": "~56.0.3", "expo-secure-store": "~56.0.3", "expo-sensors": "~56.0.3", "expo-server": "~56.0.1", - "expo-sharing": "~56.0.5", + "expo-sharing": "~56.0.6", "expo-sms": "~56.0.3", "expo-speech": "~56.0.3", "expo-splash-screen": "~56.0.4", @@ -87,13 +87,13 @@ "expo-store-review": "~56.0.3", "expo-symbols": "~56.0.5", "expo-system-ui": "~56.0.4", - "expo-task-manager": "~56.0.5", + "expo-task-manager": "~56.0.6", "expo-tracking-transparency": "~56.0.3", - "expo-updates": "~56.0.6", + "expo-updates": "~56.0.7", "expo-video-thumbnails": "~56.0.3", "expo-video": "~56.1.0", "expo-web-browser": "~56.0.4", - "expo-widgets": "~56.0.5", + "expo-widgets": "~56.0.6", "jest-expo": "~56.0.0", "lottie-react-native": "~7.3.4", "react": "19.2.3", diff --git a/packages/expo/package.json b/packages/expo/package.json index 4815996c6f4b74..aa3b1c64e4ba0f 100644 --- a/packages/expo/package.json +++ b/packages/expo/package.json @@ -1,6 +1,6 @@ { "name": "expo", - "version": "56.0.0-preview.7", + "version": "56.0.0-preview.9", "description": "The Expo SDK", "main": "src/Expo.ts", "module": "src/Expo.ts", @@ -75,26 +75,26 @@ "homepage": "https://github.com/expo/expo/tree/main/packages/expo", "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "workspace:^56.1.0", + "@expo/cli": "workspace:^56.1.2", "@expo/config": "workspace:~56.0.3", "@expo/config-plugins": "workspace:~56.0.3", "@expo/devtools": "workspace:~56.0.2", "@expo/dom-webview": "workspace:~56.0.4", "@expo/fingerprint": "workspace:^0.17.4", - "@expo/local-build-cache-provider": "workspace:^56.0.2", - "@expo/log-box": "workspace:^56.0.6", + "@expo/local-build-cache-provider": "workspace:^56.0.3", + "@expo/log-box": "workspace:^56.0.7", "@expo/metro": "~56.0.0", - "@expo/metro-config": "workspace:~56.0.5", + "@expo/metro-config": "workspace:~56.0.6", "@expo/vector-icons": "^15.0.2", "@ungap/structured-clone": "^1.3.0", - "babel-preset-expo": "workspace:~56.0.5", - "expo-asset": "workspace:~56.0.6", - "expo-constants": "workspace:~56.0.6", + "babel-preset-expo": "workspace:~56.0.6", + "expo-asset": "workspace:~56.0.7", + "expo-constants": "workspace:~56.0.7", "expo-file-system": "workspace:~56.0.4", "expo-font": "workspace:~56.0.3", "expo-keep-awake": "workspace:~56.0.3", - "expo-modules-autolinking": "workspace:~56.0.3", - "expo-modules-core": "workspace:~56.0.5", + "expo-modules-autolinking": "workspace:~56.0.4", + "expo-modules-core": "workspace:~56.0.6", "pretty-format": "^29.7.0", "react-refresh": "^0.14.2", "whatwg-url-minimum": "^0.1.2" diff --git a/packages/patch-project/CHANGELOG.md b/packages/patch-project/CHANGELOG.md index b169455c119e7b..60685e995e344c 100644 --- a/packages/patch-project/CHANGELOG.md +++ b/packages/patch-project/CHANGELOG.md @@ -10,6 +10,10 @@ ### 💡 Others +## 56.0.8 — 2026-05-11 + +_This version does not introduce any user-facing changes._ + ## 56.0.7 — 2026-05-08 _This version does not introduce any user-facing changes._ diff --git a/packages/patch-project/package.json b/packages/patch-project/package.json index bfc6e371dedb88..44f8af53accb8f 100644 --- a/packages/patch-project/package.json +++ b/packages/patch-project/package.json @@ -1,6 +1,6 @@ { "name": "patch-project", - "version": "56.0.7", + "version": "56.0.8", "description": "An Expo config-plugin and tool to support patch-based CNG", "main": "build/withPatchPlugin.js", "types": "build/withPatchPlugin.d.ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f081c5b877006f..489dcdd49c3eba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1798,22 +1798,22 @@ importers: specifier: workspace:^0.9.2 version: link:../image-utils '@expo/inline-modules': - specifier: workspace:^0.0.4 + specifier: workspace:^0.0.5 version: link:../inline-modules '@expo/json-file': specifier: workspace:^10.1.0 version: link:../json-file '@expo/log-box': - specifier: workspace:^56.0.6 + specifier: workspace:^56.0.7 version: link:../log-box '@expo/metro': specifier: ~56.0.0 version: 56.0.0 '@expo/metro-config': - specifier: workspace:~56.0.5 + specifier: workspace:~56.0.6 version: link:../metro-config '@expo/metro-file-map': - specifier: workspace:^56.0.0 + specifier: workspace:^56.0.1 version: link:../metro-file-map '@expo/osascript': specifier: workspace:^2.5.0 @@ -1825,13 +1825,13 @@ importers: specifier: workspace:^0.6.0 version: link:../plist '@expo/prebuild-config': - specifier: workspace:^56.0.4 + specifier: workspace:^56.0.5 version: link:../prebuild-config '@expo/require-utils': specifier: workspace:^56.1.0 version: link:../require-utils '@expo/router-server': - specifier: workspace:^56.0.5 + specifier: workspace:^56.0.6 version: link:../router-server '@expo/schema-utils': specifier: workspace:^56.0.0 @@ -2664,7 +2664,7 @@ importers: packages/@expo/metro-runtime: dependencies: '@expo/log-box': - specifier: workspace:^56.0.6 + specifier: workspace:^56.0.7 version: link:../log-box anser: specifier: ^1.4.9 @@ -2804,7 +2804,7 @@ importers: specifier: ^4.3.1 version: 4.4.3 expo-modules-autolinking: - specifier: workspace:~56.0.3 + specifier: workspace:~56.0.4 version: link:../../expo-modules-autolinking resolve-from: specifier: ^5.0.0 @@ -2869,13 +2869,13 @@ importers: packages/@expo/router-server: dependencies: '@expo/metro-runtime': - specifier: workspace:^56.0.5 + specifier: workspace:^56.0.6 version: link:../metro-runtime debug: specifier: ^4.3.4 version: 4.4.3 expo-constants: - specifier: workspace:^56.0.6 + specifier: workspace:^56.0.7 version: link:../../expo-constants expo-font: specifier: workspace:^56.0.3 @@ -3096,7 +3096,7 @@ importers: specifier: ^4.3.4 version: 4.4.3 expo-widgets: - specifier: workspace:^56.0.5 + specifier: workspace:^56.0.6 version: link:../expo-widgets devDependencies: '@babel/core': @@ -3437,7 +3437,7 @@ importers: specifier: ^7.20.0 version: 7.29.2 '@expo/cli': - specifier: workspace:^56.1.0 + specifier: workspace:^56.1.2 version: link:../@expo/cli '@expo/config': specifier: workspace:~56.0.3 @@ -3455,16 +3455,16 @@ importers: specifier: workspace:^0.17.4 version: link:../@expo/fingerprint '@expo/local-build-cache-provider': - specifier: workspace:^56.0.2 + specifier: workspace:^56.0.3 version: link:../@expo/local-build-cache-provider '@expo/log-box': - specifier: workspace:^56.0.6 + specifier: workspace:^56.0.7 version: link:../@expo/log-box '@expo/metro': specifier: ~56.0.0 version: 56.0.0 '@expo/metro-config': - specifier: workspace:~56.0.5 + specifier: workspace:~56.0.6 version: link:../@expo/metro-config '@expo/vector-icons': specifier: ^15.0.2 @@ -3473,13 +3473,13 @@ importers: specifier: ^1.3.0 version: 1.3.0 babel-preset-expo: - specifier: workspace:~56.0.5 + specifier: workspace:~56.0.6 version: link:../babel-preset-expo expo-asset: - specifier: workspace:~56.0.6 + specifier: workspace:~56.0.7 version: link:../expo-asset expo-constants: - specifier: workspace:~56.0.6 + specifier: workspace:~56.0.7 version: link:../expo-constants expo-file-system: specifier: workspace:~56.0.4 @@ -3491,10 +3491,10 @@ importers: specifier: workspace:~56.0.3 version: link:../expo-keep-awake expo-modules-autolinking: - specifier: workspace:~56.0.3 + specifier: workspace:~56.0.4 version: link:../expo-modules-autolinking expo-modules-core: - specifier: workspace:~56.0.5 + specifier: workspace:~56.0.6 version: link:../expo-modules-core pretty-format: specifier: ^29.7.0 @@ -3628,7 +3628,7 @@ importers: specifier: workspace:^0.9.2 version: link:../@expo/image-utils expo-constants: - specifier: workspace:~56.0.6 + specifier: workspace:~56.0.7 version: link:../expo-constants react: specifier: 19.2.3 @@ -3687,13 +3687,13 @@ importers: specifier: workspace:~56.0.3 version: link:../expo-application expo-constants: - specifier: workspace:~56.0.6 + specifier: workspace:~56.0.7 version: link:../expo-constants expo-crypto: specifier: workspace:~56.0.3 version: link:../expo-crypto expo-linking: - specifier: workspace:~56.0.4 + specifier: workspace:~56.0.5 version: link:../expo-linking expo-web-browser: specifier: workspace:~56.0.4 @@ -3721,7 +3721,7 @@ importers: packages/expo-background-fetch: dependencies: expo-task-manager: - specifier: workspace:~56.0.5 + specifier: workspace:~56.0.6 version: link:../expo-task-manager devDependencies: '@types/node': @@ -3737,7 +3737,7 @@ importers: packages/expo-background-task: dependencies: expo-task-manager: - specifier: workspace:~56.0.5 + specifier: workspace:~56.0.6 version: link:../expo-task-manager devDependencies: '@types/node': @@ -3840,7 +3840,7 @@ importers: specifier: ^5.2.0 version: 5.2.2 expo-build-properties: - specifier: workspace:~56.0.5 + specifier: workspace:~56.0.6 version: link:../expo-build-properties expo-manifests: specifier: workspace:~56.0.1 @@ -4098,10 +4098,10 @@ importers: packages/expo-dev-client: dependencies: expo-dev-launcher: - specifier: workspace:~56.0.5 + specifier: workspace:~56.0.6 version: link:../expo-dev-launcher expo-dev-menu: - specifier: workspace:~56.0.5 + specifier: workspace:~56.0.6 version: link:../expo-dev-menu expo-dev-menu-interface: specifier: workspace:~56.0.0 @@ -4132,7 +4132,7 @@ importers: specifier: workspace:^56.0.0 version: link:../@expo/schema-utils expo-dev-menu: - specifier: workspace:~56.0.5 + specifier: workspace:~56.0.6 version: link:../expo-dev-menu expo-manifests: specifier: workspace:~56.0.1 @@ -4589,7 +4589,7 @@ importers: packages/expo-linking: dependencies: expo-constants: - specifier: workspace:~56.0.6 + specifier: workspace:~56.0.7 version: link:../expo-constants invariant: specifier: ^2.2.4 @@ -4873,7 +4873,7 @@ importers: specifier: ~0.0.8 version: 0.0.8 expo-modules-jsi: - specifier: workspace:~56.0.2 + specifier: workspace:~56.0.3 version: link:../expo-modules-jsi invariant: specifier: ^2.2.4 @@ -4996,7 +4996,7 @@ importers: specifier: workspace:~56.0.3 version: link:../expo-application expo-constants: - specifier: workspace:~56.0.6 + specifier: workspace:~56.0.7 version: link:../expo-constants react: specifier: 19.2.3 @@ -5024,7 +5024,7 @@ importers: packages/expo-observe: dependencies: expo-app-metrics: - specifier: workspace:~56.0.5 + specifier: workspace:~56.0.6 version: link:../expo-app-metrics expo-eas-client: specifier: workspace:~56.0.0 @@ -5081,16 +5081,16 @@ importers: packages/expo-router: dependencies: '@expo/log-box': - specifier: workspace:^56.0.6 + specifier: workspace:^56.0.7 version: link:../@expo/log-box '@expo/metro-runtime': - specifier: workspace:^56.0.5 + specifier: workspace:^56.0.6 version: link:../@expo/metro-runtime '@expo/schema-utils': specifier: workspace:^56.0.0 version: link:../@expo/schema-utils '@expo/ui': - specifier: workspace:^56.0.4 + specifier: workspace:^56.0.5 version: link:../expo-ui '@radix-ui/react-slot': specifier: ^1.2.0 @@ -5120,7 +5120,7 @@ importers: specifier: ^4.0.0 version: 4.0.0 expo-constants: - specifier: workspace:^56.0.6 + specifier: workspace:^56.0.7 version: link:../expo-constants expo-glass-effect: specifier: workspace:^56.0.4 @@ -5129,7 +5129,7 @@ importers: specifier: workspace:^56.0.4 version: link:../expo-image expo-linking: - specifier: workspace:^56.0.4 + specifier: workspace:^56.0.5 version: link:../expo-linking expo-server: specifier: workspace:^56.0.0 @@ -5897,7 +5897,7 @@ importers: specifier: workspace:^0.6.0 version: link:../@expo/plist '@expo/ui': - specifier: workspace:~56.0.4 + specifier: workspace:~56.0.5 version: link:../expo-ui react: specifier: 19.2.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 688932566b121f..50216695a257f6 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -48,3 +48,11 @@ minimumReleaseAgeExclude: - 'react-native-reanimated' - 'react-native-screens' - 'whatwg-url-minimum' + - 'expo' + - 'expo-asset' + - 'expo-constants' + - 'expo-modules-autolinking' + - 'expo-modules-core' + - 'expo-modules-jsi' + - 'babel-preset-expo' + - 'jest-expo' diff --git a/templates/expo-template-bare-minimum/package.json b/templates/expo-template-bare-minimum/package.json index baa0a4a2fd3765..653ad6e1936134 100644 --- a/templates/expo-template-bare-minimum/package.json +++ b/templates/expo-template-bare-minimum/package.json @@ -2,7 +2,7 @@ "name": "expo-template-bare-minimum", "description": "This bare project template includes a minimal setup for using unimodules with React Native.", "license": "0BSD", - "version": "56.0.7", + "version": "56.0.9", "main": "index.js", "scripts": { "start": "expo start --dev-client", @@ -11,7 +11,7 @@ "web": "expo start --web" }, "dependencies": { - "expo": "~56.0.0-preview.7", + "expo": "~56.0.0-preview.9", "expo-status-bar": "~56.0.4", "react": "19.2.3", "react-native": "0.85.3" diff --git a/templates/expo-template-blank-typescript/package.json b/templates/expo-template-blank-typescript/package.json index f043f2e14f6dd9..23fd3d178c5ee6 100644 --- a/templates/expo-template-blank-typescript/package.json +++ b/templates/expo-template-blank-typescript/package.json @@ -2,7 +2,7 @@ "name": "expo-template-blank-typescript", "description": "The Blank project template includes the minimum dependencies to run and an empty root component.", "license": "0BSD", - "version": "56.0.7", + "version": "56.0.9", "main": "index.ts", "scripts": { "start": "expo start", @@ -11,7 +11,7 @@ "web": "expo start --web" }, "dependencies": { - "expo": "~56.0.0-preview.7", + "expo": "~56.0.0-preview.9", "expo-status-bar": "~56.0.4", "react": "19.2.3", "react-native": "0.85.3" diff --git a/templates/expo-template-blank/package.json b/templates/expo-template-blank/package.json index 608212d773c755..bc5285c7247d59 100644 --- a/templates/expo-template-blank/package.json +++ b/templates/expo-template-blank/package.json @@ -2,7 +2,7 @@ "name": "expo-template-blank", "description": "The Blank project template includes the minimum dependencies to run and an empty root component.", "license": "0BSD", - "version": "56.0.7", + "version": "56.0.9", "main": "index.js", "scripts": { "start": "expo start", @@ -11,7 +11,7 @@ "web": "expo start --web" }, "dependencies": { - "expo": "~56.0.0-preview.7", + "expo": "~56.0.0-preview.9", "expo-status-bar": "~56.0.4", "react": "19.2.3", "react-native": "0.85.3" diff --git a/templates/expo-template-default/package.json b/templates/expo-template-default/package.json index 0a61c04f96b8b3..73e246f90b844d 100644 --- a/templates/expo-template-default/package.json +++ b/templates/expo-template-default/package.json @@ -2,7 +2,7 @@ "name": "expo-template-default", "license": "0BSD", "main": "expo-router/entry", - "version": "56.0.7", + "version": "56.0.9", "scripts": { "start": "expo start", "reset-project": "node ./scripts/reset-project.js", @@ -12,15 +12,15 @@ "lint": "expo lint" }, "dependencies": { - "@expo/ui": "~56.0.4", - "expo": "~56.0.0-preview.7", - "expo-constants": "~56.0.6", + "@expo/ui": "~56.0.5", + "expo": "~56.0.0-preview.9", + "expo-constants": "~56.0.7", "expo-device": "~56.0.4", "expo-font": "~56.0.3", "expo-glass-effect": "~56.0.4", "expo-image": "~56.0.4", - "expo-linking": "~56.0.4", - "expo-router": "~56.1.1", + "expo-linking": "~56.0.5", + "expo-router": "~56.1.3", "expo-splash-screen": "~56.0.4", "expo-status-bar": "~56.0.4", "expo-symbols": "~56.0.5", diff --git a/templates/expo-template-tabs/package.json b/templates/expo-template-tabs/package.json index 90bb61adbdf5d4..f2bb758a3e429e 100644 --- a/templates/expo-template-tabs/package.json +++ b/templates/expo-template-tabs/package.json @@ -3,7 +3,7 @@ "main": "expo-router/entry", "description": "The Tab Navigation project template includes several example screens.", "license": "0BSD", - "version": "56.0.7", + "version": "56.0.9", "scripts": { "start": "expo start", "android": "expo start --android", @@ -11,12 +11,12 @@ "web": "expo start --web" }, "dependencies": { - "expo": "~56.0.0-preview.7", + "expo": "~56.0.0-preview.9", "expo-symbols": "~56.0.5", - "expo-constants": "~56.0.6", + "expo-constants": "~56.0.7", "expo-font": "~56.0.3", - "expo-linking": "~56.0.4", - "expo-router": "~56.1.1", + "expo-linking": "~56.0.5", + "expo-router": "~56.1.3", "expo-splash-screen": "~56.0.4", "expo-status-bar": "~56.0.4", "expo-web-browser": "~56.0.4", diff --git a/tools/src/commands/GenerateDocsAPIData.ts b/tools/src/commands/GenerateDocsAPIData.ts index 8a98e7733dd592..2ecdf60eacc4c5 100644 --- a/tools/src/commands/GenerateDocsAPIData.ts +++ b/tools/src/commands/GenerateDocsAPIData.ts @@ -28,6 +28,7 @@ const uiPackagesMapping: Record = { 'expo-ui/community/masked-view': ['community/masked-view/index.tsx', 'expo-ui'], 'expo-ui/community/picker': ['community/picker/index.tsx', 'expo-ui'], 'expo-ui/community/segmented-control': ['community/segmented-control/index.tsx', 'expo-ui'], + 'expo-ui/community/slider': ['community/slider/index.tsx', 'expo-ui'], // Swift UI 'expo-ui/swift-ui/accessorywidgetbackground': [