update expo dependencies

This commit is contained in:
Samuel Newman
2026-09-07 12:29:30 +03:00
parent fbf78df715
commit 60b5aaa3fa
21 changed files with 851 additions and 1046 deletions
@@ -1,8 +1,8 @@
diff --git a/android/src/main/java/expo/modules/haptics/HapticsModule.kt b/android/src/main/java/expo/modules/haptics/HapticsModule.kt
index 6102727daafe198ac1170fdef8aea74df0b740d2..bfd4e6d2e730575062394e302c37e00ade20e1ce 100644
index e29567622b4e03f9cb872e28458aa84c3249c05f..4a73a8908b1d4d3e0db96801de83b482abada07c 100644
--- a/android/src/main/java/expo/modules/haptics/HapticsModule.kt
+++ b/android/src/main/java/expo/modules/haptics/HapticsModule.kt
@@ -48,7 +48,7 @@ class HapticsModule : Module() {
@@ -53,7 +53,7 @@ class HapticsModule : Module() {
private fun vibrate(type: HapticsVibrationType) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@@ -1,4 +1,4 @@
# Expo Haptics Patch
# Expo Haptics patch
Whenever we migrated to Expo Haptics, there was a difference between how the previous and new libraries handled the
Android implementation of an iOS "light" haptic. The previous library used the `Vibration` API solely, which does not
@@ -1 +0,0 @@
Unclear why this is needed
@@ -1,8 +1,8 @@
diff --git a/android/src/main/java/expo/modules/medialibrary/MediaLibraryModule.kt b/android/src/main/java/expo/modules/medialibrary/MediaLibraryModule.kt
index 97c19ff07a49dc80adce7f100eb205b2045dc115..a9a520617eb74caddbbd9cbd15635f113017ab65 100644
index dada8649fe532d2aae6113c3b8689859f27bebc3..c9f716b2a717e01c0b5bfcacfcc475ac70e2a95b 100644
--- a/android/src/main/java/expo/modules/medialibrary/MediaLibraryModule.kt
+++ b/android/src/main/java/expo/modules/medialibrary/MediaLibraryModule.kt
@@ -109,7 +109,7 @@ class MediaLibraryModule : Module() {
@@ -110,7 +110,7 @@ class MediaLibraryModule : Module() {
}
AsyncFunction("createAssetAsync") Coroutine { localUri: String, albumId: String? ->
@@ -0,0 +1 @@
Unclear why this is needed.
+15
View File
@@ -0,0 +1,15 @@
diff --git a/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt b/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt
index 47c4d15f6b10bbd77858cfff425cda9a618735b9..afe138d22d566244482498a7be0e14b8454eab96 100644
--- a/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt
+++ b/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt
@@ -125,6 +125,10 @@ internal fun peekResponseBody(
}
internal fun shouldParseBody(response: Response): Boolean {
+ if (response.request.url.encodedPath == "/bitdrift_public.protobuf.client.v1.ApiService/Mux") {
+ return false
+ }
+
// Check for Content-Type
val skipContentTypes = listOf(
"text/event-stream", // Server Sent Events
@@ -0,0 +1,5 @@
## expo-modules-core patch
### Android: bitdrift interceptor
Fixes an issue where bitdrift's API stream gets blocked by the Expo interceptor used to power the devtools.
-44
View File
@@ -1,44 +0,0 @@
diff --git a/android/src/main/cpp/worklets/WorkletJSCallInvoker.cpp b/android/src/main/cpp/worklets/WorkletJSCallInvoker.cpp
index a2d707ce76ceb35456eb075d06473ac98ad8b5eb..be2e3d66031d2bbd6208a7cdc1700a9daefb1267 100644
--- a/android/src/main/cpp/worklets/WorkletJSCallInvoker.cpp
+++ b/android/src/main/cpp/worklets/WorkletJSCallInvoker.cpp
@@ -24,10 +24,7 @@ namespace expo {
return;
}
- workletRuntime->executeSync([func = std::move(func)](jsi::Runtime &rt) -> jsi::Value {
- func(rt);
- return jsi::Value::undefined();
- });
+ workletRuntime->runSync(func);
}
} // namespace expo
diff --git a/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt b/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt
index 47c4d15f6b10bbd77858cfff425cda9a618735b9..afe138d22d566244482498a7be0e14b8454eab96 100644
--- a/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt
+++ b/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt
@@ -125,6 +125,10 @@ internal fun peekResponseBody(
}
internal fun shouldParseBody(response: Response): Boolean {
+ if (response.request.url.encodedPath == "/bitdrift_public.protobuf.client.v1.ApiService/Mux") {
+ return false
+ }
+
// Check for Content-Type
val skipContentTypes = listOf(
"text/event-stream", // Server Sent Events
diff --git a/ios/WorkletsAdapter/ExpoWorkletsBridgeProvider.mm b/ios/WorkletsAdapter/ExpoWorkletsBridgeProvider.mm
index 126545fae12dc3af71e0ea382b976ef430e62d17..d97163a2e9a9db09f43786bc919f2fa229f21901 100644
--- a/ios/WorkletsAdapter/ExpoWorkletsBridgeProvider.mm
+++ b/ios/WorkletsAdapter/ExpoWorkletsBridgeProvider.mm
@@ -233,7 +233,7 @@ - (void)executeWorkletWithRuntimeHandle:(id)runtimeHandle
return;
}
- workletRuntime->executeSync([worklet, arguments](jsi::Runtime &rt) -> jsi::Value {
+ workletRuntime->runSync([worklet, arguments](jsi::Runtime &rt) -> jsi::Value {
return callWorklet(rt, worklet, arguments);
});
}
-17
View File
@@ -1,17 +0,0 @@
## expo-modules-core Patch
### Android: bitdrift interceptor
Fixes an issue where bitdrift's API stream gets blocked by the Expo interceptor used to power the devtools.
### iOS + Android: worklets `runSync` migration
Backport of https://github.com/expo/expo/pull/49366 ("[sdk-57] Backport
WorkletRuntime runSync migration"). react-native-worklets 0.12 removed the
deprecated `WorkletRuntime::executeSync`, so the worklets adapters in
`ios/WorkletsAdapter/ExpoWorkletsBridgeProvider.mm` and
`android/src/main/cpp/worklets/WorkletJSCallInvoker.cpp` fail to compile
against it. The patch swaps both call sites to `runSync` (available since
worklets 0.7.0). Required for the react-native-reanimated 4.6.0 /
react-native-worklets 0.12.1 upgrade; drop once expo-modules-core ships a
version containing that PR.
@@ -1,5 +1,5 @@
diff --git a/android/build.gradle b/android/build.gradle
index 18a1c56507a1c0da7eb3b6e1f80a1f25a0a8f171..305e10998b99d0c0256930de669e51b5ba4c98c4 100644
index 8a908b7266442679e4b38bee4d0c00aecacd521c..9224376ce56c15699f2ceb23b7fe6f890ce4bca1 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -43,6 +43,7 @@ dependencies {
@@ -1,6 +1,6 @@
## LOAD BEARING PATCH, DO NOT REMOVE
## Expo-Notifications Patch
## Expo Notifications patch
This patch supports the Android background notification handling module. Incoming messages
in `onMessageReceived` are sent to the module for handling.
@@ -1,5 +1,5 @@
diff --git a/ios/EXUpdates/Update/ExpoUpdatesUpdate.swift b/ios/EXUpdates/Update/ExpoUpdatesUpdate.swift
index 68086bd9963675e71fcc4008df693fed9110cd3a..78c776191ac9071ff0057fd9d045ca1e01011dcf 100644
index ec6697d00061055cad2fc986fc7e5c252ed7664a..2999edaaf4b513ae74d75d9780cc870a5bbad2b1 100644
--- a/ios/EXUpdates/Update/ExpoUpdatesUpdate.swift
+++ b/ios/EXUpdates/Update/ExpoUpdatesUpdate.swift
@@ -78,13 +78,20 @@ public final class ExpoUpdatesUpdate: Update {
@@ -1,4 +1,4 @@
# Expo-Updates Patch
# Expo Updates patch
This is a small patch to convert timestamp formats that are returned from the backend. Instead of relying on the
backend to return the correct format for a specific format (the format required on Android is not the same as on iOS)
@@ -1,12 +1,11 @@
diff --git a/build/winter/runtime.native.d.ts b/build/winter/runtime.native.d.ts
index 85c4227e4e37003dd3769a590e73a69874de5fac..e389ca8edd2310df9ce29684991465c275e804c5 100644
index 85c4227e4e37003dd3769a590e73a69874de5fac..27bd245675d09b906c2474d4da9efd073dd4f72c 100644
--- a/build/winter/runtime.native.d.ts
+++ b/build/winter/runtime.native.d.ts
@@ -1,3 +1,2 @@
import 'react-native/Libraries/Core/InitializeCore';
-import '../../types';
//# sourceMappingURL=runtime.native.d.ts.map
\ No newline at end of file
diff --git a/src/winter/fetch/RequestUtils.ts b/src/winter/fetch/RequestUtils.ts
index a93473fd2beaf2ab0f3880951d292e58e7288d10..c27911bd5cb56ba6051fb8ebf4194cced43bc0fd 100644
--- a/src/winter/fetch/RequestUtils.ts
@@ -65,7 +64,7 @@ index a93473fd2beaf2ab0f3880951d292e58e7288d10..c27911bd5cb56ba6051fb8ebf4194cce
export function normalizeMethod(method: string): string {
const normalized = method.toUpperCase();
diff --git a/src/winter/fetch/fetch.ts b/src/winter/fetch/fetch.ts
index ac789c024c96379e239bf44903c47e6a8e540d63..4f953b845c145de02976e8162ba2f63f8bd4dfd5 100644
index cbe32225b933462d71b20ee339a6a90c1144cf0a..c421b1f215ff944e70be8ca8510b31ad229001be 100644
--- a/src/winter/fetch/fetch.ts
+++ b/src/winter/fetch/fetch.ts
@@ -3,6 +3,7 @@ import { FetchError } from './FetchErrors';
@@ -1,4 +1,4 @@
# expo
# Expo patch
## build/winter/runtime.native.d.ts
@@ -198,7 +198,7 @@ index 60160efb163d91813fa2ca7ca758b51afcf261e1..fb646fe945ffe4aa4a386f80a1e42a90
}
diff --git a/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm b/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm
index a087536f3af0d33b13fe38d8abd1bc6d7935def2..01f5c884ea4772350c0ebe6263723d97632f2b74 100644
index 9ab1db4e21e922f69c1ce17976eb1001f01b571a..a0a15bef87537f715298d7c88a52c8f6c4aea0bd 100644
--- a/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm
+++ b/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm
@@ -396,7 +396,15 @@ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &
@@ -380,19 +380,6 @@ index fdabd7bab1f03966dc04ba9a462465daeccf8ae3..ef70011ee5c270fb2cac52f3a7408d1e
bool useTurboModules() override
{
return true;
diff --git a/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm b/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm
index 9b04cadc22f5ae7b105f9f9875a242b53188cf03..b2b27626edc46625ac2372a13977d700948835b6 100644
--- a/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm
+++ b/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm
@@ -361,7 +361,7 @@ static UIFontDescriptorSystemDesign RCTGetFontDescriptorSystemDesign(NSString *f
font = [UIFont fontWithName:fontProperties.family size:effectiveFontSize];
if (font != nullptr) {
fontNames = [UIFont fontNamesForFamilyName:font.familyName];
- fontWeight = (fontWeight != 0.0) ?: RCTGetFontWeight(font);
+ fontWeight = (fontWeight != 0.0) ? fontWeight : RCTGetFontWeight(font);
} else {
// Failback to system font.
font = RCTDefaultFontWithFontProperties(fontProperties);
diff --git a/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm b/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm
index ac553045a9c0ce77e288277912538d9e131ebc01..d99c8f4db5a07f1e4ffe7e03ff23adce9c63137b 100644
--- a/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm
@@ -410,10 +397,10 @@ index ac553045a9c0ce77e288277912538d9e131ebc01..d99c8f4db5a07f1e4ffe7e03ff23adce
NSRange visibleGlyphRange = [layoutManager glyphRangeForTextContainer:textContainer];
diff --git a/ReactCommon/react/renderer/uimanager/UIManager.cpp b/ReactCommon/react/renderer/uimanager/UIManager.cpp
index 3e48dabc6fffc246fd0517ef5f3f2b7721115511..ea4ba5fdf359c513a5ca4f0e94492facf4ead221 100644
index 4d640400dc129724b1a46e429fc90da2fb1919cc..ecbd4bdbdbbebfd1bb8c893b44f90bc66103711e 100644
--- a/ReactCommon/react/renderer/uimanager/UIManager.cpp
+++ b/ReactCommon/react/renderer/uimanager/UIManager.cpp
@@ -530,30 +530,8 @@ std::shared_ptr<const ShadowNode> UIManager::findShadowNodeByTag_DEPRECATED(
@@ -535,30 +535,8 @@ std::shared_ptr<const ShadowNode> UIManager::findShadowNodeByTag_DEPRECATED(
auto shadowNode = std::shared_ptr<const ShadowNode>{};
shadowTreeRegistry_.enumerate([&](const ShadowTree& shadowTree, bool& stop) {
@@ -161,16 +161,6 @@ the prebuilt AAR from Maven Central instead, where this hunk (like any ReactAndr
source change) has no effect - do not expect to see the fix in a local debug build unless
you prebuild with EXPO_PUBLIC_ENV=production or add the substitution block manually.
## RCTFontUtils.mm Patch - Custom font weights render as the heaviest face on New Arch
**TODO: Remove after bumping React Native to a release that contains facebook/react-native#57483**
(commit 918fb15bfe5f, on `main`; not in 0.86 and not yet released).
Backport of the upstream one-liner: use a real ternary so the numeric weight is returned instead of
the boolean. For a double, `(A != 0.0) ? A : B` is exactly equivalent to the original `A ?: B`.
PR: https://github.com/facebook/react-native/pull/57483
## RCTTextLayoutManager.mm Patch - Text overflows instead of wrapping on the last line
Issue: https://github.com/react/react-native/issues/53450#issuecomment-3298157830