From 00b5ff01ee9df4e72bf48b20ab34469a339943fc Mon Sep 17 00:00:00 2001 From: Oleksii Bulenok Date: Mon, 27 Jul 2026 14:00:44 +0200 Subject: [PATCH] expo bump --- package.json | 100 ++++++++--------- ...15.0.8.patch => expo-haptics@57.0.1.patch} | 0 ....patch.md => expo-haptics@57.0.1.patch.md} | 0 patches/expo-image@3.0.11.patch | 103 ------------------ patches/expo-image@3.0.11.patch.md | 3 - ....patch => expo-media-library@57.0.3.patch} | 0 ....md => expo-media-library@57.0.3.patch.md} | 0 ....patch => expo-notifications@57.0.7.patch} | 0 ....md => expo-notifications@57.0.7.patch.md} | 0 ....0.17.patch => expo-updates@57.0.10.patch} | 0 ...patch.md => expo-updates@57.0.10.patch.md} | 0 patches/react-native-gesture-handler.patch | 31 ------ patches/react-native-gesture-handler.patch.md | 5 - ...t-native-keyboard-controller@1.21.9.patch} | 0 ...1.patch => react-native-svg@15.15.4.patch} | 0 patches/react-native-view-shot@4.0.3.patch | 28 ----- patches/react-native-view-shot@4.0.3.patch.md | 3 - pnpm-workspace.yaml | 14 +-- 18 files changed, 56 insertions(+), 231 deletions(-) rename patches/{expo-haptics@15.0.8.patch => expo-haptics@57.0.1.patch} (100%) rename patches/{expo-haptics@15.0.8.patch.md => expo-haptics@57.0.1.patch.md} (100%) delete mode 100644 patches/expo-image@3.0.11.patch delete mode 100644 patches/expo-image@3.0.11.patch.md rename patches/{expo-media-library@18.2.1.patch => expo-media-library@57.0.3.patch} (100%) rename patches/{expo-media-library@18.2.1.patch.md => expo-media-library@57.0.3.patch.md} (100%) rename patches/{expo-notifications@0.32.17.patch => expo-notifications@57.0.7.patch} (100%) rename patches/{expo-notifications@0.32.17.patch.md => expo-notifications@57.0.7.patch.md} (100%) rename patches/{expo-updates@29.0.17.patch => expo-updates@57.0.10.patch} (100%) rename patches/{expo-updates@29.0.17.patch.md => expo-updates@57.0.10.patch.md} (100%) delete mode 100644 patches/react-native-gesture-handler.patch delete mode 100644 patches/react-native-gesture-handler.patch.md rename patches/{react-native-keyboard-controller@1.21.8.patch => react-native-keyboard-controller@1.21.9.patch} (100%) rename patches/{react-native-svg@15.12.1.patch => react-native-svg@15.15.4.patch} (100%) delete mode 100644 patches/react-native-view-shot@4.0.3.patch delete mode 100644 patches/react-native-view-shot@4.0.3.patch.md diff --git a/package.json b/package.json index fa792a1ae2..b7c0f1829e 100644 --- a/package.json +++ b/package.json @@ -159,43 +159,43 @@ "emoji-mart": "^5.6.0", "emoji-regex": "^10.4.0", "eventemitter3": "^5.0.1", - "expo": "54.0.35", + "expo": "57.0.8", "expo-age-range": "0.2.18", - "expo-application": "~7.0.8", - "expo-asset": "~12.0.13", - "expo-blur": "~15.0.8", - "expo-build-properties": "~1.0.10", - "expo-camera": "~17.0.10", - "expo-clipboard": "~8.0.8", - "expo-contacts": "^15.0.10", - "expo-dev-client": "~6.0.20", - "expo-device": "~8.0.10", - "expo-file-system": "~19.0.21", - "expo-font": "~14.0.11", - "expo-glass-effect": "0.1.10", - "expo-haptics": "~15.0.8", - "expo-image": "~3.0.11", - "expo-image-manipulator": "~14.0.8", - "expo-image-picker": "~17.0.10", - "expo-intent-launcher": "~13.0.8", - "expo-keep-awake": "~15.0.8", - "expo-linear-gradient": "~15.0.8", - "expo-linking": "~8.0.11", - "expo-localization": "~17.0.8", - "expo-location": "~19.0.8", - "expo-media-library": "~18.2.1", - "expo-notifications": "~0.32.17", + "expo-application": "~57.0.2", + "expo-asset": "~57.0.7", + "expo-blur": "~57.0.2", + "expo-build-properties": "~57.0.7", + "expo-camera": "~57.0.3", + "expo-clipboard": "~57.0.1", + "expo-contacts": "^57.0.2", + "expo-dev-client": "~57.0.9", + "expo-device": "~57.0.1", + "expo-file-system": "~57.0.1", + "expo-font": "~57.0.1", + "expo-glass-effect": "57.0.1", + "expo-haptics": "~57.0.1", + "expo-image": "~57.0.1", + "expo-image-manipulator": "~57.0.6", + "expo-image-picker": "~57.0.6", + "expo-intent-launcher": "~57.0.1", + "expo-keep-awake": "~57.0.1", + "expo-linear-gradient": "~57.0.1", + "expo-linking": "~57.0.4", + "expo-localization": "~57.0.1", + "expo-location": "~57.0.6", + "expo-media-library": "~57.0.3", + "expo-notifications": "~57.0.7", "expo-paste-input": "^0.2.1", "expo-privacy-sensitive": "^0.2.0", - "expo-screen-orientation": "~9.0.8", - "expo-sharing": "~14.0.8", - "expo-sms": "^14.0.7", - "expo-splash-screen": "~31.0.13", - "expo-system-ui": "~6.0.9", - "expo-updates": "~29.0.17", - "expo-video": "~3.0.16", - "expo-video-thumbnails": "^10.0.8", - "expo-web-browser": "~15.0.10", + "expo-screen-orientation": "~57.0.1", + "expo-sharing": "~57.0.7", + "expo-sms": "^57.0.1", + "expo-splash-screen": "~57.0.5", + "expo-system-ui": "~57.0.1", + "expo-updates": "~57.0.10", + "expo-video": "~57.0.2", + "expo-video-thumbnails": "^57.0.1", + "expo-web-browser": "~57.0.2", "fast-deep-equal": "^3.1.3", "fast-text-encoding": "^1.0.6", "fuse.js": "^7.1.0", @@ -215,36 +215,36 @@ "normalize-url": "^8.0.0", "psl": "1.9.0", "radix-ui": "^1.4.3", - "react": "19.1.0", + "react": "19.2.3", "react-compiler-runtime": "19.1.0-rc.3", - "react-dom": "19.1.0", + "react-dom": "19.2.3", "react-hotkeys-hook": "5.2.4", "react-image-crop": "^11.0.7", "react-is": "19", "react-keyed-flatten-children": "^5.0.0", - "react-native": "0.81.5", + "react-native": "0.86.0", "react-native-compressor": "1.13.0", "react-native-date-picker": "^5.0.13", "react-native-device-attest": "^0.1.6", "react-native-drawer-layout": "^4.2.3", "react-native-edge-to-edge": "^1.8.1", - "react-native-gesture-handler": "~2.30.0", - "react-native-keyboard-controller": "^1.21.8", + "react-native-gesture-handler": "~2.32.0", + "react-native-keyboard-controller": "^1.21.9", "react-native-mmkv": "^3.3.3", "react-native-pager-view": "6.8.0", "react-native-progress": "^5.0.1", "react-native-qrcode-styled": "^0.3.3", "react-native-reanimated": "~4.3.2", - "react-native-safe-area-context": "~5.6.0", - "react-native-screens": "4.24.0", + "react-native-safe-area-context": "~5.7.0", + "react-native-screens": "4.26.2", "react-native-scroll-forwarder": "link:./modules/react-native-scroll-forwarder", - "react-native-svg": "15.12.1", + "react-native-svg": "15.15.4", "react-native-uuid": "^2.0.3", - "react-native-view-shot": "^4.0.3", + "react-native-view-shot": "^5.1.0", "react-native-web": "^0.21.0", "react-native-web-webview": "^1.0.2", - "react-native-webview": "^13.15.0", - "react-native-worklets": "0.8.3", + "react-native-webview": "^13.16.1", + "react-native-worklets": "0.10.0", "react-remove-scroll-bar": "^2.3.8", "react-responsive": "^10.0.1", "react-textarea-autosize": "^8.5.3", @@ -275,13 +275,13 @@ "@types/lodash.debounce": "^4.0.7", "@types/lodash.shuffle": "^4.2.7", "@types/psl": "1.1.1", - "@types/react": "^19.1.17", - "@types/react-dom": "^19.1.11", + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", "@typescript/native": "npm:typescript@^7.0.2", "babel-jest": "^29.7.0", "babel-plugin-module-resolver": "^5.0.2", "babel-plugin-react-compiler": "19.1.0-rc.3", - "babel-preset-expo": "~54.0.10", + "babel-preset-expo": "~57.0.4", "eslint-plugin-bsky-internal": "link:eslint", "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-native": "^5.0.0", @@ -292,7 +292,7 @@ "husky": "^9.1.7", "is-ci": "^3.0.1", "jest": "^29.7.0", - "jest-expo": "~54.0.17", + "jest-expo": "~57.0.2", "jest-junit": "^16.0.0", "lint-staged": "^17.0.8", "oxlint": "^1.73.0", @@ -302,7 +302,7 @@ "react-refresh": "^0.14.0", "svgo": "^4.0.2", "ts-plugin-sort-import-suggestions": "^1.0.4", - "typescript": "npm:@typescript/typescript6@^6.0.2", + "typescript": "^6.0.3", "webpack-bundle-analyzer": "^4.10.1" }, "jest": { diff --git a/patches/expo-haptics@15.0.8.patch b/patches/expo-haptics@57.0.1.patch similarity index 100% rename from patches/expo-haptics@15.0.8.patch rename to patches/expo-haptics@57.0.1.patch diff --git a/patches/expo-haptics@15.0.8.patch.md b/patches/expo-haptics@57.0.1.patch.md similarity index 100% rename from patches/expo-haptics@15.0.8.patch.md rename to patches/expo-haptics@57.0.1.patch.md diff --git a/patches/expo-image@3.0.11.patch b/patches/expo-image@3.0.11.patch deleted file mode 100644 index c132d6869e..0000000000 --- a/patches/expo-image@3.0.11.patch +++ /dev/null @@ -1,103 +0,0 @@ -diff --git a/build/Image.types.d.ts b/build/Image.types.d.ts -index 022ae487e65ae9d624f8a4be262b01944928f250..416504fe18ecd00fdc713faca23485fb292caf2c 100644 ---- a/build/Image.types.d.ts -+++ b/build/Image.types.d.ts -@@ -152,6 +152,16 @@ export interface ImageProps extends Omit { - * @default 'normal' - */ - priority?: 'low' | 'normal' | 'high' | null; -+ /** -+ * The loading behavior for the image. Maps to the native HTML `loading` attribute on web. -+ * -+ * - `'lazy'` - Defers loading until the image is near the viewport. -+ * - `'eager'` - Loads the image immediately. -+ * -+ * @default undefined -+ * @platform web -+ */ -+ loading?: 'lazy' | 'eager' | null; - /** - * Determines whether to cache the image and where: on the disk, in the memory or both. - * -diff --git a/src/ExpoImage.web.tsx b/src/ExpoImage.web.tsx -index 2a49ff00649b374b86fa780653a4b0d6f13a4a57..1c3de93ef280bf6f3c27bed34c794b8ff59e3db3 100644 ---- a/src/ExpoImage.web.tsx -+++ b/src/ExpoImage.web.tsx -@@ -70,6 +70,7 @@ export default function ExpoImage({ - onLoadEnd, - onDisplay, - priority, -+ loading, - blurRadius, - recyclingKey, - style, -@@ -118,6 +119,7 @@ export default function ExpoImage({ - accessibilityLabel={accessibilityLabel ?? alt} - cachePolicy={cachePolicy} - priority={priority} -+ loading={loading} - tintColor={tintColor} - /> - ), -@@ -149,6 +151,7 @@ export default function ExpoImage({ - className={className} - cachePolicy={cachePolicy} - priority={priority} -+ loading={loading} - contentPosition={selectedSource ? contentPosition : { top: '50%', left: '50%' }} - hashPlaceholderContentPosition={contentPosition} - hashPlaceholderStyle={imageHashStyle} -diff --git a/src/Image.types.ts b/src/Image.types.ts -index 9dec0e7aee61dfaa73a3cfa535d08259c9dad209..61c162114977dff35b633ac6b1f3d59e373bbbfe 100644 ---- a/src/Image.types.ts -+++ b/src/Image.types.ts -@@ -178,6 +178,17 @@ export interface ImageProps extends Omit { - */ - priority?: 'low' | 'normal' | 'high' | null; - -+ /** -+ * The loading behavior for the image. Maps to the native HTML `loading` attribute on web. -+ * -+ * - `'lazy'` - Defers loading until the image is near the viewport. -+ * - `'eager'` - Loads the image immediately. -+ * -+ * @default undefined -+ * @platform web -+ */ -+ loading?: 'lazy' | 'eager' | null; -+ - /** - * Determines whether to cache the image and where: on the disk, in the memory or both. - * -diff --git a/src/web/ImageWrapper.tsx b/src/web/ImageWrapper.tsx -index e8f891d525892f8d3668e34cf96cefccfbfc49f6..89a5cb1e3a8574fc3bd1d0361895a610e3165dfb 100644 ---- a/src/web/ImageWrapper.tsx -+++ b/src/web/ImageWrapper.tsx -@@ -30,6 +30,7 @@ const ImageWrapper = React.forwardRef( - contentPosition, - hashPlaceholderContentPosition, - priority, -+ loading, - style, - hashPlaceholderStyle, - tintColor, -@@ -82,6 +83,7 @@ const ImageWrapper = React.forwardRef( - // @ts-ignore - // eslint-disable-next-line react/no-unknown-property - fetchPriority={getFetchPriorityFromImagePriority(priority || 'normal')} -+ loading={loading || undefined} - {...getImageWrapperEventHandler(events, sourceWithHeaders)} - {...getImgPropsFromSource(source)} - {...props} -diff --git a/src/web/ImageWrapper.types.ts b/src/web/ImageWrapper.types.ts -index 19bbe2f15999124cda0ca7c81b3ebcf289f522f8..179837f803a3d315c85075895f4191631b37eda7 100644 ---- a/src/web/ImageWrapper.types.ts -+++ b/src/web/ImageWrapper.types.ts -@@ -29,6 +29,7 @@ export type ImageWrapperProps = { - contentPosition?: ImageContentPositionObject; - hashPlaceholderContentPosition?: ImageContentPositionObject; - priority?: string | null; -+ loading?: 'lazy' | 'eager' | null; - style: CSSProperties; - tintColor?: string | null; - hashPlaceholderStyle?: CSSProperties; diff --git a/patches/expo-image@3.0.11.patch.md b/patches/expo-image@3.0.11.patch.md deleted file mode 100644 index ca597c4bbe..0000000000 --- a/patches/expo-image@3.0.11.patch.md +++ /dev/null @@ -1,3 +0,0 @@ -## Expo Image - -Patches in https://github.com/expo/expo/pull/41442 diff --git a/patches/expo-media-library@18.2.1.patch b/patches/expo-media-library@57.0.3.patch similarity index 100% rename from patches/expo-media-library@18.2.1.patch rename to patches/expo-media-library@57.0.3.patch diff --git a/patches/expo-media-library@18.2.1.patch.md b/patches/expo-media-library@57.0.3.patch.md similarity index 100% rename from patches/expo-media-library@18.2.1.patch.md rename to patches/expo-media-library@57.0.3.patch.md diff --git a/patches/expo-notifications@0.32.17.patch b/patches/expo-notifications@57.0.7.patch similarity index 100% rename from patches/expo-notifications@0.32.17.patch rename to patches/expo-notifications@57.0.7.patch diff --git a/patches/expo-notifications@0.32.17.patch.md b/patches/expo-notifications@57.0.7.patch.md similarity index 100% rename from patches/expo-notifications@0.32.17.patch.md rename to patches/expo-notifications@57.0.7.patch.md diff --git a/patches/expo-updates@29.0.17.patch b/patches/expo-updates@57.0.10.patch similarity index 100% rename from patches/expo-updates@29.0.17.patch rename to patches/expo-updates@57.0.10.patch diff --git a/patches/expo-updates@29.0.17.patch.md b/patches/expo-updates@57.0.10.patch.md similarity index 100% rename from patches/expo-updates@29.0.17.patch.md rename to patches/expo-updates@57.0.10.patch.md diff --git a/patches/react-native-gesture-handler.patch b/patches/react-native-gesture-handler.patch deleted file mode 100644 index b8a22cf6a5..0000000000 --- a/patches/react-native-gesture-handler.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/apple/RNGestureHandler.mm b/apple/RNGestureHandler.mm -index c4f760c41a9965245edcfa5e7cb781f8d2c7b66a..bf7d1fb092e22cbcedf787e606876e533879f810 100644 ---- a/apple/RNGestureHandler.mm -+++ b/apple/RNGestureHandler.mm -@@ -470,15 +470,19 @@ + (RNGestureHandler *)findGestureHandlerByRecognizer:(UIGestureRecognizer *)reco - - // We may try to extract "DummyGestureHandler" in case when "otherGestureRecognizer" belongs to - // a native view being wrapped with "NativeViewGestureHandler" -- RNGHUIView *reactView = recognizer.view; -- while (reactView != nil && reactView.reactTag == nil) { -- reactView = reactView.superview; -- } -+ RNGHUIView *view = recognizer.view; -+ while (view != nil) { -+ for (UIGestureRecognizer *candidateRecognizer in view.gestureRecognizers) { -+ if ([candidateRecognizer isKindOfClass:[RNDummyGestureRecognizer class]]) { -+ return candidateRecognizer.gestureHandler; -+ } -+ } - -- for (UIGestureRecognizer *recognizer in reactView.gestureRecognizers) { -- if ([recognizer isKindOfClass:[RNDummyGestureRecognizer class]]) { -- return recognizer.gestureHandler; -+ if ([view isKindOfClass:[RCTViewComponentView class]]) { -+ return nil; - } -+ -+ view = view.superview; - } - - return nil; diff --git a/patches/react-native-gesture-handler.patch.md b/patches/react-native-gesture-handler.patch.md deleted file mode 100644 index 557823a23b..0000000000 --- a/patches/react-native-gesture-handler.patch.md +++ /dev/null @@ -1,5 +0,0 @@ -# react-native-gesture-handler.patch - -Updated `findGestureHandlerByRecognizer:` in `apple/RNGestureHandler.mm` to the version from RN GH 2.32.0 - -This fixes `UIContextMenuInteraction` from `ExpoBlueskyPeekMenuView.swift`. https://github.com/software-mansion/react-native-gesture-handler/commit/fba4dcc06d71dce08b10b2afc738a2af5b01e86a diff --git a/patches/react-native-keyboard-controller@1.21.8.patch b/patches/react-native-keyboard-controller@1.21.9.patch similarity index 100% rename from patches/react-native-keyboard-controller@1.21.8.patch rename to patches/react-native-keyboard-controller@1.21.9.patch diff --git a/patches/react-native-svg@15.12.1.patch b/patches/react-native-svg@15.15.4.patch similarity index 100% rename from patches/react-native-svg@15.12.1.patch rename to patches/react-native-svg@15.15.4.patch diff --git a/patches/react-native-view-shot@4.0.3.patch b/patches/react-native-view-shot@4.0.3.patch deleted file mode 100644 index a7fa2fbe97..0000000000 --- a/patches/react-native-view-shot@4.0.3.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/src/index.js b/src/index.js -index fa76d7e1272e7fbe4bbd153104db127f1f6eecad..018b6860b7fa02d498d73b5fd06028bae99abedb 100644 ---- a/src/index.js -+++ b/src/index.js -@@ -125,13 +125,17 @@ export function captureRef( - } - } - if (typeof view !== "number") { -- const node = findNodeHandle(view); -- if (!node) { -- return Promise.reject( -- new Error("findNodeHandle failed to resolve view=" + String(view)) -- ); -+ if (Platform.OS == 'web') { -+ view = view; -+ } else { -+ const node = findNodeHandle(view); -+ if (!node) { -+ return Promise.reject( -+ new Error("findNodeHandle failed to resolve view=" + String(view)) -+ ); -+ } -+ view = node; - } -- view = node; - } - const { options, errors } = validateOptions(optionsObject); - if (__DEV__ && errors.length > 0) { diff --git a/patches/react-native-view-shot@4.0.3.patch.md b/patches/react-native-view-shot@4.0.3.patch.md deleted file mode 100644 index 4fcb1f4c9b..0000000000 --- a/patches/react-native-view-shot@4.0.3.patch.md +++ /dev/null @@ -1,3 +0,0 @@ -## react-native-view-shot patch - -Temporary patch for web, where `view`'s type has changed. diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2c58348816..731823c695 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -22,21 +22,19 @@ allowBuilds: patchedDependencies: '@sentry/expo-upload-sourcemaps@8.18.0': patches/@sentry__expo-upload-sourcemaps@8.18.0.patch 'expo-age-range@0.2.18': patches/expo-age-range@0.2.18.patch - 'expo-haptics@15.0.8': patches/expo-haptics@15.0.8.patch - 'expo-image@3.0.11': patches/expo-image@3.0.11.patch - 'expo-media-library@18.2.1': patches/expo-media-library@18.2.1.patch + 'expo-haptics@57.0.1': patches/expo-haptics@57.0.1.patch + 'expo-media-library@57.0.3': patches/expo-media-library@57.0.3.patch 'expo-modules-core@3.0.30': patches/expo-modules-core@3.0.30.patch - 'expo-notifications@0.32.17': patches/expo-notifications@0.32.17.patch - 'expo-updates@29.0.17': patches/expo-updates@29.0.17.patch + 'expo-notifications@57.0.7': patches/expo-notifications@57.0.7.patch + 'expo-updates@57.0.10': patches/expo-updates@57.0.10.patch 'react-native-compressor@1.13.0': patches/react-native-compressor@1.13.0.patch 'react-native-date-picker@5.0.13': patches/react-native-date-picker@5.0.13.patch 'react-native-drawer-layout@4.2.3': patches/react-native-drawer-layout@4.2.3.patch - 'react-native-gesture-handler': patches/react-native-gesture-handler.patch - 'react-native-keyboard-controller@1.21.8': patches/react-native-keyboard-controller@1.21.8.patch + 'react-native-keyboard-controller@1.21.9': patches/react-native-keyboard-controller@1.21.9.patch 'react-native-pager-view@6.8.0': patches/react-native-pager-view@6.8.0.patch 'react-native-reanimated@4.3.2': patches/react-native-reanimated@4.3.2.patch react-native-screens@4.24.0: patches/react-native-screens@4.24.0.patch - 'react-native-svg@15.12.1': patches/react-native-svg@15.12.1.patch + 'react-native-svg@15.15.4': patches/react-native-svg@15.15.4.patch 'react-native-view-shot@4.0.3': patches/react-native-view-shot@4.0.3.patch react-native-worklets@0.8.3: patches/react-native-worklets@0.8.3.patch 'react-native@0.81.5': patches/react-native@0.81.5.patch