# Platform Decision: iOS 15

Date: 2026-03-22

## Decision

Minimum deployment target for the app becomes `iOS 15`.

This is the last iOS version supported by `iPhone 6s`, which remains a valid target device for this product:

- BLE communication is fully capable on this hardware.
- Live data acquisition, diagnostics, and logging are within its capabilities.
- Local history and long-term battery tracking are also realistic for the product goals.

## Product Goals

The application is intended to support:

- live data collection for device diagnostics
- real battery capacity measurement using USB meters
- long-term degradation tracking through historical data
- efficiency analysis for charging chains
- charger efficiency analysis

## Why We Are Leaving iOS 13

`iOS 13` is too old for the current development direction:

- first-generation SwiftUI requires more workarounds and compatibility code
- maintenance and testing cost is higher
- newer Xcode / App Store tooling trends are centered around more recent deployment targets

Moving to `iOS 15` reduces risk without dropping `iPhone 6s`.

## Why We Are Not Moving to iOS 16 Yet

`iOS 16` would unlock APIs such as `NavigationStack` and `Swift Charts`, but it would also exclude `iPhone 6s`.

At this stage, preserving `iPhone 6s` support is considered more valuable than gaining those APIs.

## Charts Decision

Current conclusion:

- keep the in-house chart solution for live charts
- do not adopt `Swift Charts` for the live measurement view
- reconsider `Swift Charts` later only for historical reports and analysis screens

Reasoning:

- `Swift Charts` looks strong for reports and final analysis
- it does not appear ideal for high-frequency live updates
- zoom and pan would still require custom work
- the current in-house renderer gives better control for instrument-style live views

## Device Coverage Notes

Choosing `iOS 15` preserves `iPhone 6s` support.

There are also older iPads that remain on `iPadOS 15`. Apple security release notes for January 26, 2026 still list devices such as:

- `iPad Air 2`
- `iPad mini 4`

So this platform decision likely preserves some older iPad coverage as well.

## Revisit Trigger

We should revisit the minimum deployment target when one of the following becomes important:

- a strong need for `Swift Charts`
- a move toward `SwiftData` / more modern SwiftUI app architecture
- loss of business value in keeping `iPhone 6s` support
- support or distribution constraints imposed by newer Xcode / App Store requirements

## References

- Apple Xcode system requirements: https://developer.apple.com/xcode/system-requirements/
- Apple upcoming App Store requirements: https://developer.apple.com/news/upcoming-requirements/
- Apple App Store platform usage: https://developer.apple.com/support/app-store/
- Apple security releases: https://support.apple.com/en-lamr/100100
