@burnt-labs/expo-satya-attest 3.14.3 → 3.14.4

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
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.14.4 - 2026-11-09
4
+
5
+ ### Fixed
6
+
7
+ - iOS apps that use React Native's prebuilt core (the default for Expo 56 /
8
+ React Native 0.85 builds) failed to compile the SDK with
9
+ `value of type 'UIView' has no member 'reactViewController'`. The connection
10
+ sheet now finds its view controller through UIKit's responder chain, so the
11
+ SDK no longer depends on React Native's `UIView+React` category. Affects
12
+ 3.14.0 through 3.14.3.
13
+
3
14
  ## 3.14.3 - 2026-11-09
4
15
 
5
16
  ### Changed
package/PUBLISHING.md CHANGED
@@ -12,8 +12,8 @@ for a plug-and-play Expo SDK.
12
12
 
13
13
  ## Release preparation
14
14
 
15
- The prepared version is **3.14.3**. This patch changes the connection sheet's
16
- opening title to **Loading...**. See the [consumer changelog](./CHANGELOG.md).
15
+ The prepared version is **3.14.4**. This patch fixes the iOS build with prebuilt
16
+ React Native core. See the [consumer changelog](./CHANGELOG.md).
17
17
 
18
18
  Before tagging a stable release, validate the candidate in a consuming app:
19
19
 
@@ -271,7 +271,7 @@ internal/module_scripts/
271
271
  After the release gates pass and publication is authorized, use the consolidated
272
272
  `publish-expo-satya-attest.yml` workflow. A stable tag must match the committed
273
273
  package version and point to a commit on `main`; for this prepared release the
274
- package-specific tag is `expo-satya-attest-v3.14.3`. Creating/pushing that tag starts
274
+ package-specific tag is `expo-satya-attest-v3.14.4`. Creating/pushing that tag starts
275
275
  publication. Manual workflow dispatch is a dry-run.
276
276
 
277
277
  The workflow builds native artifacts, runs the release checks, and publishes
@@ -284,11 +284,11 @@ After publication, check the npm version and dist-tag before updating the exampl
284
284
  ## npm Snapshots
285
285
 
286
286
  The snapshot workflow increments the committed patch version in CI and appends
287
- the run, attempt and source commit. For a package at `3.14.3`, the resulting
287
+ the run, attempt and source commit. For a package at `3.14.4`, the resulting
288
288
  version has this form:
289
289
 
290
290
  ```text
291
- 3.14.4-snapshot.<run>.<attempt>.sha-<commit>
291
+ 3.14.5-snapshot.<run>.<attempt>.sha-<commit>
292
292
  ```
293
293
 
294
294
  Snapshots use the `snapshot` dist-tag so test apps do not need to know the generated
@@ -4,14 +4,14 @@ plugins {
4
4
  }
5
5
 
6
6
  group = 'expo.modules.satyaattest'
7
- version = '3.14.3'
7
+ version = '3.14.4'
8
8
 
