Mobile application / Battery companion app
iOS and Android companion app for LiFePO4 RV batteries with a Bluetooth BMSCode review, UX refinement, native app rebuild and ongoing maintenance (from 2024)
Rebuilding a Bluetooth companion app for RV lithium batteries
SuperVolt supplies LiFePO4 batteries for motorhomes and other RV systems. Its battery packs include a Bluetooth-enabled battery management system (BMS), and the product line was evolving with new hardware interfaces planned. The companion app is part of what owners get with the battery.
The existing app read state of charge, voltage and temperature from the BMS over Bluetooth LE, but it ran on a legacy, tightly coupled code base and its interface did not match how RV owners use it. SuperVolt needed a refreshed UI, new features such as a firmware-update flow, and an app foundation that could keep pace with new battery capabilities.

- Product
- iOS and Android companion app for LiFePO4 RV batteries with a Bluetooth BMS
- Buyer
- Device makers whose product ships with a Bluetooth companion app that has outgrown its original code base
- Engagement
- Code review, UX refinement, native app rebuild and ongoing maintenance (from 2024)
- Indeema scope
- Code review and estimate, R&D and user flows, UX/UI refinement, Native iOS and Android app, QA and maintenance
The product need
What had to become possible
The existing app read state of charge, voltage and temperature from the BMS over Bluetooth LE, but it ran on a legacy, tightly coupled code base and its interface did not match how RV owners use it. SuperVolt needed a refreshed UI, new features such as a firmware-update flow, and an app foundation that could keep pace with new battery capabilities.
Ownership, made clear
Where the work started and what Indeema owned
Starting system
Battery and BMS
LiFePO4 battery packs with a third-party BMS and connectivity module, sourced from an OEM. The battery, BMS and its firmware are not Indeema's work.
Legacy companion app
A mobile app that connected to the BMS over Bluetooth and showed core status, built on a tightly coupled code base.
Initial redesign
SuperVolt provided an initial app design that still needed UX refinement.
Indeema owned
Code review and estimate
Review the existing app to check whether new features could be built on its architecture, estimate effort and recommend an approach.
R&D and user flows
Turn the feature and UI scope into concrete user flows, including firmware update, based on target users and usage contexts.
UX/UI refinement
Refine the client's initial design around the primary user groups and where and how they use the app.
Native iOS and Android app
Implement a new app from scratch in Swift and Kotlin, with BLE communication to the battery's BMS.
QA and maintenance
Test the app and keep adding support for new battery capabilities as the third-party BMS firmware evolves.
Worked with
Bluetooth LE to the BMS
The app acts as BLE central and GATT client and exchanges data with the GATT server exposed by the battery's connectivity module.
OEM BMS firmware
The app depends on the behavior of third-party BMS firmware, which changes over time and is only partly documented.
Product constraints
What made the engineering difficult
- 01
Incomplete OEM documentation
Vendor documentation for the BMS firmware and hardware was incomplete, which left expected device behavior and interfaces uncertain. Indeema reverse-engineered the behavior, arranged calls with the OEM, validated the firmware in practice and reported discrepancies so the documentation matched real behavior.
- 02
New iOS versions, older batteries
The app had to support current iOS versions while continuing to work with batteries already in the field.
- 03
A code base that resisted change
The legacy app's tightly coupled structure made it hard to add the requested features safely.
Engineering judgement
Decisions that shaped the product
Rebuild rather than extend
After a focused code review, Indeema concluded that extending the legacy architecture would be impractical and more expensive than rebuilding, and implemented the app from scratch.
Isolate legacy battery logic
Logic for older batteries was encapsulated in isolated modules so it could be updated in a targeted way without reworking the rest of the app.
Separate UI, network and BLE layers
The app is structured into UI, network and BLE view-model layers, keeping Bluetooth communication separate from presentation.
Design from usage context
UI changes were driven by who uses the app and where, rather than by the original screen layout.
Delivered product capability
What the product can do
- 01
Battery status over Bluetooth
View voltage, current, temperature, total and remaining capacity, charge level and per-cell voltages.
- 02
Multiple batteries
Review details for more than one connected battery in a setup.
- 03
Rebuilt iOS and Android apps
New native apps in Swift and Kotlin with a refined, user-friendly interface.
- 04
Foundation for new device features
A structure that accepts new battery capabilities as the BMS firmware evolves, supported through ongoing feature updates.
Product change
What changed for the product team
SuperVolt's battery line gained a rebuilt companion app with a clearer interface and a code base that can take new features. Support for new BMS firmware capabilities continues to be added in later releases.
For a hardware company whose companion app depends on third-party firmware, the case shows how to decide between extending and rebuilding, how to work around incomplete OEM documentation, and how to keep older devices supported while the app moves forward.
- Delivered new iOS and Android companion apps built from scratch with a refined UI.
- Established an app structure that receives continuing feature updates as the battery firmware evolves.
Product evidence
A closer look at the product

Technology, in context
Swift · Kotlin · Bluetooth Low Energy · GATT
A comparable product problem?
SuperVolt battery companion app
Bring the product context, the system that already exists and the engineering decision you need to make.