Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Bluetooth Low Energy
  3. Kable

Kable

Apache-2.0Kotlin0.42.0

A Kotlin Coroutines-powered library for asynchronous Bluetooth Low Energy (BLE) communication across multiple platforms.

Visit WebsiteGitHubGitHub
1.1k stars105 forks0 contributors

What is Kable?

Kable is a Kotlin Multiplatform library that provides an asynchronous, Coroutines-based API for Bluetooth Low Energy (BLE) communication. It solves the problem of writing cross-platform BLE code by abstracting platform-specific details and offering a unified, modern API for scanning, connecting, and performing I/O operations with BLE devices.

Target Audience

Kotlin developers building cross-platform applications that need to communicate with BLE devices, such as IoT apps, health/fitness trackers, or smart device controllers on Android, iOS, web, and desktop.

Value Proposition

Developers choose Kable for its seamless integration with Kotlin Coroutines, eliminating callback hell and simplifying async BLE operations. Its multiplatform support reduces code duplication, while its idiomatic Kotlin API makes BLE development more intuitive and maintainable compared to platform-specific SDKs.

Overview

Kotlin Asynchronous Bluetooth Low-Energy

Use Cases

Best For

  • Building cross-platform mobile apps that connect to BLE sensors or wearables
  • Developing IoT applications that communicate with BLE-enabled smart devices
  • Creating health/fitness apps that read data from BLE heart rate monitors or glucose meters
  • Prototyping BLE interactions quickly using Kotlin Coroutines and Flows
  • Writing shared BLE logic for Android and iOS apps with a single codebase
  • Implementing Web Bluetooth functionality in Kotlin/JS applications

Not Ideal For

  • Native Android or iOS apps requiring direct, low-level access to platform-specific BLE APIs for performance-critical optimizations
  • Web projects targeting browsers without Web Bluetooth support or needing stable, non-experimental APIs for production use
  • Teams that rely on BLE scanning filters like Address on Apple platforms, where Kable lacks native support and uses less efficient flow filtering

Pros & Cons

Pros

Modern Coroutines API

Uses Kotlin Coroutines and Flows for all asynchronous operations like scanning and I/O, eliminating callback hell and making BLE code more readable and maintainable, as demonstrated in the SensorTag sample app.

Cross-Platform Abstraction

Abstracts platform-specific BLE complexities, allowing developers to write shared code for Android, iOS, JavaScript, macOS, and JVM with a consistent API, reducing code duplication across targets.

Flexible UUID Handling

Provides utilities like `Bluetooth.BaseUuid + 0x180D` and `Uuid.service('heart_rate')` for shorthand UUID notation, simplifying common BLE identifier management as outlined in the UUIDs section.

Built-in Connection Management

Handles connectivity with state flows, automatic service discovery, and support for reconnection, reducing boilerplate—examples include the `connect` and `disconnect` functions with automatic state transitions.

Cons

Platform Filter Inconsistencies

Some scanning filters, such as Address on Apple and JavaScript platforms, are not natively supported, forcing Kable to use less efficient flow filtering, which can impact scanning performance on those targets.

Web Bluetooth Limitations

JavaScript support depends on Chrome's experimental Web Bluetooth API, requiring users to enable flags like 'Experimental Web Platform features,' making it unsuitable for production web apps needing broad browser compatibility.

Setup Complexity

Requires Gradle configuration with Kotlin Multiplatform and Coroutines dependencies, plus platform-specific permissions and CentralManager setup for background support, which adds overhead for developers new to this ecosystem.

Frequently Asked Questions

Quick Stats

Stars1,142
Forks105
Contributors0
Open Issues42
Last commit23 hours ago
CreatedSince 2020

Tags

#apple#coroutines#android#bluetooth-low-energy#asynchronous-io#kotlin-library#kotlin-multiplatform#javascript#cross-platform#kotlin-coroutines

Built With

K
Kotlin
K
Kotlin Multiplatform
K
Kotlin Coroutines
G
Gradle

Links & Resources

Website

Included in

Bluetooth Low Energy129
Auto-fetched 5 hours ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub