expo 54.0.24 → 54.0.26

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/Expo.podspec CHANGED
@@ -104,6 +104,11 @@ Pod::Spec.new do |s|
104
104
  install_modules_dependencies(s)
105
105
 
106
106
  s.source_files = 'ios/**/*.{h,m,mm,swift}'
107
+ s.exclude_files = 'ios/Tests'
107
108
  s.compiler_flags = compiler_flags
108
109
  s.private_header_files = ['ios/**/Swift.h']
110
+
111
+ s.test_spec 'Tests' do |test_spec|
112
+ test_spec.source_files = 'ios/Tests'
113
+ end
109
114
  end
@@ -32,7 +32,7 @@ buildscript {
32
32
  def reactNativeVersion = project.extensions.getByType(ExpoModuleExtension).reactNativeVersion
33
33
 
34
34
  group = 'host.exp.exponent'
35
- version = '54.0.24'
35
+ version = '54.0.26'
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 "54.0.24"
46
+ versionName "54.0.26"
47
47
  consumerProguardFiles("proguard-rules.pro")
48
48
  }
49
49
  testOptions {
@@ -59,6 +59,19 @@ android {
59
59
  }
60
60
  }
61
61
  }
62
+
63
+ buildTypes {
64
+ create("debugOptimized") {
65
+ initWith(buildTypes.release)
66
+ matchingFallbacks += ["release"]
67
+ }
68
+ }
69
+
70
+ sourceSets {
71
+ debugOptimized {
72
+ setRoot 'src/release'
73
+ }
74
+ }
62
75
  }
63
76
 
