Live on iPhone

Your Web Bluetooth app, in the Safari they already use.

The same navigator.bluetooth code you ship to Android Chrome — now running in real iPhone Safari. Not a separate browser: the URL bar, bookmarks and Add to Home Screen they already have, and a genuine Safari user-agent, so no “unsupported browser” wall. No native app. No rewrite.

Checking Bluetooth...
Detecting...
Add to Safari — free Try the live demo
In your code: import '@beacio/core/auto'

Already own a BLE device? Confirm it connects in the live scanner above — free, before you integrate anything.

Three steps to Bluetooth

Get started in under a minute. No configuration, no server-side changes.

1

Add one line

Import the auto polyfill once. That's the entire integration — a no-op where Web Bluetooth already ships natively.

import '@beacio/core/auto';

No build step? Use the no-build alternative (CDN <script> tag) instead.

2

User enables the extension

On first visit, users install the free companion app and enable beacio in Settings > Apps > Safari > Extensions.

3

Bluetooth just works

The standard Web Bluetooth API is now available. Your existing code works without changes.

You already have a Web Bluetooth app — or a BLE device you want to reach from iPhone

If your navigator.bluetooth site already works on Android and desktop Chrome, beacio makes it work in iPhone Safari too — no rewrite. Any standard GATT device is reachable through the standard API; these are a few of the protocols owners ask for most.

You ship a Web Bluetooth site

Your navigator.bluetooth app is dead on iPhone today. Point users at beacio and it works in their Safari — no rewrite, with an optional detect/CDN polyfill.

Maker serial over BLE

Espruino, Bangle.js, Puck.js, micro:bit and ESP32 over Nordic UART; Arduino and cheap modules over HM-10 / 0xFFE0. The serial bridge that powers most maker pages.

Fitness & heart rate

Heart rate (0x180D), power meters, speed/cadence and trainers — live web dashboards on iPhone, no extra app to install.

Environmental sensing

Temperature, humidity and air-quality sensors over Environmental Sensing (0x181A) — read them straight from a web page.

Battery & device info

Read battery level (0x180F) and device information from nearly any BLE peripheral — shipped profiles, verified on a physical iPhone.

Scales, health & find-me tags

Weight scales, blood pressure, pulse oximeters and “beep my tag” find-me alerts — the standard SIG profiles a web app can read directly.

Smart locks & access state

Web check-in flows and clear-text lock state in real Safari. (Vendor unlock commands stay in dedicated app code — we don't claim one-tap unlock.)

Bluetooth device makers

Already ship a native iOS app for your hardware? Offer a web app alongside it — same device, no second native build. See the iOS superpowers below.

Integrate in seconds

Use the standard Web Bluetooth API. We handle the Safari part.

// One line activates the iOS Safari polyfill.
import '@beacio/core/auto';

// Same code runs on Chrome and Edge — no vendor prefix, no fallback.
const device = await navigator.bluetooth.requestDevice({
  filters: [{ services: ['heart_rate'] }]
});

const server = await device.gatt.connect();

Standard API. Zero lock-in.

beacio polyfills the Web Bluetooth API for Safari. If the user has Chrome or Android with native support, the polyfill stays out of the way. Your code is always standard.

Works with every framework, or no framework at all.

HTML React Next.js Vue Svelte Angular

Full W3C conformance — beacio implements the full W3C Web Bluetooth specification, verified section by section against the spec. Read the conformance matrix.

Background Sync — Keep BLE devices active, fire iOS notifications for characteristic updates, and register beacon scans with Background Sync docs.

AI Agent Integration — AI agents can add beacio to any project in 30 seconds via MCP. Run npx beacio init or let your agent handle it.

The iOS-only capabilities Apple usually gates behind a native app

The polyfill is free and pure-W3C. For teams that need iOS-specific capabilities, the extension exposes them on the vendor-prefixed window.webbleIOS surface — never on navigator.bluetooth.

Background sync / keep-alive GATT

Keep a CGM stream alive when the phone locks.

await window.webbleIOS.backgroundSync.register({...});

BLE-driven iOS notifications

Low-battery alerts for insulin pumps and hearing aids. Threshold breaches for clinical flows.

Lock Screen / Dynamic Island

Workout session progress visible while the user does something else on the phone.

Beacon scanning

Warehouse forklift logs arrival automatically at a yard beacon — no app launch needed.

Peripheral mode

Two phones chat end-to-end encrypted with no internet. See the ble-e2e-chat flagship demo.

await window.webbleIOS.peripheral.advertise({...});

White-labeled companion app

Your brand in the App Store without building a native iOS app from scratch.

Tell us what you're building

You ship Bluetooth hardware with a native iOS app. We can help you offer a web app alongside it. 30-minute call, no pitch — we just want to hear what you're shipping.

We reply within one business day.

Add to Safari — free