FOR IT

For IT administrators: how Smart Pointer works (one-pager)

A presentation remote that links your phone and PC directly: no Wi-Fi, server or account between them, and the extension asks only for storage and runs only on Google Slides™ pages.

Version: 2026-09-25 (based on the specification in development; the tested app and extension versions will be added at launch) · Contact: our contact form

1. Architecture

Data flow

iPhone appPeripheral. Computes the pointer from motion sensors
Bluetooth Low Energy
one way: iPhone → PC (notifications)
Chrome extension on the PCCentral. The connection window receives
Inside the page
draws the dot / next, previous
Google Slides tabContent script runs only on docs.google.com/presentation/*
  • No server of ours
  • No account
  • App and extension code opens no network connections
  • The user picks the device in Chrome's chooser each time
Architecture and data flow. The only link is Bluetooth between the iPhone and the PC. What it carries: section 2. Permissions: section 4.
  • We run no server, and there is no account.
  • The iPhone is the peripheral and Chrome on the PC is the central. Chrome's Web Bluetooth API makes the connection, and the user picks the device in Chrome's chooser each time.

2. Data on the Bluetooth link

iPhone → PC (notifications), at most 20 bytes per message:

TypeContentsHow often
POINTERx and y relative to the screen (0–65535), shown/hidden flag, dot size, iPhone send time (ms, wraps every 65,536 ms), sequence numberWhile the pad is pressed, up to 60 per second
COMMANDNext / previous (first, last, black screen, white screen and go-to-slide are reserved for later and unused in v1.0)On each press
HEARTBEATBattery %, thermal state (4 levels), app in foreground, pad pressedEvery second

Read once by the PC when it connects (INFO, iPhone → PC): JSON of at most 200 bytes, for example {"proto":1,"minor":1,"app":"1.0.0","platform":"ios","code":"SP-1A2B","caps":["rel","cmd.nav"]}

  • Never on the link: slide content, screen images, audio, camera images, contacts, location, Apple ID, the user's name.
  • No application data goes from the PC to the iPhone. The PC only subscribes to notifications and requests the INFO read.
  • While waiting for a connection, the iPhone advertises the service UUID and a display code (SP- plus 4 random hex digits, generated on first launch). PCs can find it only while the app is in the foreground: in the background, iOS leaves the display code out of the advertisement and moves the service UUID to an "overflow" area that PCs do not see.
  • Chrome's chooser may show the iPhone's own device name (set by the user). iOS exposes that name; the app does not send it.

3. Network traffic

  • The app's and the extension's code open no network connections. They contain no fetch, XMLHttpRequest, WebSocket or URLSession calls, and no analytics, crash-reporting or other third-party SDKs.
  • Exceptions, all started by the user: links to help, policies, the feedback form and the "I used it in a talk" form open in the browser when the user clicks or taps them. The rating request is Apple's standard feature (the StoreKit review request). The extension does not set an uninstall page (setUninstallURL).
  • Traffic by the OS and browser themselves continues as usual: update checks by the Chrome Web Store and the App Store, and Google Slides' own traffic. Google Slides needs internet access unless offline access is set up.

4. Permissions

Chrome extension (Manifest V3)

Asks for

  • storage
  • Site access: docs.google.com/presentation/* only

Does not ask for

  • host_permissions
  • tabs
  • scripting
  • debugger
  • webRequest
  • <all_urls>
  • any other site

The extension asks only for storage and runs only on Google Slides pages.

iPhone app

Asks for

  • Bluetooth
  • Motion sensors (no permission needed on iOS)
  • bluetooth-peripheral

Does not ask for

  • Camera
  • Microphone
  • Location
  • Contacts
  • Photos
  • Local network
  • Notifications

Bluetooth: the user chooses, per connection

Web Bluetooth connects only after the user picks the device in Chrome's chooser. No operating-system pairing. The iPhone sends to the first PC that connects only, and warns about a second one.

ComponentAsks forDoes not ask for
iPhone appBluetooth (NSBluetoothAlwaysUsageDescription). Motion sensors (no permission needed on iOS). Background mode bluetooth-peripheral (keeps the link during a short app switch; no pointer data is sent in the background)Camera, microphone, location, contacts, photos, local network, notifications
Chrome extension (Manifest V3)permissions: storage only. Content script runs only on https://docs.google.com/presentation/*host_permissions, tabs, scripting, debugger, webRequest, <all_urls>, access to any other site
  • Install dialog: because the content script runs on Google Slides, Chrome shows a notice such as "Read and change your data on docs.google.com". On those pages the extension only detects the slideshow, reads the slide number, draws the dot and dispatches arrow-key events. It does not read slide text or images.
  • App Store privacy label: "Data Not Collected". The privacy manifest declares only UserDefaults (reason CA92.1). Export compliance: ITSAppUsesNonExemptEncryption = NO.
  • Store builds: self-test and motion-recording tools exist only in internal builds, never in the App Store or Chrome Web Store versions. "Advanced settings" is an ordinary, visible settings screen.

5. Data stored on the devices

WhereWhatRemoved when
iPhone (UserDefaults)Settings, display code, count of successful connectionsThe app is deleted
Chrome on the PC (chrome.storage.local)Settings; connection log (times, message counts, delay statistics, battery and thermal state, command history; no slide content)Log after 24 hours; everything when the extension is removed

6. The radio link: facts and limits

  • The link is not encrypted, and no OS pairing (bonding) takes place. This is deliberate, so that no pairing prompt appears.
  • Someone nearby can receive what section 2 lists. It contains no slide content.
  • v1.0 has no authentication of the other device. If a spoofing device advertised the same name and the user picked it, it could step slides or show a dot. The mitigation is that users pick the code shown in their own app. The iPhone sends only to the first PC that connects and warns if a second PC tries.
  • The message format reserves space so that message authentication, with a key shared by QR code, can be added later without breaking existing installs. No date has been set.

7. Organization policies (Chrome)

PolicyEffectWhat to do
DefaultWebBluetoothGuardSetting = 2 (block)Web Bluetooth is blocked everywhere, so Smart Pointer cannot connectNeeds 3 (ask) or unset. Chrome has no policy that allows Web Bluetooth for specific sites or extensions only (checked in the Chromium policy definitions on 2026-09-25)
ExtensionInstallBlocklist = *The extension cannot be installedAdd the extension ID to ExtensionInstallAllowlist (the ID will be listed here at launch)
ExtensionInstallForcelistUse it to deploy the extensionValue: extension-ID;https://clients2.google.com/service/update2/crx (the ID will be listed here at launch)
ExtensionSettingsCan do the same as above. The extension will not work if runtime_blocked_hosts includes docs.google.com or blocked_permissions includes storageExclude as needed
ExtensionAllowedTypesIf types are restrictedInclude extension
  • Microsoft Edge: installs from the Chrome Web Store but is untested. Edge likely has policies with the same names; unverified.
  • OS and MDM: it will not work if Bluetooth is disabled on the PC, or if MDM blocks the App Store or Bluetooth on company iPhones.
  • v1.0 has no managed pre-configuration (chrome.storage.managed).

8. Known limits

  • Google Slides in Chrome on a PC only (no PowerPoint, Keynote, Safari or Firefox).
  • PC: Chrome on macOS and on Windows 10 (1703 or later) and 11. Windows is "beta" until 3 Windows laptops have been reported working. Chrome on Linux is not supported, because Web Bluetooth is experimental there. The PC needs Bluetooth LE (a desktop PC may need a USB adapter).
  • iPhone: iOS 17 or later. The app must be in the foreground to be found.
  • After a disconnect, the extension retries automatically for about 15 seconds. After a longer break the user must pick the iPhone again in the chooser (because of iOS address changes and Chrome's behaviour).
  • Latency depends on the connection interval chosen by the PC's operating system.
  • It relies on undocumented Google Slides behaviour. If a Google change stops slide control, the pointer is designed to keep working, and fixes ship as store updates.
  • One iPhone and one PC per connection.
  • The connection window must stay open during the talk (minimized is fine).

9. How to check this yourself

  • Extension: chrome://extensions > "Details" shows its permissions and site access. The code is plain JavaScript with no build step, readable in the installed folder. Open DevTools > Network on the connection window to see that no requests are made.
  • iPhone app: the App Store privacy label, and iPhone Settings > Privacy & Security > App Privacy Report, which lists the network domains each app contacted after you turn it on.

Related: privacy policy · terms · confirmed setups · teams