Companion App
The iOS companion app is available on the App Store. The Android version is available on Google Play but currently requires an invite, see the Android section below for details. If you run into issues on Android (especially with keeping the BLE connection alive in the background), GadgetBridge is a good alternative.
ZSWatch has an open-source companion app built with Flutter that works on both Android and iOS.
Overview
The companion app connects to ZSWatch over BLE and replaces GadgetBridge on Android while adding features that aren't available through standard iOS ANCS/AMS services.
Features
| Feature | Android | iOS |
|---|---|---|
| BLE connection & auto-reconnect | ✅ | ✅ |
| Notification forwarding | ✅ | — (uses ANCS) |
| Music control | ✅ | — (uses AMS) |
| Firmware update (DFU) | ✅ | ✅ |
| LVGL resource upload | ✅ | ✅ |
| Health data (steps, heart rate) | ✅ | ✅ |
| Battery & connection analytics | ✅ | ✅ |
| GPS location relay | ✅ | ✅ |
| Weather sync | ✅ | ✅ |
| HTTP proxy for watch | ✅ | ✅ |
| Developer tools (logs, sensors) | ✅ | ✅ |
| Background BLE connection | ✅ | ✅ |
Download
iOS
Download the ZSWatch companion app from the App Store.
After installing:
- Open the app and grant the requested permissions (Bluetooth, Location).
- On ZSWatch, go to Settings → Bluetooth and enable Pairable.
- Tap Scan in the app to find your watch.
- Tap the watch to connect and pair.
Android
The Android companion app is available on Google Play, but it currently requires an invite to install.
Everyone who purchased a ZSWatch DevKit using a Google account email address has already been invited. If you used a different email or haven't received access, reach out on Discord or email mail@zswatch.dev and we'll add you. Once we have enough active testers, Google will approve the app for public release on the Play Store.
There is also a Demo mode available in the app's settings that lets you explore the UI without a watch connected.
The Android companion app may have issues keeping the BLE connection alive in the background on some devices. If you experience frequent disconnects, consider using GadgetBridge instead.
After receiving access and installing from the Play Store:
- Open the app and grant the requested permissions (Bluetooth, Location, Notifications).
- On ZSWatch, go to Settings → Bluetooth and enable Pairable.
- Tap Scan in the app to find your watch.
- Tap the watch to connect and pair.
Building from Source
The app is a standard Flutter project. You need:
- Flutter SDK 3.10+ (stable channel)
- Android Studio for Android builds
- Xcode 15+ for iOS builds (macOS only)
# Clone with submodules (includes MCUmgr fork)
git clone --recurse-submodules https://github.com/ZSWatch/ZSWatch-App.git
# Or if already cloned without submodules:
# git submodule update --init
cd ZSWatch-App/zswatch_app
# Install dependencies
flutter pub get
# Generate code (database, state management)
dart run build_runner build --delete-conflicting-outputs
# Run in debug mode on connected device
flutter run
# Build release APK (Android)
flutter build apk --release
For more details, see the full README.
Source Code
- App repository: github.com/ZSWatch/ZSWatch-App
- MCUmgr fork (DFU plugin): github.com/ZSWatch/Flutter-nRF-Connect-Device-Manager