expo-modules-core 55.0.15 → 55.0.17

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/CHANGELOG.md CHANGED
@@ -10,6 +10,20 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 55.0.17 — 2026-03-18
14
+
15
+ _This version does not introduce any user-facing changes._
16
+
17
+ ## 55.0.16 — 2026-03-17
18
+
19
+ ### 🎉 New features
20
+
21
+ - [iOS] Added `Equatable` conformance to `Either` type. ([#43954](https://github.com/expo/expo/pull/43954) by [@nishan](https://github.com/intergalacticspacehighway))
22
+
23
+ ### 🐛 Bug fixes
24
+
25
+ - [iOS] Fixed compilation issues due to missing fallthrough case in `EXJavaScriptSerializable`. ([#43634](https://github.com/expo/expo/pull/43634) by [@tjzel](https://github.com/tjzel))
26
+
13
27
  ## 55.0.15 — 2026-03-11
14
28
 
15
29
  ### 💡 Others
@@ -29,7 +29,7 @@ if (shouldIncludeCompose) {
29
29
  }
30
30
 
31
31
  group = 'host.exp.exponent'
32
- version = '55.0.15'
32
+ version = '55.0.17'
33
33
 
34
34
  def isExpoModulesCoreTests = {
35
35
  Gradle gradle = getGradle()
@@ -96,7 +96,7 @@ android {
96
96
  defaultConfig {
97
97
  consumerProguardFiles 'proguard-rules.pro'
98
98
  versionCode 1
99
- versionName "55.0.15"
99
+ versionName "55.0.17"
100
100
  buildConfigField "String", "EXPO_MODULES_CORE_VERSION", "\"${versionName}\""
101
101
  buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", "true"
102
102
 
@@ -136,6 +136,29 @@ open class EitherOfFour<FirstType, SecondType, ThirdType, FourthType>: EitherOfT
136
136
  }
137
137
  }
138
138
 
139
+ // MARK: - Equatable
140
+
141
+ private func isEitherEqual<T: Equatable>(_ lhs: T, _ rhs: Any) -> Bool {
142
+ guard let rhs = rhs as? T else { return false }
143
+ return lhs == rhs
144
+ }
145
+
146
+ extension Either: Equatable {
147
+ public static func == (lhs: Either, rhs: Either) -> Bool {
148
+ switch (lhs.value, rhs.value) {
149
+ case (nil, nil):
150
+ return true
151
+ case (nil, _), (_, nil):
152
+ return false
153
+ case let (lhs?, rhs?):
154
+ if let lhs = lhs as? any Equatable {
155
+ return isEitherEqual(lhs, rhs)
156
+ }
157
+ return false
158
+ }
159
+ }
160
+ }
161
+
139
162
  // MARK: - Exceptions
140
163
 
141
164
  /**
@@ -191,7 +191,7 @@ open class ExpoFabricView: ExpoFabricViewObjC, AnyExpoView {
191
191
  }
192
192
 
193
193
  internal static func inject(appContext: AppContext) {
194
- // Keep it weak so we don't leak the app context.
194
+ // Keep it weak so we don't leak the app context. We use `var` because `let` is only supported in Swift 6.0+
195
195
  weak var weakAppContext = appContext
196
196
  let appContextBlock: @convention(block) () -> AppContext? = { weakAppContext }
197
197
  let appContextBlockImp: IMP = imp_implementationWithBlock(appContextBlock)
@@ -48,6 +48,8 @@ EXSerializableValueType toObjCValueType(worklets::Serializable::ValueType type)
48
48
  return EXSerializableValueTypeSynchronizable;
49
49
  case worklets::Serializable::ValueType::CustomType:
50
50
  return EXSerializableValueTypeCustom;
51
+ default:
52
+ return EXSerializableValueTypeUndefined;
51
53
  }
52
54
  }
53
55
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-modules-core",
3
- "version": "55.0.15",
3
+ "version": "55.0.17",
4
4
  "description": "The core of Expo Modules architecture",
5
5
  "main": "src/index.ts",
6
6
  "types": "build/index.d.ts",
@@ -66,5 +66,5 @@
66
66
  "@testing-library/react-native": "^13.3.0",
67
67
  "expo-module-scripts": "^55.0.2"
68
68
  },
69
- "gitHead": "bcdd2c239f8a92cdf5140e35cde768352630acd6"
69
+ "gitHead": "31afdbe5613d666148711cb3ec58c4b617a00c14"
70
70
  }