expo 55.0.0-canary-20251023-4c86f95 → 55.0.0-canary-20251031-b135dff
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +2 -2
- package/android/proguard-rules.pro +5 -0
- package/android/src/main/java/expo/modules/ExpoReactHostFactory.kt +8 -5
- package/android/src/main/java/expo/modules/ReactActivityDelegateWrapper.kt +5 -0
- package/build/async-require/asyncRequireModule.d.ts +13 -0
- package/build/async-require/asyncRequireModule.d.ts.map +1 -0
- package/build/async-require/hmr.d.ts.map +1 -1
- package/bundledNativeModules.json +80 -79
- package/internal/async-require-module.js +2 -0
- package/ios/AppDelegates/ExpoAppDelegate.swift +9 -1
- package/package.json +19 -19
- package/src/async-require/asyncRequireModule.ts +97 -0
- package/src/async-require/hmr.ts +19 -4
- package/src/dom/__tests__/base-test.ts +13 -0
- package/src/dom/base.ts +4 -1
- package/template.tgz +0 -0
package/android/build.gradle
CHANGED
|
@@ -32,7 +32,7 @@ buildscript {
|
|
|
32
32
|
def reactNativeVersion = project.extensions.getByType(ExpoModuleExtension).reactNativeVersion
|
|
33
33
|
|
|
34
34
|
group = 'host.exp.exponent'
|
|
35
|
-
version = '55.0.0-canary-
|
|
35
|
+
version = '55.0.0-canary-20251031-b135dff'
|
|
36
36
|
|
|
37
37
|
expoModule {
|
|
38
38
|
// We can't prebuild the module because it depends on the generated files.
|
|
@@ -43,7 +43,7 @@ android {
|
|
|
43
43
|
namespace "expo.core"
|
|
44
44
|
defaultConfig {
|
|
45
45
|
versionCode 1
|
|
46
|
-
versionName "55.0.0-canary-
|
|
46
|
+
versionName "55.0.0-canary-20251031-b135dff"
|
|
47
47
|
consumerProguardFiles("proguard-rules.pro")
|
|
48
48
|
}
|
|
49
49
|
testOptions {
|
|
@@ -65,7 +65,8 @@ object ExpoReactHostFactory {
|
|
|
65
65
|
if (backingJSBundleLoader != null) {
|
|
66
66
|
return backingJSBundleLoader
|
|
67
67
|
}
|
|
68
|
-
val context = weakContext.get()
|
|
68
|
+
val context = weakContext.get()
|
|
69
|
+
?: throw IllegalStateException("Unable to get concrete Context")
|
|
69
70
|
hostDelegateJsBundleFilePath?.let { jsBundleFile ->
|
|
70
71
|
if (jsBundleFile.startsWith("assets://")) {
|
|
71
72
|
return JSBundleLoader.createAssetLoader(context, jsBundleFile, true)
|
|
@@ -128,12 +129,14 @@ object ExpoReactHostFactory {
|
|
|
128
129
|
val reactHostImpl =
|
|
129
130
|
ReactHostImpl(
|
|
130
131
|
context,
|
|
131
|
-
reactHostDelegate,
|
|
132
|
-
componentFactory,
|
|
133
|
-
true,
|
|
134
|
-
useDevSupport
|
|
132
|
+
delegate = reactHostDelegate,
|
|
133
|
+
componentFactory = componentFactory,
|
|
134
|
+
allowPackagerServerAccess = true,
|
|
135
|
+
useDevSupport = useDevSupport
|
|
135
136
|
)
|
|
137
|
+
|
|
136
138
|
hostHandlers.forEach { handler ->
|
|
139
|
+
handler.onDidCreateReactHost(context, reactHostImpl)
|
|
137
140
|
handler.onDidCreateDevSupportManager(reactHostImpl.devSupportManager)
|
|
138
141
|
}
|
|
139
142
|
|
|
@@ -123,6 +123,11 @@ class ReactActivityDelegateWrapper(
|
|
|
123
123
|
val newDelegate = reactActivityHandlers.asSequence()
|
|
124
124
|
.mapNotNull { it.onDidCreateReactActivityDelegate(activity, this) }
|
|
125
125
|
.firstOrNull()
|
|
126
|
+
|
|
127
|
+
reactActivityHandlers.forEach { handler ->
|
|
128
|
+
handler.onDidCreateReactActivityDelegateNotification(activity, newDelegate)
|
|
129
|
+
}
|
|
130
|
+
|
|
126
131
|
if (newDelegate != null && newDelegate != this) {
|
|
127
132
|
val mDelegateField = ReactActivity::class.java.getDeclaredField("mDelegate")
|
|
128
133
|
mDelegateField.isAccessible = true
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2025 650 Industries.
|
|
3
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*
|
|
8
|
+
* This is added as `asyncRequireModulePath` in `@expo/metro-config`
|
|
9
|
+
* Fork of https://github.com/facebook/metro/blob/b8e9e64f1de97a67234e223f5ee21524b160e8a5/packages/metro-runtime/src/modules/asyncRequire.js#L1
|
|
10
|
+
* - Adds worker support.
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=asyncRequireModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncRequireModule.d.ts","sourceRoot":"","sources":["../../src/async-require/asyncRequireModule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmr.d.ts","sourceRoot":"","sources":["../../src/async-require/hmr.ts"],"names":[],"mappings":"AAiCA,KAAK,QAAQ,GACT,OAAO,GACP,MAAM,GACN,MAAM,GACN,OAAO,GACP,KAAK,GACL,OAAO,GACP,gBAAgB,GAChB,UAAU,GACV,OAAO,CAAC;AAMZ;;;GAGG;AACH,QAAA,MAAM,SAAS;;;+BAyCc,MAAM;eAMtB,QAAQ,QAAQ,GAAG,EAAE;6BA8CX,MAAM,GAAG;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,gBACpC,MAAM,SACb,MAAM,SACN,MAAM,GAAG,MAAM,yBACC,OAAO,WACtB,MAAM;
|
|
1
|
+
{"version":3,"file":"hmr.d.ts","sourceRoot":"","sources":["../../src/async-require/hmr.ts"],"names":[],"mappings":"AAiCA,KAAK,QAAQ,GACT,OAAO,GACP,MAAM,GACN,MAAM,GACN,OAAO,GACP,KAAK,GACL,OAAO,GACP,gBAAgB,GAChB,UAAU,GACV,OAAO,CAAC;AAMZ;;;GAGG;AACH,QAAA,MAAM,SAAS;;;+BAyCc,MAAM;eAMtB,QAAQ,QAAQ,GAAG,EAAE;6BA8CX,MAAM,GAAG;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,gBACpC,MAAM,SACb,MAAM,SACN,MAAM,GAAG,MAAM,yBACC,OAAO,WACtB,MAAM;yBA0HK,OAAO;CA4B7B,CAAC;AAyDF,eAAe,SAAS,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"@expo/fingerprint": "0.15.3-canary-
|
|
3
|
-
"@expo/metro-runtime": "6.
|
|
2
|
+
"@expo/fingerprint": "0.15.3-canary-20251031-b135dff",
|
|
3
|
+
"@expo/metro-runtime": "6.2.0-canary-20251031-b135dff",
|
|
4
4
|
"@expo/vector-icons": "^15.0.2",
|
|
5
|
-
"@expo/ui": "0.2.0-canary-
|
|
5
|
+
"@expo/ui": "0.2.0-canary-20251031-b135dff",
|
|
6
6
|
"@react-native-async-storage/async-storage": "2.2.0",
|
|
7
7
|
"@react-native-community/datetimepicker": "8.4.4",
|
|
8
8
|
"@react-native-masked-view/masked-view": "0.3.2",
|
|
@@ -12,85 +12,86 @@
|
|
|
12
12
|
"@react-native-picker/picker": "2.11.2",
|
|
13
13
|
"@react-native-segmented-control/segmented-control": "2.5.7",
|
|
14
14
|
"@stripe/stripe-react-native": "0.50.3",
|
|
15
|
-
"eslint-config-expo": "10.0.1-canary-
|
|
15
|
+
"eslint-config-expo": "10.0.1-canary-20251031-b135dff",
|
|
16
16
|
"expo-analytics-amplitude": "~11.3.0",
|
|
17
17
|
"expo-app-auth": "~11.1.0",
|
|
18
18
|
"expo-app-loader-provider": "~8.0.0",
|
|
19
|
-
"expo-apple-authentication": "8.0.8-canary-
|
|
20
|
-
"expo-application": "7.0.8-canary-
|
|
21
|
-
"expo-asset": "12.0.10-canary-
|
|
22
|
-
"expo-audio": "1.1.0-canary-
|
|
23
|
-
"expo-auth-session": "7.0.9-canary-
|
|
24
|
-
"expo-av": "16.0.8-canary-
|
|
25
|
-
"expo-background-fetch": "14.0.8-canary-
|
|
26
|
-
"expo-background-task": "1.0.9-canary-
|
|
27
|
-
"expo-battery": "10.0.8-canary-
|
|
28
|
-
"expo-blur": "16.0.0-canary-
|
|
29
|
-
"expo-brightness": "15.0.0-canary-
|
|
30
|
-
"expo-build-properties": "1.0.10-canary-
|
|
31
|
-
"expo-calendar": "15.0
|
|
32
|
-
"expo-camera": "17.1.0-canary-
|
|
33
|
-
"expo-cellular": "8.0.8-canary-
|
|
34
|
-
"expo-checkbox": "5.0.8-canary-
|
|
35
|
-
"expo-clipboard": "8.0.8-canary-
|
|
36
|
-
"expo-constants": "18.0
|
|
37
|
-
"expo-contacts": "15.0.11-canary-
|
|
38
|
-
"expo-crypto": "15.0.8-canary-
|
|
39
|
-
"expo-dev-client": "6.0.17-canary-
|
|
40
|
-
"expo-device": "8.0.10-canary-
|
|
41
|
-
"expo-document-picker": "14.0.8-canary-
|
|
42
|
-
"expo-file-system": "19.1.0-canary-
|
|
43
|
-
"expo-font": "14.0.10-canary-
|
|
44
|
-
"expo-gl": "16.0.8-canary-
|
|
45
|
-
"expo-glass-effect": "0.
|
|
19
|
+
"expo-apple-authentication": "8.0.8-canary-20251031-b135dff",
|
|
20
|
+
"expo-application": "7.0.8-canary-20251031-b135dff",
|
|
21
|
+
"expo-asset": "12.0.10-canary-20251031-b135dff",
|
|
22
|
+
"expo-audio": "1.1.0-canary-20251031-b135dff",
|
|
23
|
+
"expo-auth-session": "7.0.9-canary-20251031-b135dff",
|
|
24
|
+
"expo-av": "16.0.8-canary-20251031-b135dff",
|
|
25
|
+
"expo-background-fetch": "14.0.8-canary-20251031-b135dff",
|
|
26
|
+
"expo-background-task": "1.0.9-canary-20251031-b135dff",
|
|
27
|
+
"expo-battery": "10.0.8-canary-20251031-b135dff",
|
|
28
|
+
"expo-blur": "16.0.0-canary-20251031-b135dff",
|
|
29
|
+
"expo-brightness": "15.0.0-canary-20251031-b135dff",
|
|
30
|
+
"expo-build-properties": "1.0.10-canary-20251031-b135dff",
|
|
31
|
+
"expo-calendar": "15.1.0-canary-20251031-b135dff",
|
|
32
|
+
"expo-camera": "17.1.0-canary-20251031-b135dff",
|
|
33
|
+
"expo-cellular": "8.0.8-canary-20251031-b135dff",
|
|
34
|
+
"expo-checkbox": "5.0.8-canary-20251031-b135dff",
|
|
35
|
+
"expo-clipboard": "8.0.8-canary-20251031-b135dff",
|
|
36
|
+
"expo-constants": "18.1.0-canary-20251031-b135dff",
|
|
37
|
+
"expo-contacts": "15.0.11-canary-20251031-b135dff",
|
|
38
|
+
"expo-crypto": "15.0.8-canary-20251031-b135dff",
|
|
39
|
+
"expo-dev-client": "6.0.17-canary-20251031-b135dff",
|
|
40
|
+
"expo-device": "8.0.10-canary-20251031-b135dff",
|
|
41
|
+
"expo-document-picker": "14.0.8-canary-20251031-b135dff",
|
|
42
|
+
"expo-file-system": "19.1.0-canary-20251031-b135dff",
|
|
43
|
+
"expo-font": "14.0.10-canary-20251031-b135dff",
|
|
44
|
+
"expo-gl": "16.0.8-canary-20251031-b135dff",
|
|
45
|
+
"expo-glass-effect": "0.2.0-canary-20251031-b135dff",
|
|
46
46
|
"expo-google-app-auth": "~8.3.0",
|
|
47
|
-
"expo-haptics": "15.0.8-canary-
|
|
48
|
-
"expo-image": "3.1.0-canary-
|
|
49
|
-
"expo-image-loader": "6.0.1-canary-
|
|
50
|
-
"expo-image-manipulator": "14.0.8-canary-
|
|
51
|
-
"expo-image-picker": "17.0
|
|
52
|
-
"expo-intent-launcher": "13.0.8-canary-
|
|
53
|
-
"expo-insights": "0.10.8-canary-
|
|
54
|
-
"expo-keep-awake": "15.0.8-canary-
|
|
55
|
-
"expo-linear-gradient": "15.0.8-canary-
|
|
56
|
-
"expo-linking": "8.0.9-canary-
|
|
57
|
-
"expo-local-authentication": "17.0.8-canary-
|
|
58
|
-
"expo-localization": "17.0.8-canary-
|
|
59
|
-
"expo-location": "19.0.8-canary-
|
|
60
|
-
"expo-mail-composer": "15.0.8-canary-
|
|
61
|
-
"expo-manifests": "1.0.9-canary-
|
|
62
|
-
"expo-maps": "0.12.9-canary-
|
|
63
|
-
"expo-media-library": "18.3.0-canary-
|
|
64
|
-
"expo-mesh-gradient": "0.4.8-canary-
|
|
65
|
-
"expo-module-template": "11.0.17-canary-
|
|
66
|
-
"expo-modules-core": "3.1.0-canary-
|
|
67
|
-
"expo-navigation-bar": "5.0.10-canary-
|
|
68
|
-
"expo-network": "8.0.8-canary-
|
|
69
|
-
"expo-notifications": "1.0.0-canary-
|
|
70
|
-
"expo-print": "15.0.8-canary-
|
|
71
|
-
"expo-live-photo": "1.0.8-canary-
|
|
72
|
-
"expo-router": "7.0.0-canary-
|
|
73
|
-
"expo-screen-capture": "8.0.9-canary-
|
|
74
|
-
"expo-screen-orientation": "9.0.8-canary-
|
|
75
|
-
"expo-secure-store": "15.0.8-canary-
|
|
76
|
-
"expo-sensors": "15.0.8-canary-
|
|
77
|
-
"expo-
|
|
78
|
-
"expo-
|
|
79
|
-
"expo-
|
|
80
|
-
"expo-
|
|
81
|
-
"expo-
|
|
82
|
-
"expo-
|
|
83
|
-
"expo-
|
|
84
|
-
"expo-
|
|
85
|
-
"expo-
|
|
86
|
-
"expo-
|
|
87
|
-
"expo-
|
|
88
|
-
"expo-
|
|
89
|
-
"expo-
|
|
90
|
-
"expo-video": "
|
|
91
|
-
"expo-
|
|
92
|
-
"
|
|
93
|
-
"
|
|
47
|
+
"expo-haptics": "15.0.8-canary-20251031-b135dff",
|
|
48
|
+
"expo-image": "3.1.0-canary-20251031-b135dff",
|
|
49
|
+
"expo-image-loader": "6.0.1-canary-20251031-b135dff",
|
|
50
|
+
"expo-image-manipulator": "14.0.8-canary-20251031-b135dff",
|
|
51
|
+
"expo-image-picker": "17.1.0-canary-20251031-b135dff",
|
|
52
|
+
"expo-intent-launcher": "13.0.8-canary-20251031-b135dff",
|
|
53
|
+
"expo-insights": "0.10.8-canary-20251031-b135dff",
|
|
54
|
+
"expo-keep-awake": "15.0.8-canary-20251031-b135dff",
|
|
55
|
+
"expo-linear-gradient": "15.0.8-canary-20251031-b135dff",
|
|
56
|
+
"expo-linking": "8.0.9-canary-20251031-b135dff",
|
|
57
|
+
"expo-local-authentication": "17.0.8-canary-20251031-b135dff",
|
|
58
|
+
"expo-localization": "17.0.8-canary-20251031-b135dff",
|
|
59
|
+
"expo-location": "19.0.8-canary-20251031-b135dff",
|
|
60
|
+
"expo-mail-composer": "15.0.8-canary-20251031-b135dff",
|
|
61
|
+
"expo-manifests": "1.0.9-canary-20251031-b135dff",
|
|
62
|
+
"expo-maps": "0.12.9-canary-20251031-b135dff",
|
|
63
|
+
"expo-media-library": "18.3.0-canary-20251031-b135dff",
|
|
64
|
+
"expo-mesh-gradient": "0.4.8-canary-20251031-b135dff",
|
|
65
|
+
"expo-module-template": "11.0.17-canary-20251031-b135dff",
|
|
66
|
+
"expo-modules-core": "3.1.0-canary-20251031-b135dff",
|
|
67
|
+
"expo-navigation-bar": "5.0.10-canary-20251031-b135dff",
|
|
68
|
+
"expo-network": "8.0.8-canary-20251031-b135dff",
|
|
69
|
+
"expo-notifications": "1.0.0-canary-20251031-b135dff",
|
|
70
|
+
"expo-print": "15.0.8-canary-20251031-b135dff",
|
|
71
|
+
"expo-live-photo": "1.0.8-canary-20251031-b135dff",
|
|
72
|
+
"expo-router": "7.0.0-canary-20251031-b135dff",
|
|
73
|
+
"expo-screen-capture": "8.0.9-canary-20251031-b135dff",
|
|
74
|
+
"expo-screen-orientation": "9.0.8-canary-20251031-b135dff",
|
|
75
|
+
"expo-secure-store": "15.0.8-canary-20251031-b135dff",
|
|
76
|
+
"expo-sensors": "15.0.8-canary-20251031-b135dff",
|
|
77
|
+
"expo-server": "1.0.4-canary-20251031-b135dff",
|
|
78
|
+
"expo-sharing": "14.0.8-canary-20251031-b135dff",
|
|
79
|
+
"expo-sms": "14.0.8-canary-20251031-b135dff",
|
|
80
|
+
"expo-speech": "14.0.8-canary-20251031-b135dff",
|
|
81
|
+
"expo-splash-screen": "31.0.11-canary-20251031-b135dff",
|
|
82
|
+
"expo-sqlite": "16.0.9-canary-20251031-b135dff",
|
|
83
|
+
"expo-status-bar": "3.0.9-canary-20251031-b135dff",
|
|
84
|
+
"expo-store-review": "9.0.9-canary-20251031-b135dff",
|
|
85
|
+
"expo-symbols": "1.1.0-canary-20251031-b135dff",
|
|
86
|
+
"expo-system-ui": "6.0.9-canary-20251031-b135dff",
|
|
87
|
+
"expo-task-manager": "14.0.9-canary-20251031-b135dff",
|
|
88
|
+
"expo-tracking-transparency": "6.0.8-canary-20251031-b135dff",
|
|
89
|
+
"expo-updates": "29.1.0-canary-20251031-b135dff",
|
|
90
|
+
"expo-video-thumbnails": "10.0.8-canary-20251031-b135dff",
|
|
91
|
+
"expo-video": "3.1.0-canary-20251031-b135dff",
|
|
92
|
+
"expo-web-browser": "15.0.9-canary-20251031-b135dff",
|
|
93
|
+
"jest-expo": "55.0.0-canary-20251031-b135dff",
|
|
94
|
+
"lottie-react-native": "~7.3.4",
|
|
94
95
|
"react": "19.1.1",
|
|
95
96
|
"react-dom": "19.1.1",
|
|
96
97
|
"react-native": "0.82.1",
|
|
@@ -108,7 +109,7 @@
|
|
|
108
109
|
"react-native-view-shot": "4.0.3",
|
|
109
110
|
"react-native-webview": "13.15.0",
|
|
110
111
|
"sentry-expo": "~7.0.0",
|
|
111
|
-
"unimodules-app-loader": "6.0.8-canary-
|
|
112
|
+
"unimodules-app-loader": "6.0.8-canary-20251031-b135dff",
|
|
112
113
|
"unimodules-image-loader-interface": "~6.1.0",
|
|
113
114
|
"@shopify/react-native-skia": "2.2.12",
|
|
114
115
|
"@shopify/flash-list": "2.0.2",
|
|
@@ -92,7 +92,15 @@ open class ExpoAppDelegate: NSObject, UIApplicationDelegate {
|
|
|
92
92
|
}
|
|
93
93
|
#endif
|
|
94
94
|
|
|
95
|
-
//
|
|
95
|
+
// MARK: - Responding to Environment Changes
|
|
96
|
+
|
|
97
|
+
#if os(iOS) || os(tvOS)
|
|
98
|
+
|
|
99
|
+
open func applicationDidReceiveMemoryWarning(_ application: UIApplication) {
|
|
100
|
+
ExpoAppDelegateSubscriberManager.applicationDidReceiveMemoryWarning(application)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
#endif
|
|
96
104
|
|
|
97
105
|
// TODO: - Managing App State Restoration
|
|
98
106
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo",
|
|
3
|
-
"version": "55.0.0-canary-
|
|
3
|
+
"version": "55.0.0-canary-20251031-b135dff",
|
|
4
4
|
"description": "The Expo SDK",
|
|
5
5
|
"main": "src/Expo.ts",
|
|
6
6
|
"module": "src/Expo.ts",
|
|
@@ -75,24 +75,24 @@
|
|
|
75
75
|
"homepage": "https://github.com/expo/expo/tree/main/packages/expo",
|
|
76
76
|
"dependencies": {
|
|
77
77
|
"@babel/runtime": "^7.20.0",
|
|
78
|
-
"@expo/cli": "54.1.0-canary-
|
|
79
|
-
"@expo/config": "12.0.11-canary-
|
|
80
|
-
"@expo/config-plugins": "54.0.3-canary-
|
|
81
|
-
"@expo/devtools": "0.1.8-canary-
|
|
82
|
-
"@expo/fingerprint": "0.15.3-canary-
|
|
78
|
+
"@expo/cli": "54.1.0-canary-20251031-b135dff",
|
|
79
|
+
"@expo/config": "12.0.11-canary-20251031-b135dff",
|
|
80
|
+
"@expo/config-plugins": "54.0.3-canary-20251031-b135dff",
|
|
81
|
+
"@expo/devtools": "0.1.8-canary-20251031-b135dff",
|
|
82
|
+
"@expo/fingerprint": "0.15.3-canary-20251031-b135dff",
|
|
83
83
|
"@expo/metro": "~54.1.0",
|
|
84
|
-
"@expo/metro-config": "54.0.
|
|
84
|
+
"@expo/metro-config": "54.0.9-canary-20251031-b135dff",
|
|
85
85
|
"@expo/vector-icons": "^15.0.2",
|
|
86
|
-
"@expo/log-box": "0.0.13-canary-
|
|
86
|
+
"@expo/log-box": "0.0.13-canary-20251031-b135dff",
|
|
87
87
|
"@ungap/structured-clone": "^1.3.0",
|
|
88
|
-
"babel-preset-expo": "54.0.7-canary-
|
|
89
|
-
"expo-asset": "12.0.10-canary-
|
|
90
|
-
"expo-constants": "18.0
|
|
91
|
-
"expo-file-system": "19.1.0-canary-
|
|
92
|
-
"expo-font": "14.0.10-canary-
|
|
93
|
-
"expo-keep-awake": "15.0.8-canary-
|
|
94
|
-
"expo-modules-autolinking": "3.1.0-canary-
|
|
95
|
-
"expo-modules-core": "3.1.0-canary-
|
|
88
|
+
"babel-preset-expo": "54.0.7-canary-20251031-b135dff",
|
|
89
|
+
"expo-asset": "12.0.10-canary-20251031-b135dff",
|
|
90
|
+
"expo-constants": "18.1.0-canary-20251031-b135dff",
|
|
91
|
+
"expo-file-system": "19.1.0-canary-20251031-b135dff",
|
|
92
|
+
"expo-font": "14.0.10-canary-20251031-b135dff",
|
|
93
|
+
"expo-keep-awake": "15.0.8-canary-20251031-b135dff",
|
|
94
|
+
"expo-modules-autolinking": "3.1.0-canary-20251031-b135dff",
|
|
95
|
+
"expo-modules-core": "3.1.0-canary-20251031-b135dff",
|
|
96
96
|
"pretty-format": "^29.7.0",
|
|
97
97
|
"react-refresh": "^0.14.2",
|
|
98
98
|
"whatwg-url-without-unicode": "8.0.0-3"
|
|
@@ -101,15 +101,15 @@
|
|
|
101
101
|
"@types/node": "^22.14.0",
|
|
102
102
|
"@types/react": "~19.1.10",
|
|
103
103
|
"@types/react-test-renderer": "~19.1.0",
|
|
104
|
-
"expo-module-scripts": "5.0.8-canary-
|
|
104
|
+
"expo-module-scripts": "5.0.8-canary-20251031-b135dff",
|
|
105
105
|
"react": "19.1.1",
|
|
106
106
|
"react-dom": "19.1.1",
|
|
107
107
|
"react-native": "0.82.1",
|
|
108
108
|
"web-streams-polyfill": "^3.3.2"
|
|
109
109
|
},
|
|
110
110
|
"peerDependencies": {
|
|
111
|
-
"@expo/dom-webview": "0.2.8-canary-
|
|
112
|
-
"@expo/metro-runtime": "6.
|
|
111
|
+
"@expo/dom-webview": "0.2.8-canary-20251031-b135dff",
|
|
112
|
+
"@expo/metro-runtime": "6.2.0-canary-20251031-b135dff",
|
|
113
113
|
"react": "*",
|
|
114
114
|
"react-native": "*",
|
|
115
115
|
"react-native-webview": "*"
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2025 650 Industries.
|
|
3
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*
|
|
8
|
+
* This is added as `asyncRequireModulePath` in `@expo/metro-config`
|
|
9
|
+
* Fork of https://github.com/facebook/metro/blob/b8e9e64f1de97a67234e223f5ee21524b160e8a5/packages/metro-runtime/src/modules/asyncRequire.js#L1
|
|
10
|
+
* - Adds worker support.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
type MetroRequire = {
|
|
14
|
+
(id: number): unknown;
|
|
15
|
+
importAll: <T>(id: number) => T;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
type DependencyMapPaths = { [moduleID: number | string]: unknown } | null;
|
|
19
|
+
|
|
20
|
+
declare let __METRO_GLOBAL_PREFIX__: string;
|
|
21
|
+
|
|
22
|
+
function maybeLoadBundle(moduleID: number, paths: DependencyMapPaths): void | Promise<void> {
|
|
23
|
+
const loadBundle: (bundlePath: unknown) => Promise<void> = (global as any)[
|
|
24
|
+
`${__METRO_GLOBAL_PREFIX__}__loadBundleAsync`
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
if (loadBundle != null) {
|
|
28
|
+
const stringModuleID = String(moduleID);
|
|
29
|
+
if (paths != null) {
|
|
30
|
+
const bundlePath = paths[stringModuleID];
|
|
31
|
+
if (bundlePath != null) {
|
|
32
|
+
// NOTE: Errors will be swallowed by asyncRequire.prefetch
|
|
33
|
+
return loadBundle(bundlePath);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function asyncRequireImpl<T>(moduleID: number, paths: DependencyMapPaths): Promise<T> | T {
|
|
42
|
+
const maybeLoadBundlePromise = maybeLoadBundle(moduleID, paths);
|
|
43
|
+
const importAll = () => (require as unknown as MetroRequire).importAll<T>(moduleID);
|
|
44
|
+
|
|
45
|
+
if (maybeLoadBundlePromise != null) {
|
|
46
|
+
return maybeLoadBundlePromise.then(importAll);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return importAll();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async function asyncRequire<T>(
|
|
53
|
+
moduleID: number,
|
|
54
|
+
paths: DependencyMapPaths,
|
|
55
|
+
moduleName?: string // unused
|
|
56
|
+
): Promise<T> {
|
|
57
|
+
return asyncRequireImpl<T>(moduleID, paths);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Synchronous version of asyncRequire, which can still return a promise
|
|
61
|
+
// if the module is split.
|
|
62
|
+
asyncRequire.unstable_importMaybeSync = function unstable_importMaybeSync<T>(
|
|
63
|
+
moduleID: number,
|
|
64
|
+
paths: DependencyMapPaths
|
|
65
|
+
): Promise<T> | T {
|
|
66
|
+
return asyncRequireImpl(moduleID, paths);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
asyncRequire.prefetch = function (
|
|
70
|
+
moduleID: number,
|
|
71
|
+
paths: DependencyMapPaths,
|
|
72
|
+
moduleName?: string // unused
|
|
73
|
+
): void {
|
|
74
|
+
maybeLoadBundle(moduleID, paths)?.then(
|
|
75
|
+
() => {},
|
|
76
|
+
() => {}
|
|
77
|
+
);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
asyncRequire.unstable_resolve = function unstable_resolve(
|
|
81
|
+
moduleID: number,
|
|
82
|
+
paths: DependencyMapPaths
|
|
83
|
+
) {
|
|
84
|
+
if (!paths) {
|
|
85
|
+
throw new Error('Bundle splitting is required for Web Worker imports');
|
|
86
|
+
}
|
|
87
|
+
const id = paths[moduleID];
|
|
88
|
+
if (!id) {
|
|
89
|
+
throw new Error('Worker import is missing from split bundle paths: ' + id);
|
|
90
|
+
}
|
|
91
|
+
return id;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
// TODO(@kitten): Missing metro type definitions
|
|
95
|
+
declare const module: any;
|
|
96
|
+
|
|
97
|
+
module.exports = asyncRequire;
|
package/src/async-require/hmr.ts
CHANGED
|
@@ -206,11 +206,26 @@ const HMRClient = {
|
|
|
206
206
|
}
|
|
207
207
|
});
|
|
208
208
|
|
|
209
|
-
client.on(
|
|
210
|
-
|
|
211
|
-
|
|
209
|
+
client.on(
|
|
210
|
+
'update',
|
|
211
|
+
({
|
|
212
|
+
isInitialUpdate,
|
|
213
|
+
added,
|
|
214
|
+
modified,
|
|
215
|
+
deleted,
|
|
216
|
+
}: {
|
|
217
|
+
isInitialUpdate?: boolean;
|
|
218
|
+
added: unknown[];
|
|
219
|
+
modified: unknown[];
|
|
220
|
+
deleted: unknown[];
|
|
221
|
+
}) => {
|
|
222
|
+
// NOTE(@krystofwoldrich): I don't know why sometimes empty updates are sent. But they should not reset the overlay.
|
|
223
|
+
const isEmpty = added.length === 0 && modified.length === 0 && deleted.length === 0;
|
|
224
|
+
if (client.isEnabled() && !isInitialUpdate && !isEmpty) {
|
|
225
|
+
resetErrorOverlay();
|
|
226
|
+
}
|
|
212
227
|
}
|
|
213
|
-
|
|
228
|
+
);
|
|
214
229
|
|
|
215
230
|
client.on('update-done', () => {
|
|
216
231
|
hideLoading();
|
|
@@ -27,8 +27,14 @@ describe('getBaseURL', () => {
|
|
|
27
27
|
isEnabled: true,
|
|
28
28
|
isEmbeddedLaunch: false,
|
|
29
29
|
localAssets: {
|
|
30
|
+
'8d4e297c3b3e49a614248143d53e40ca':
|
|
31
|
+
'file:///android_res/drawable-mdpi/node_modules_reactnavigation_elements_lib_module_assets_closeicon.png',
|
|
32
|
+
'4403c6117ec30c859bc95d70ce4a71d3':
|
|
33
|
+
'file:///android_res/drawable-mdpi/node_modules_reactnavigation_elements_lib_module_assets_searchicon.png',
|
|
30
34
|
'5d41402abc4b2a76b9719d911017c592':
|
|
31
35
|
'file:///path/to/.expo-internal/5d41402abc4b2a76b9719d911017c592.png',
|
|
36
|
+
'1d1ea1496f9057eb392d5bbf3732a61b7':
|
|
37
|
+
'file:///android_res/drawable/node_modules_exporouter_assets_error.png',
|
|
32
38
|
},
|
|
33
39
|
},
|
|
34
40
|
},
|
|
@@ -45,8 +51,15 @@ describe('getBaseURL', () => {
|
|
|
45
51
|
isEnabled: true,
|
|
46
52
|
isEmbeddedLaunch: true,
|
|
47
53
|
localAssets: {
|
|
54
|
+
'8d4e297c3b3e49a614248143d53e40ca':
|
|
55
|
+
'file:///android_res/drawable-mdpi/node_modules_reactnavigation_elements_lib_module_assets_closeicon.png',
|
|
56
|
+
'4403c6117ec30c859bc95d70ce4a71d3':
|
|
57
|
+
'file:///android_res/drawable-mdpi/node_modules_reactnavigation_elements_lib_module_assets_searchicon.png',
|
|
58
|
+
|
|
48
59
|
'5d41402abc4b2a76b9719d911017c592':
|
|
49
60
|
'file:///path/to/.expo-internal/5d41402abc4b2a76b9719d911017c592.png',
|
|
61
|
+
'1d1ea1496f9057eb392d5bbf3732a61b7':
|
|
62
|
+
'file:///android_res/drawable/node_modules_exporouter_assets_error.png',
|
|
50
63
|
},
|
|
51
64
|
},
|
|
52
65
|
},
|
package/src/dom/base.ts
CHANGED
|
@@ -52,7 +52,10 @@ function getUpdatesBaseURL(): string | null {
|
|
|
52
52
|
// If updates is installed and enabled, and we're not running from an embedded launch, we should serve the DOM Components from the `.expo-internal` directory
|
|
53
53
|
if (shouldServeDomFromUpdates) {
|
|
54
54
|
const localAssets = ExpoUpdates?.localAssets ?? {};
|
|
55
|
-
const anyLocalAsset = Object.values(localAssets)
|
|
55
|
+
const anyLocalAsset = Object.values(localAssets).find(
|
|
56
|
+
(asset) =>
|
|
57
|
+
!asset.startsWith('file:///android_res/') && !asset.startsWith('file:///android_asset/')
|
|
58
|
+
);
|
|
56
59
|
if (anyLocalAsset) {
|
|
57
60
|
// Try to get the `.expo-internal` directory from the first local asset
|
|
58
61
|
return anyLocalAsset.slice(0, anyLocalAsset.lastIndexOf('/'));
|
package/template.tgz
CHANGED
|
Binary file
|