BetterBlue
January 28, 2026 ยท View on GitHub
A modern iOS app for controlling your Hyundai or Kia vehicle using BlueLink and Kia Connect services. Built with SwiftUI and powered by BetterBlueKit.
Features
๐ Vehicle Control
- Lock/Unlock your vehicle remotely
- Climate Control with custom temperature, defrost, and seat heating
- Charging Control for electric and plug-in hybrid vehicles
- Real-time Status monitoring
๐ Multi-Powertrain Support
- Electric Vehicles (BEV) - battery level, range, charging status
- Gas Vehicles - fuel level and range
- Plug-in Hybrids (PHEV) - both electric and gas systems
๐ฑ iOS Features
- Home Screen Widgets - quick vehicle status on your home screen
- Lock Screen Widgets - see battery and range at a glance
- Control Center Widgets - lock, unlock, and control climate from Control Center (iOS 18+)
- Live Activities (Beta) - real-time charging progress on your Lock Screen and Dynamic Island
- Apple Watch App - control your vehicle from your wrist
- Watch Complications - battery percentage on your watch face
- Siri Shortcuts - automate vehicle actions with voice commands
- Dark Mode - full support for light and dark themes
- Multiple Accounts - manage vehicles from different accounts
- MFA Support - seamless multi-factor authentication for Kia accounts
๐ Developer Features
- HTTP Logging - detailed request/response debugging
- SwiftData - modern data persistence
- SwiftUI - native iOS user interface
- Async/Await - modern Swift concurrency
- Fake Vehicle Mode - test the app without a real vehicle
Project Structure
BetterBlue/
โโโ BetterBlue/ # Main iOS app
โ โโโ Views/ # SwiftUI views
โ โโโ Models/ # SwiftData models
โ โโโ Utility/ # Helper classes
โ โโโ BetterBlueApp.swift # App entry point
โโโ BetterBlueWatch Watch App/ # Apple Watch app
โโโ Widget/ # iOS widgets, Control Center, Live Activities
โโโ WatchWidget/ # Watch complications
โโโ LiveActivityBackend/ # Backend for Live Activity push notifications
โโโ BetterBlueKit/ # Swift package for API communication
โโโ README.md # This file
Architecture
- BetterBlueKit: Swift package handling all API communication
- SwiftData: Modern Core Data replacement for persistence
- SwiftUI: Declarative UI framework
- Combine/Async: Reactive programming and concurrency
- CloudKit: iCloud sync for settings and accounts
Development
Linting
The project uses SwiftLint for code style enforcement:
swiftlint lint
Debugging
- HTTP requests are logged in the app under Settings > HTTP Logs
- Vehicle status can be monitored in real-time
- Fake vehicles support custom scenarios for testing
Live Activities (Beta)
Live Activities display real-time charging progress on your Lock Screen and Dynamic Island. This feature is off by default and can be enabled in Settings > Widget Settings.
How it works
To keep the Live Activity updated, BetterBlue uses a lightweight backend service that sends silent push notifications to refresh the charging status periodically.
Privacy
- No vehicle information is sent to the backend
- No account credentials leave your device
- Only your device's push token is stored temporarily
- Tokens are automatically deleted after 8 hours
The backend is fully open source - see LiveActivityBackend/ for the source code.
Privacy & Security
- Credentials: Stored securely in iCloud with SwiftData
- Network: All API calls use HTTPS encryption
- Live Activities: Only push tokens are sent to the backend (no vehicle data)
Important Notes
- Subscription Required: You need an active BlueLink/Kia Connect subscription
- Battery Impact: Frequent remote commands may drain your vehicle's 12V battery
- Rate Limits: Respect API rate limits to avoid account suspension
- Unofficial: This app is not affiliated with Hyundai or Kia
- Terms of Service: Ensure you comply with your vehicle service terms
License
This project is licensed under the MIT License - see the LICENSE file for details.