universal_ble
A cross-platform (Android/iOS/macOS/Windows/Linux/Web) Bluetooth Low Energy (BLE) plugin for Flutter
2.1.1
40K downloads/mo
#1628 most downloaded on pub.dev
Navideck/universal_ble
What this package is like to depend on
Last release 28 days ago
27 Jul 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 43 of 44 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
44 releases · first in 2024
12 releases in the last 12 months
see the full history below
Release timeline
44 releases · Jan 2024 to Jul 2026
2025
2026
Releases
latest 44-
2.1.127 Jul 2026Release notes
Open source →- Android: Fix BluetoothDevice null-safety compile error under Kotlin 2.x
- Android: Make Android write-completion delivery thread-safe
- Fix
BleCharacteristicequality andhashCodeto comparepropertiesby value - Handle device IDs case-insensitively
-
2.1.025 Jun 2026Release notes
Open source →- Add optional
queueIdparameter to all APIs - iOS/macOS: add opt-in
AppleConnectionOptionstoconnect(viaConnectionPlatformConfig) — map toCBConnectPeripheralOptionNotifyOnConnectionKey,NotifyOnDisconnectionKeyandNotifyOnNotificationKey, so a suspended app is relaunched into the background to handle connection events (e.g. auto-reconnect while the phone is locked) - Android: add
legacytoAndroidOptions— setlegacy: trueto scan legacy BLE 4.x advertisements (e.g. ESP32) on API 26+; default (null/false) keeps extended-advertisement scanning unchanged from prior releases - Android: add
addServicesInScanResponsetoPeripheralAndroidOptions- setaddServicesInScanResponse: trueto Put advertised service UUIDs in the scan response instead of the primary advertisement - Android: merge manufacturer data with duplicate company id in scan results
- Add optional
-
2.0.405 Jun 2026Release notes
Open source →- iOS: make Bluetooth state restoration optional by enabling it only when the
bluetooth-centralbackground mode is declared - iOS: when state restoration is enabled, init
CBCentralManagerat launch only if Bluetooth permission is granted
- iOS: make Bluetooth state restoration optional by enabling it only when the
-
2.0.305 Jun 2026Release notes
Open source →- iOS/macOS: defer
CBPeripheralManagercreation until peripheral APIs are used, fixing Bluetooth permission prompt on app launch - iOS: add CoreBluetooth state preservation/restoration so the app can be relaunched in the background by a connected peripheral and resume the live connection. Requires the
bluetooth-centralbackground mode inInfo.plist(see README → Permissions → iOS / macOS). - Android: Fix missing scan name after reconnection
- Windows: Fix null pointer crash when BLE device is unpaired during active scanCommits on May 28, * Windows: Refactor property value lookups to use a safe lookup function
- Fix Dart primary constructor compatibility
- iOS/macOS: defer
-
2.0.220 May 2026Release notes
Open source →- iOS/macOS: retain peripheral from retrievePeripherals to fix API MISUSE on connect
- Android: migrate to built-in Kotlin (removes Kotlin Gradle Plugin usage)
- Use conditional imports for the Linux backend so the package is compatible with the WASM runtime on pub.dev
-
2.0.118 May 2026Release notes
Open source →- Android peripheral: eager Kotlin initialization, thread-safe GATT connection cache, and pairing only via
pair()or when encryption requires it - Add
onConnectionParametersChangeto notify when Android link-layer connection parameters change (API 26+) - Android: expose
callbackType,matchMode, andnumOfMatchesonAndroidOptionsso callers can configureScanSettingsto defeat aggressive chip-side advert de-duplication on Pixel devices.callbackTypeaccepts aList<AndroidScanCallbackType>(OR-folded on the native side) and includes a newallMatchesAutoBatchvalue (API 34+).
- Android peripheral: eager Kotlin initialization, thread-safe GATT connection cache, and pairing only via
-
2.0.015 May 2026Release notes
Open source →- Add peripheral mode on Android, iOS, macOS, and Windows
- Add
requestConnectionPriorityto allow tuning BLE connection intervals on Android - Add SPM support on Apple
-
1.2.028 Feb 2026Release notes
Open source →- Add
autoConnectparameter toconnect()method for automatic reconnection support on Android and iOS/macOS - Add
serviceDatainBleDevice - Add
AndroidScanModeandreportDelayMillistoAndroidOptionsfor scanning - Add support for BLE scanning from background services (ForegroundTask) on Android.
PermissionHandleris now activity-aware and succeeds silently if permissions are already granted when no activity is available - Always use custom scan filter on Windows
- Fix Windows crash by handling WinRT exceptions in BLE callback paths
- Add serviceData tracking in Linux advertisements
- Add
-
1.1.005 Jan 2026 -
1.0.1+305 Jan 2026Nothing published for this version
-
1.0.017 Dec 2025Release notes
Open source →- BREAKING CHANGE:
OnValueChangecallback also includes timestamp - BREAKING CHANGE: Bump minimum IOS version to 13.1
- BREAKING CHANGE: Bump minimum MacOS version to 10.15
- Fix Windows 11 crash on cancelling pairing
- Unified error codes for all platforms
- Add
isScanningapi - Add
hasPermissionsapi - Add
requestPermissionsapi and auto ask permission onstartScan disconnectnow waits for disconnection confirmation before returning- Improve Windows disconnection event handling and cleanup
- Add
withDescriptorsparameter indiscoverServicesAPI - Add
timestampinBleDevice - Add
setLogLevelapi for configuring logs
- BREAKING CHANGE:
-
0.21.101 Sep 2025Release notes
Open source →- Fix device name resolution on Windows
- Add
exclusionFiltersto filter out devices from scan results
-
0.21.016 Jul 2025Release notes
Open source →- BREAKING CHANGE:
connectionTimeoutargument fromconnect,isPairedandpairAPI renamed totimeout - Add
timeoutargument to all APIs - Add
clearQueue()API
- BREAKING CHANGE:
-
0.20.208 Jul 2025 -
0.20.126 Jun 2025Release notes
Open source →- Fix
writeWithoutResponse()which was not properly waiting for completion on Android and Apple
- Fix
-
0.20.019 Jun 2025Release notes
Open source →- Add new high level API. Services are auto-discovered. the BleDevice class offers convenient member methods and properties.
- BREAKING CHANGE:
bleDevice.isPairedis nowbleDevice.paired - Deprecate
readValuein favor ofread - Deprecate
writeValuein favor ofwrite - Deprecate
setNotifiablein favor ofsubscribeNotifications,subscribeIndications,unsubscribe - Fix
getBluetoothAvailabilityStatereporting wrong Bluetooth status on browsers where Web Bluetooth can globally be disabled startScanon web now throws aWebBluetoothGloballyDisabledexception if scanning cannot proceed due to Web Bluetooth being globally disabled- EXAMPLE APP: Migrate to the new high level API
-
0.19.029 May 2025Release notes
Open source →- Get and prefer advertised name of scanned devices on Apple
- Improve Android runtime permissions docs
- Cache and return advertised name for system devices on Apple
- Add app showcase in Readme
- EXAMPLE APP: Don't disconnect on leaving the details page
- EXAMPLE APP: Fix Android builds
- EXAMPLE APP: Fix service filter warning on macOS
- EXAMPLE APP: Add types to callbacks
-
0.18.008 May 2025Release notes
Open source →- Add Streams:
scanStream,availabilityStream,connectionStream,characteristicValueStream,pairingStateStream - Fix
connectapi bug to detect proper connection state - Fix
getSystemDevices()on Linux - Improve docs for isPaired
- Add Streams:
-
0.17.019 Mar 2025Release notes
Open source →- Fix Windows crash when calling pair APIs with an unknown deviceId
- Fix Windows crash when calling startScan again after some time
- Fix Windows warning
Unable to establish connection on channelwhen hot restarting - Refactor native Windows code
- Improve Android permission documentation
-
0.16.017 Feb 2025Release notes
Open source →- BREAKING CHANGE:
payloadis nowpayloadPrefix - BREAKING CHANGE:
maskis nowpayloadMask - Bump bluez to 0.8.3
- Do not normalize UUIDs on native side
- Reverse _permissionStatus return values in example app
- Improve readme
- Improve ManufacturerDataFilter
- BREAKING CHANGE:
-
0.15.027 Jan 2025Release notes
Open source →getSystemDevices(withServices:)now sets several generic services by default as filtergetConnectionStateon Android will now returnBleConnectionState.disconnectedif device is connected to the system but not to the app- Improve callback error handling
-
0.14.009 Dec 2024Release notes
Open source →- BREAKING CHANGE:
bleDevice.namenow filters out non-printable characters - Add
bleDevice.rawName - Add
disableBluetoothAPI - Fix Apple CBCentralManager lazy initialization on
startScan - Fix Android error
scan too frequentlyand auto retry scan once sufficient time has passed - Fix duplicate
onValueChangedevents on Android 11 or earlier - Fix Windows
withServicesfilter - Fix Windows Bluetooth availability state in release builds
- Throw error on Apple if Bluetooth permission is denied on
startScan - Do not throw
Characteristic already notifyingerror. Subscribing to characteristic notifications multiple times is now handled safely - Bump flutter_web_bluetooth to 1.0.0
- BREAKING CHANGE:
-
0.13.003 Oct 2024Release notes
Open source →- BREAKING CHANGE:
scanFilterfilters are now in OR relation - BREAKING CHANGE:
manufacturerDataHeadis removed fromBleDevice - BREAKING CHANGE:
WebConfigis nowWebOptions - BREAKING CHANGE:
ManufacturerDataFilter.datais nowManufacturerDataFilter.payload - BREAKING CHANGE:
connect()does not return a boolean anymore. It will throw error on connection failure - BREAKING CHANGE:
pair()does not return a boolean anymore. It will throw error on connection failure - BREAKING CHANGE:
onConnectionChangereturns error as well - BREAKING CHANGE: rename in-app pairing capabilities
- Deprecation:
manufacturerDatais deprecated in BleDevice and will be removed in the future - Improve
scanFilterhandling - Use
ManufacturerDataobject instead ofUint8Listfor manufacturerData - Add
manufacturerDataListasList<ManufacturerData>inBleDevice - Auto convert all services passed to
getSystemDevices() - Return false for receivesAdvertisements on Linux/Web
- Add 1s delay in discoverServices on Linux
- Add
connectionStreamAPI to get connection updates as stream
- BREAKING CHANGE:
-
0.12.014 Aug 2024Release notes
Open source →- BREAKING CHANGE:
unPairis nowunpair - BREAKING CHANGE:
onPairingStateChangedoes not return error anymore - Add
pair(),isPairedandonPairingStateChangesupport for Apple and web connect()andpair()now return a bool result- Add
PlatformConfigproperty inStartScan - Add
WebConfigproperty inPlatformConfig - Fix notifications for characteristics without cccd on Android
- Promote Linux to stable
- BREAKING CHANGE:
-
0.11.119 Jul 2024Release notes
Open source →- Trim spaces in UUIDs
- Receive advertisement events on web
- Improve cleanup after disconnection on web
-
0.11.015 Jul 2024Release notes
Open source →- Unify UUID format across all platforms, 128-bit lowercase
- Add BleUuidParser utility methods for UUID parsing
-
0.10.021 Jun 2024Release notes
Open source →- BREAKING CHANGE:
ScanResultis nowBleDevice - BREAKING CHANGE:
getConnectedDevicesis nowgetSystemDevices - BREAKING CHANGE:
isPairedis now nullable - BREAKING CHANGE:
onValueChangedis nowonValueChange - BREAKING CHANGE:
onConnectionChangedis nowonConnectionChange - Add
connectionStateproperty to BleDevice - Add
isSystemDeviceproperty to BleDevice - Add
.perDevicequeue - Support "ProvidePin" pairing on Windows 10/11
- Get RRSI updates on Apple platforms
- Improve enum parsing performance
- Improve code level documentation
- BREAKING CHANGE:
-
0.9.1117 May 2024 -
0.9.1010 May 2024Release notes
Open source →- Fix Windows scan filter
- Remove scan result caching on Windows
- Improve service discovery on Linux
- Use asynchronous callbacks for SetNotifiable
- Remove dependency on
convert - Remove dependency on
collection - Update Android example app Gradle
-
0.9.909 May 2024Release notes
Open source →- Improve service discovery on Apple
- Improve reconnection on Apple
- Persist long scan result name on Windows
- Fix Android serviceUuids in scanResults
- Example app improvements
-
0.9.801 May 2024 -
0.9.710 Apr 2024Release notes
Open source →- Fix characteristic keying on linux allowing receiving data from multiple BLE devices at the same time
-
0.9.628 Mar 2024Release notes
Open source →- Fix a Windows issue where characteristics of certain services would not be discovered
- Improve readme
-
0.9.519 Mar 2024Release notes
Open source →- Windows support has graduated from beta to stable
- Support filtering by manufacturer data
- Unify web's optionalServices API with filtering API
- Implement requestMtu in Linux
- Fix wrong manufacturer data in Windows release builds
- Improve logging
-
0.9.413 Mar 2024 -
0.9.305 Mar 2024Release notes
Open source →- Add scan filter (withServices:) in
startScan() - Add service UUIDs from advertisements in
BleScanResult - Fix Windows release build compilation
- Add scan filter (withServices:) in
-
0.9.216 Feb 2024Release notes
Open source →- Add command queue
- Improve error handling on Android, iOS, macOS, Windows, Linux and web
-
0.9.112 Feb 2024 -
0.9.012 Feb 2024Release notes
Open source →- Improve windows device name discovery
- Improve linux implementation
- Improve titles in example app
-
0.8.426 Jan 2024Release notes
Open source →- Add
WebRequestOptionsBuilder.defaultServicesfor convenience when settingoptionalServiceswhen scanning on web - Add "try online" URL in readme
- Improve readme
- Improve example app
- Add
-
0.8.325 Jan 2024 -
0.8.224 Jan 2024 -
0.8.124 Jan 2024 -
0.8.024 Jan 2024