9
9
  android {
10
10
  namespace "expo.modules.satyaattest"
11
11
  defaultConfig {
12
12
  consumerProguardFiles 'consumer-rules.pro'
13
13
  versionCode 1
14
- versionName "3.14.3"
14
+ versionName "3.14.4"
15
15
  // StrongBox key attestation needs API 28+; basic Keystore attestation API 24+.
16
16
  minSdkVersion 24
17
17
  }
@@ -1,3 +1,3 @@
1
1
  export declare const EXPO_SATYA_ATTEST_SDK_NAME: "@burnt-labs/expo-satya-attest";
2
- export declare const EXPO_SATYA_ATTEST_SDK_VERSION: "3.14.3";
2
+ export declare const EXPO_SATYA_ATTEST_SDK_VERSION: "3.14.4";
3
3
  //# sourceMappingURL=sdkMetadata.generated.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Generated by internal/module_scripts/sync-sdk-metadata.js.
2
2
  export const EXPO_SATYA_ATTEST_SDK_NAME = '@burnt-labs/expo-satya-attest';
3
- export const EXPO_SATYA_ATTEST_SDK_VERSION = '3.14.3';
3
+ export const EXPO_SATYA_ATTEST_SDK_VERSION = '3.14.4';
4
4
  //# sourceMappingURL=sdkMetadata.generated.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdkMetadata.generated.js","sourceRoot":"","sources":["../src/sdkMetadata.generated.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,CAAC,MAAM,0BAA0B,GAAG,+BAAwC,CAAC;AACnF,MAAM,CAAC,MAAM,6BAA6B,GAAG,QAAiB,CAAC","sourcesContent":["// Generated by internal/module_scripts/sync-sdk-metadata.js.\nexport const EXPO_SATYA_ATTEST_SDK_NAME = '@burnt-labs/expo-satya-attest' as const;\nexport const EXPO_SATYA_ATTEST_SDK_VERSION = '3.14.3' as const;\n"]}
1
+ {"version":3,"file":"sdkMetadata.generated.js","sourceRoot":"","sources":["../src/sdkMetadata.generated.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,CAAC,MAAM,0BAA0B,GAAG,+BAAwC,CAAC;AACnF,MAAM,CAAC,MAAM,6BAA6B,GAAG,QAAiB,CAAC","sourcesContent":["// Generated by internal/module_scripts/sync-sdk-metadata.js.\nexport const EXPO_SATYA_ATTEST_SDK_NAME = '@burnt-labs/expo-satya-attest' as const;\nexport const EXPO_SATYA_ATTEST_SDK_VERSION = '3.14.4' as const;\n"]}
@@ -110,6 +110,6 @@ export interface TeeSubmissionEnvelope {
110
110
  sdkSessionId?: string;
111
111
  }
112
112
  export declare function teeSubmissionEnvelope(appId: string, artifacts: readonly string[], sdkSessionId?: string, schemaVersion?: '3.0.0' | '3.1.0'): TeeSubmissionEnvelope;
113
- export declare const SDK_VERSION: "3.14.3";
113
+ export declare const SDK_VERSION: "3.14.4";
114
114
  export type { SatyaTeeSessionContext };
115
115
  //# sourceMappingURL=client.d.ts.map
@@ -10,18 +10,15 @@
10
10
  <key>HeadersPath</key>
11
11
  <string>Headers</string>
12
12
  <key>LibraryIdentifier</key>
13
- <string>ios-arm64_x86_64-simulator</string>
13
+ <string>ios-arm64</string>
14
14
  <key>LibraryPath</key>
15
15
  <string>libsatya_ffi.a</string>
16
16
  <key>SupportedArchitectures</key>
17
17
  <array>
18
18
  <string>arm64</string>
19
- <string>x86_64</string>
20
19
  </array>
21
20
  <key>SupportedPlatform</key>
22
21
  <string>ios</string>
23
- <key>SupportedPlatformVariant</key>
24
- <string>simulator</string>
25
22
  </dict>
26
23
  <dict>
27
24
  <key>BinaryPath</key>
@@ -29,15 +26,18 @@
29
26
  <key>HeadersPath</key>
30
27
  <string>Headers</string>
31
28
  <key>LibraryIdentifier</key>
32
- <string>ios-arm64</string>
29
+ <string>ios-arm64_x86_64-simulator</string>
33
30
  <key>LibraryPath</key>
34
31
  <string>libsatya_ffi.a</string>
35
32
  <key>SupportedArchitectures</key>
36
33
  <array>
37
34
  <string>arm64</string>
35
+ <string>x86_64</string>
38
36
  </array>
39
37
  <key>SupportedPlatform</key>
40
38
  <string>ios</string>
39
+ <key>SupportedPlatformVariant</key>
40
+ <string>simulator</string>
41
41
  </dict>
42
42
  </array>
43
43
  <key>CFBundlePackageType</key>
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: package/ios/Frameworks/libsatya_ffi-rs.xcframework/ios-arm64/libsatya_ffi.a
3
- size: 42196584 bytes
4
- sha256: fa702548a36f89a3e018b15de284416d3914965c91368d82416a519f8a8b5ebc
3
+ size: 42195760 bytes
4
+ sha256: 45a3593b716c69fdea53448bb5c8acc17bd151f3643942d507f1546034d50bf2
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: package/ios/Frameworks/libsatya_ffi-rs.xcframework/ios-arm64_x86_64-simulator/libsatya_ffi.a
3
- size: 83704856 bytes
4
- sha256: 52677e51a489be1e1a9d389a1d78c33404d2a79d8a8a5c1eab7a2104625cf47f
3
+ size: 83625024 bytes
4
+ sha256: a0c74c10d8357721f4efe38e2f2fe6cfe7adb45bbdfd6980a25de61216f8db81
@@ -1,6 +1,6 @@
1
1
  Pod::Spec.new do |s|
2
2
  s.name = 'SatyaAttest'
3
- s.version = '3.14.3'
3
+ s.version = '3.14.4'
4
4
  s.summary = 'SATYA-W mobile TLS app-attestation (App Attest + Secure Enclave) backed by the Rust satya-sdk core'
5
5
  s.description = 'Expo native module wrapping the Rust satya-ffi XCFramework and layering iOS App Attest + Secure Enclave platform attestation.'
6
6
  s.author = 'Justin'
@@ -7,6 +7,18 @@ import UIKit
7
7
  import WebKit
8
8
  import os
9
9
 
10
+ // Nearest view controller in the responder chain. Mirrors React Native's
11
+ // `reactViewController()` without depending on React's UIView category, which
12
+ // is not visible to this module when the app uses prebuilt React Native core.
13
+ private func owningViewController(of view: UIView) -> UIViewController? {
14
+ var responder: UIResponder? = view
15
+ while let current = responder {
16
+ if let controller = current as? UIViewController { return controller }
17
+ responder = current.next
18
+ }
19
+ return nil
20
+ }
21
+
10
22
  // Keep buffered iOS bodies conservative while JSON/regex extraction makes full-body copies.
11
23
  private let kMaxResponseBodyBytes = 16 * 1024 * 1024
12
24
  // Independent raw-response work budget; revealed values use NativeRevealBudget.
@@ -62,7 +74,7 @@ public class SatyaAttestModule: Module {
62
74
  AsyncFunction("sizeConnectionSheet") { (viewTag: Int) in
63
75
  guard #available(iOS 16.0, *),
64
76
  let view = self.appContext?.findView(withTag: viewTag, ofType: UIView.self),
65
- let controller = view.reactViewController(),
77
+ let controller = owningViewController(of: view),
66
78
  controller.modalPresentationStyle == .pageSheet,
67
79
  let sheet = controller.sheetPresentationController
68
80
  else { return }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burnt-labs/expo-satya-attest",
3
- "version": "3.14.3",
3
+ "version": "3.14.4",
4
4
  "description": "SATYA Expo SDK for native app attestation and TEE replay through device egress",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -1,3 +1,3 @@
1
1
  // Generated by internal/module_scripts/sync-sdk-metadata.js.
2
2
  export const EXPO_SATYA_ATTEST_SDK_NAME = '@burnt-labs/expo-satya-attest' as const;
3
- export const EXPO_SATYA_ATTEST_SDK_VERSION = '3.14.3' as const;
3
+ export const EXPO_SATYA_ATTEST_SDK_VERSION = '3.14.4' as const;