FabricKit is the native iOS package for FabricBloc. Wallet keys live in the Secure Enclave when available. No web view, no React Native bridge, no custom keychain to maintain.
Install
In Xcode, add via Swift Package Manager:
https://github.com/bloclabshq/fabrickit-swift
Or in Package.swift:
.package(url: "https://github.com/bloclabshq/fabrickit-swift", from: "2.4.0")
Requirements
- iOS 16+, macOS 13+, watchOS 9+
- Swift 5.9+
- Xcode 15+
Highlights
Secure Enclave keys
MPC key shares live in the Secure Enclave when available. Never leaves the device.
SwiftUI and UIKit
First-party views for sign-in, confirmation, and asset display in both UI frameworks.
Combine and async/await
Both reactive Combine publishers and modern async/await on every request.
Examples
Initialize
// FabricBlocClient.swift
import FabricKit
guard let apiKey = ProcessInfo.processInfo.environment["FB_KEY"] else {
fatalError("FB_KEY environment variable is required")
}
let fb = FabricBloc(apiKey: apiKey)
Create a wallet
// WalletService.swift
let wallet = try await fb.wallets.create(
userId: "user_123",
chains: [.base, .polygon]
)
// Hardware-backed. Never leaves Secure Enclave.
try await wallet.send(to: recipient, value: amount)
SwiftUI sign-in
// ContentView.swift
import SwiftUI
import FabricKit
struct ContentView: View {
var body: some View {
FabricBlocSignIn(fb: fb)
.onAuthenticated { session in
// session.wallet is a fully typed Wallet.
}
}
}
FAQ
Is this a wrapper around the web SDK?
No. FabricKit is a first-party Swift package. It is not a web view, not a React Native bridge, and not a wrapper around the JavaScript SDK.
How does the Secure Enclave integration work?
When the device supports the Secure Enclave (all modern iPhones, iPads, and Macs), MPC key shares are bound to the enclave via SecAccessControl. Operations that need the key prompt for biometric authentication.
Does it support Mac Catalyst?
Yes. The same package works for Mac Catalyst targets and native macOS targets running macOS 13+.