Compatibility
| Requirement | Supported |
|---|---|
| iOS | 15.5+ |
| Xcode | 26.6+ — see the floor below, it is a hard requirement |
| Swift | 6.3.3+ (the compiler that built the engine binary) |
| Distribution | Swift Package Manager only |
| Architectures | arm64 device, arm64 + x86_64 simulator |
The toolchain floor
The engine ships as a binary framework, and a .swiftinterface can only be
read by a Swift compiler at least as new as the one that wrote it. Open the
package on an older Xcode and it fails while parsing the interface, with an
error that never names the real cause.
The floor is therefore whatever Xcode cut the release — 26.6 / Swift 6.3.3 today. It is recorded in the binary itself:
grep swift-compiler-version \ Frameworks/BGeoCore.xcframework/ios-arm64/BGeoCore.framework/Modules/BGeoCore.swiftmodule/*.swiftinterfaceThe package’s CI checks the runner’s compiler against that line and fails with both versions named, rather than letting it surface as a build error deep in a log.
If this floor is too high for your team, the React Native and Flutter SDKs ship the same engine and are unaffected: their bridge is compiled against your toolchain, and only the ObjC++ side of the binary is consumed.
iOS only
This is the native iOS SDK. For Android, use the Android SDK, or one of the two cross-platform SDKs, which wrap the same engine on both platforms.
What comes with it
Nothing but the engine. The package has no third-party dependencies at all —
it links CoreLocation, CoreMotion, UIKit and Network from the system,
and the vendored BGeoCore.xcframework.
Distribution
SwiftPM only; there is no podspec and none is planned. The engine binary is
committed in the package repository rather than fetched from a release asset,
so a checkout is self-contained and no checksum can drift from a file someone
re-uploaded. The trade-off — roughly 0.9 MB of git history per engine release —
is documented in the package’s own Package.swift.
Simulator
Device and simulator slices are both shipped, so the SDK builds and runs in the Simulator, unlicensed. What the Simulator cannot do is exercise the parts that matter: background delivery, force-quit relaunch and Core Motion all behave differently or not at all. Treat a green Simulator run as a compile check, not as evidence tracking works.