BLE
Implementation: experimental · Proposal: in-review (status checked 2026-10-31). GATT binding has unit coverage; real-device behavior across host backends is not established by these tests. All capabilities remain subject to change. Maturity and opt-in policy.
Runtime-mediated Bluetooth LE/GATT sessions. Napplets receive opaque session ids and byte arrays while the shell owns chooser UI, permissions, device handles, GATT lifecycle, notifications, disconnects, and policy.
ts
if (window.napplet?.ble) {
const { session } = await window.napplet.ble.open({ acceptAllDevices: true });
const services = await window.napplet.ble.services(session.id);
}This non-normative guide defers to the living NAP-BLE proposal. Feature-gate with if (window.napplet?.ble) before use; the runtime injects only available domains. Typed helpers ship from @napplet/nap/ble and @napplet/sdk.