Skip to content

Compatibility

RequirementSupported
iOS15.5+
Xcode26.6+ — see the floor below, it is a hard requirement
Swift6.3.3+ (the compiler that built the engine binary)
DistributionSwift Package Manager only
Architecturesarm64 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:

Terminal window
grep swift-compiler-version \
Frameworks/BGeoCore.xcframework/ios-arm64/BGeoCore.framework/Modules/BGeoCore.swiftmodule/*.swiftinterface

The 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.