A Swift framework for iOS Bluetooth LE development, replacing CoreBluetooth's delegate pattern with a futures-based interface.
BlueCap is an iOS Bluetooth Low Energy (BLE) framework that simplifies Bluetooth LE application development by providing a modern, futures-based interface. It replaces Apple's CoreBluetooth delegate and block patterns with a streamlined, chainable API that reduces state management complexity and nested callbacks.
iOS developers building applications that interact with Bluetooth Low Energy devices, such as those creating sensor data apps, peripheral simulators, or custom BLE services and clients.
Developers choose BlueCap over CoreBluetooth because it eliminates boilerplate and scattered state management, offering a declarative, composable approach with features like timeout support, a GATT profile DSL, and built-in serialization for cleaner, more maintainable code.
iOS Bluetooth LE framework
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Replaces CoreBluetooth's delegate and block patterns with a chainable futures interface using SimpleFutures, reducing nested callbacks and scattered state management, as demonstrated in the CentralManager example with flatMap chains.
Provides built-in timeouts for peripheral connections, service/characteristic discovery, and read/write operations—a feature CoreBluetooth lacks—helping prevent hanging operations.
Includes a domain-specific language for defining reusable GATT service and characteristic profiles, simplifying profile management and reuse across projects.
Offers ready-made types for encoding and decoding characteristic data, handling data conversion seamlessly without manual parsing.
Comes with full example apps for CentralManager and PeripheralManager, plus a scanner/simulator app on the App Store, accelerating development and testing.
Relies on SimpleFutures instead of modern Swift concurrency features like Combine or async/await, making it feel dated compared to newer iOS frameworks.
Installation requires managing dependencies via CocoaPods or Carthage, and manual setup involves multiple steps like adding frameworks and setting deployment targets, as detailed in the README.
Only supports iOS 12.0+ and lacks updates for newer iOS versions or other Apple platforms like macOS or watchOS, restricting its use in broader ecosystems.
Introduces a futures-based paradigm that developers accustomed to CoreBluetooth's delegates may find challenging, with error handling spread across chained futures increasing initial complexity.