64
77
  dependencies { dependencyHandler ->
@@ -1 +1 @@
1
- {"version":3,"file":"FormData.d.ts","sourceRoot":"","sources":["../../src/winter/FormData.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAAC;AAC9C,MAAM,MAAM,gBAAgB,GACxB;IAEE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACrC,GACD;IAEE,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,GACD;IAEE,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEN,MAAM,CAAC,OAAO,OAAO,YAAY;;IAI/B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAChF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IACzC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAE1D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAC5C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAC1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAG1B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAC7E,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IACtC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAGvD,OAAO,CACL,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,EAC9E,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI;IACP,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAChC,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,CAAC;IAC9C,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACzD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACpE;AA0BD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,QAAQ,GAAG,OAAO,YAAY,CAkInF"}
1
+ {"version":3,"file":"FormData.d.ts","sourceRoot":"","sources":["../../src/winter/FormData.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAAC;AAC9C,MAAM,MAAM,gBAAgB,GACxB;IAEE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACrC,GACD;IAEE,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,GACD;IAEE,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEN,MAAM,CAAC,OAAO,OAAO,YAAY;;IAI/B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAChF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IACzC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAE1D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAC5C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAC1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAG1B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAC7E,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IACtC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAGvD,OAAO,CACL,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,EAC9E,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI;IACP,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAChC,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,CAAC;IAC9C,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACzD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACpE;AAiCD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,QAAQ,GAAG,OAAO,YAAY,CAkInF"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "@expo/fingerprint": "~0.15.3",
2
+ "@expo/fingerprint": "~0.15.4",
3
3
  "@expo/metro-runtime": "~6.1.2",
4
4
  "@expo/vector-icons": "^15.0.3",
5
5
  "@expo/ui": "~0.2.0-beta.7",
@@ -19,7 +19,7 @@
19
19
  "expo-apple-authentication": "~8.0.7",
20
20
  "expo-application": "~7.0.7",
21
21
  "expo-asset": "~12.0.10",
22
- "expo-audio": "~1.0.14",
22
+ "expo-audio": "~1.0.16",
23
23
  "expo-auth-session": "~7.0.9",
24
24
  "expo-av": "~16.0.7",
25
25
  "expo-background-fetch": "~14.0.8",
@@ -36,10 +36,10 @@
36
36
  "expo-constants": "~18.0.10",
37
37
  "expo-contacts": "~15.0.10",
38
38
  "expo-crypto": "~15.0.7",
39
- "expo-dev-client": "~6.0.17",
39
+ "expo-dev-client": "~6.0.19",
40
40
  "expo-device": "~8.0.9",
41
41
  "expo-document-picker": "~14.0.7",
42
- "expo-file-system": "~19.0.18",
42
+ "expo-file-system": "~19.0.19",
43
43
  "expo-font": "~14.0.9",
44
44
  "expo-gl": "~16.0.7",
45
45
  "expo-glass-effect": "~0.1.7",
@@ -60,21 +60,22 @@
60
60
  "expo-mail-composer": "~15.0.7",
61
61
  "expo-manifests": "~1.0.9",
62
62
  "expo-maps": "~0.12.8",
63
+ "expo-mcp": "~0.2.1",
63
64
  "expo-media-library": "~18.2.0",
64
65
  "expo-mesh-gradient": "~0.4.7",
65
66
  "expo-module-template": "~11.0.17",
66
- "expo-modules-core": "~3.0.26",
67
+ "expo-modules-core": "~3.0.27",
67
68
  "expo-navigation-bar": "~5.0.9",
68
69
  "expo-network": "~8.0.7",
69
70
  "expo-notifications": "~0.32.13",
70
71
  "expo-print": "~15.0.7",
71
72
  "expo-live-photo": "~1.0.7",
72
- "expo-router": "~6.0.15",
73
+ "expo-router": "~6.0.16",
73
74
  "expo-screen-capture": "~8.0.8",
74
75
  "expo-screen-orientation": "~9.0.7",
75
76
  "expo-secure-store": "~15.0.7",
76
77
  "expo-sensors": "~15.0.7",
77
- "expo-server": "~1.0.4",
78
+ "expo-server": "~1.0.5",
78
79
  "expo-sharing": "~14.0.7",
79
80
  "expo-sms": "~14.0.7",
80
81
  "expo-speech": "~14.0.7",
@@ -86,7 +87,7 @@
86
87
  "expo-system-ui": "~6.0.8",
87
88
  "expo-task-manager": "~14.0.8",
88
89
  "expo-tracking-transparency": "~6.0.7",
89
- "expo-updates": "~29.0.12",
90
+ "expo-updates": "~29.0.14",
90
91
  "expo-video-thumbnails": "~10.0.7",
91
92
  "expo-video": "~3.0.14",
92
93
  "expo-web-browser": "~15.0.9",
@@ -11,7 +11,7 @@ import ReactAppDependencyProvider
11
11
  Keep functions and markers in sync with https://developer.apple.com/documentation/uikit/uiapplicationdelegate
12
12
  */
13
13
  @objc(EXExpoAppDelegate)
14
- open class ExpoAppDelegate: NSObject, @preconcurrency ReactNativeFactoryProvider, UIApplicationDelegate {
14
+ open class ExpoAppDelegate: UIResponder, @preconcurrency ReactNativeFactoryProvider, UIApplicationDelegate {
15
15
  @objc public var factory: RCTReactNativeFactory?
16
16
  private let defaultModuleName = "main"
17
17
  private let defaultInitialProps = [AnyHashable: Any]()
@@ -0,0 +1,14 @@
1
+ // Copyright 2025-present 650 Industries. All rights reserved.
2
+
3
+ import Testing
4
+ @testable import Expo
5
+
6
+ @Suite
7
+ struct ExpoAppDelegateTests {
8
+ @Test
9
+ func `extends UIResponder`() {
10
+ // Assert that `ExpoAppDelegate` extends from `UIResponder` so it doesn't regress again in the future.
11
+ // Otherwise, the `AppDelegate` would lose its responder behavior such as being able to handle touches and key presses.
12
+ #expect(ExpoAppDelegate.self is UIResponder.Type)
13
+ }
14
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo",
3
- "version": "54.0.24",
3
+ "version": "54.0.26",
4
4
  "description": "The Expo SDK",
5
5
  "main": "src/Expo.ts",
6
6
  "module": "src/Expo.ts",
@@ -75,23 +75,23 @@
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.0.16",
79
- "@expo/config": "~12.0.10",
80
- "@expo/config-plugins": "~54.0.2",
78
+ "@expo/cli": "54.0.17",
79
+ "@expo/config": "~12.0.11",
80
+ "@expo/config-plugins": "~54.0.3",
81
81
  "@expo/devtools": "0.1.7",
82
- "@expo/fingerprint": "0.15.3",
82
+ "@expo/fingerprint": "0.15.4",
83
83
  "@expo/metro": "~54.1.0",
84
- "@expo/metro-config": "54.0.9",
84
+ "@expo/metro-config": "54.0.10",
85
85
  "@expo/vector-icons": "^15.0.3",
86
86
  "@ungap/structured-clone": "^1.3.0",
87
87
  "babel-preset-expo": "~54.0.7",
88
88
  "expo-asset": "~12.0.10",
89
89
  "expo-constants": "~18.0.10",
90
- "expo-file-system": "~19.0.18",
90
+ "expo-file-system": "~19.0.19",
91
91
  "expo-font": "~14.0.9",
92
92
  "expo-keep-awake": "~15.0.7",
93
- "expo-modules-autolinking": "3.0.22",
94
- "expo-modules-core": "3.0.26",
93
+ "expo-modules-autolinking": "3.0.23",
94
+ "expo-modules-core": "3.0.27",
95
95
  "pretty-format": "^29.7.0",
96
96
  "react-refresh": "^0.14.2",
97
97
  "whatwg-url-without-unicode": "8.0.0-3"
@@ -100,7 +100,7 @@
100
100
  "@types/node": "^22.14.0",
101
101
  "@types/react": "~19.1.10",
102
102
  "@types/react-test-renderer": "~19.1.0",
103
- "expo-module-scripts": "^5.0.7",
103
+ "expo-module-scripts": "^5.0.8",
104
104
  "react": "19.1.0",
105
105
  "react-dom": "19.1.0",
106
106
  "react-native": "0.81.5",
@@ -124,5 +124,5 @@
124
124
  "optional": true
125
125
  }
126
126
  },
127
- "gitHead": "6d7c221dc8a1994043c4f2ddcf33a16bf3e508dc"
127
+ "gitHead": "e8b838828e5e985379c07294dc932dba66c89562"
128
128
  }
@@ -73,8 +73,15 @@ function normalizeArgs(
73
73
  blobFilename: string | undefined
74
74
  ): [string, File | string] {
75
75
  if (value instanceof Blob) {
76
- // @ts-expect-error: `Blob.data.blobId` is react-native's proprietary property.
77
- value.name = blobFilename ?? blob.name ?? 'blob';
76
+ const descriptor = Object.getOwnPropertyDescriptor(value, 'name');
77
+
78
+ if (descriptor && descriptor.writable) {
79
+ // @ts-expect-error: `name` is not accessible in blob
80
+ value.name = blobFilename ?? value.name ?? 'blob';
81
+ } else if (!descriptor && Object.isExtensible(value)) {
82
+ // @ts-expect-error: `name` is not accessible in blob
83
+ value.name = blobFilename ?? 'blob';
84
+ }
78
85
  } else if (typeof value !== 'object') {
79
86
  value = String(value);
80
87
  }
package/template.tgz CHANGED
Binary file