Skip to main content
From v0.28.0 the SDK also ships outside React Native: a Swift package for iOS and the Android bindings with their native libraries. Both are early previews. They are built from the same bridge sources the React Native module compiles, and what is public in them is what that module needed public, not a decided API. Names may change in a later release. For a phone app you ship today, use React Native. Use the native packages to evaluate an integration or to build on the generated bindings directly.

Swift package (iOS)

Add the package by URL in Xcode, or in a manifest:
Current limits:
  • The storage providers (the Keychain MLS store and the protocol-state file store) are not yet public, so an application cannot construct them from the package.
  • Wiring the transport managers to the engine is the application’s job. A public entry point that does both is planned for this package.
Offline-Protocol/offline-protocol-swift is generated by the SDK’s release workflow; changes made there are overwritten. File issues in the SDK repository. The same release also attaches the XCFramework (offline-protocol-0.28.0-swiftpm-xcframework.zip, offline-protocol-0.28.0-ios-xcframework.zip) and the assembled package (offline-protocol-0.28.0-swift-package.tar.gz). The iOS peer-stream manager uses Network framework, so the interoperability break with 0.27 applies here as well. Declare the Info.plist keys in iOS peer streams before enabling that transport.

Android bindings

The Android library has Maven coordinates (com.offlineprotocol:offline-protocol-sdk), but it is not published to Maven Central. Download offline-protocol-0.28.0-android.zip from the v0.28.0 GitHub release. It contains: Add the Kotlin file to your app’s sources and copy each ABI directory under app/src/main/jniLibs/. The bindings load the library through JNA, so add JNA as an Android archive; the SDK builds against 5.19.1:
The archive holds the bindings and libraries only. The Android transport managers and storage providers ship in the React Native package, and the full Android library can be built from bindings/kotlin in the SDK repository (JDK 17, Android SDK and Gradle 8.9); see its README. The library’s floor is Android 7 (API 24), compiled against API 34. The Android integration guide shows the bindings in Kotlin.

Desktop native libraries

The same release attaches the native library for linux-x86_64, linux-aarch64, macos-arm64 and windows-x86_64. Python users get these inside the PyPI wheels; Rust users build from the crates.