Skip to content
iOS WebBluetooth Polyfill
Branch: master
Clone or download
Pull request Compare This branch is 126 commits ahead of pauljt:master.
Latest commit 1e0a356 Apr 13, 2019


Initial partial implementation of the Web Bluetooth spec for iOS, to get some basics working.

This builds on Paul Thierault's original implementation.

The app is fundamentally a WKWebView with a polyfill providing the javascript APIs calling through to the CoreBluetooth iOS API via a thin transaction management layer.

Supported APIs v1.0


  • .requestDevice(options)
    • options.acceptAllDevices = true to ask for any device
    • options.filters is a list of filters (mutually exclusive with acceptAllDevices) with properties
      • name: devices with the given name will be included
      • namePrefix: devices with names with this prefix will be included
      • services: list of service aliases or uuids.


  • .id
  • .name
  • .gatt
  • .gattserverdisconnected: EventHandler


  • .connected
  • .connect()
  • .disconnect()
  • .getPrimaryService(uuid)


  • .uuid
  • .device
  • .getCharacteristic(uuid)


  • .service
  • .uuid
  • .value
  • .readValue()
  • .writeValue(value)
  • .oncharacteristicvaluechanged: EventHandler
  • .startNotifications()
  • .stopNotifications()
  • .addEventListener()
  • .removeEventListener()

Everything else is TBD!

You can’t perform that action at this time.