expo-modules-jsi 56.0.10 → 56.0.12

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,18 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 56.0.12 — 2026-07-07
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - [iOS] Return `NSNull` instead of trapping in the deprecated `JavaScriptValue.getAny()` when it encounters a unrepresentable value. ([#47381](https://github.com/expo/expo/pull/47381) by [@alanjhughes](https://github.com/alanjhughes))
18
+
19
+ ## 56.0.11 — 2026-07-03
20
+
21
+ ### 🐛 Bug fixes
22
+
23
+ - [iOS] Preserve the `code` on the JavaScript error when an async function rejects with a `JavaScriptThrowable` (e.g. an `Exception`), instead of stringifying it and dropping the `code` — mirroring the synchronous throw path. ([#47453](https://github.com/expo/expo/pull/47453) by [@HubertBer](https://github.com/HubertBer))
24
+
13
25
  ## 56.0.10 — 2026-06-15
14
26
 
15
27
  ### 🐛 Bug fixes
@@ -102,9 +102,13 @@ public struct JavaScriptPromise: JavaScriptType, ~Copyable {
102
102
  guard let rejecter = rejectFunction.take() else {
103
103
  return
104
104
  }
105
- // Create a JS error from any (native) error.
106
- let errorMessage = String(describing: error)
107
- let errorValue = JavaScriptError(runtime, message: errorMessage).asValue()
105
+
106
+ let errorValue: JavaScriptValue
107
+ if let throwable = error as? JavaScriptThrowable {
108
+ errorValue = JavaScriptError(runtime, from: throwable).asValue()
109
+ } else {
110
+ errorValue = JavaScriptError(runtime, message: String(describing: error)).asValue()
111
+ }
108
112
 
109
113
  // Call the actual rejecter given in the Promise setup.
110
114
  // This will also call `deferredPromise.reject` in the `then` handler.
@@ -201,7 +201,8 @@ public final class JavaScriptValue: JavaScriptType, Equatable, Escapable, Error
201
201
  return result
202
202
  }
203
203
  if object.isFunction() {
204
- FatalError.unimplemented()
204
+ // Don't trap, callers convert speculatively under `try?`, which can't catch a `fatalError`.
205
+ return NSNull()
205
206
  }
206
207
  var result = [String: Any]()
207
208
 
@@ -215,7 +216,8 @@ public final class JavaScriptValue: JavaScriptType, Equatable, Escapable, Error
215
216
  }
216
217
  return result
217
218
  }
218
- fatalError("Unsupported value kind: \(kind)")
219
+ // Unrepresentable kind (e.g. symbol). Don't trap, for the same reason as above.
220
+ return NSNull()
219
221
  }
220
222
 
221
223
  /// Returns the value as a boolean, or asserts if not a boolean.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-modules-jsi",
3
- "version": "56.0.10",
3
+ "version": "56.0.12",
4
4
  "description": "The JavaScript Interface for Expo Modules",
5
5
  "main": "index.js",
6
6
  "sideEffects": [],
@@ -41,7 +41,7 @@
41
41
  "./apple/scripts/test.sh"
42
42
  ]
43
43
  },
44
- "gitHead": "812dc007aefed0c432c0439fdfe05ee2f4f21da2",
44
+ "gitHead": "f7fcf668bc1a31cccd73275e6c316a0d1253f4c9",
45
45
  "scripts": {
46
46
  "build": "apple/scripts/build-xcframework.sh",
47
47
  "swift:format": "../../scripts/swift-format.sh",