Summary
Several Android Kotlin files are very large and mix UI, BLE, analytics orchestration, persistence, and state-management concerns. This makes targeted security/performance review harder and increases regression risk.
Evidence
Approximate file sizes from wc -l:
android/app/src/main/java/com/noop/ui/TodayScreen.kt: 6,826 lines.
android/app/src/main/java/com/noop/ble/WhoopBleClient.kt: 6,516 lines.
android/app/src/main/java/com/noop/ui/SleepScreen.kt: 4,234 lines.
android/app/src/main/java/com/noop/ui/SettingsScreen.kt: 3,110 lines.
android/app/src/main/java/com/noop/ui/HealthScreen.kt: 2,656 lines.
android/app/src/main/java/com/noop/ui/AppViewModel.kt: 2,444 lines.
Risk
Large files hide ownership boundaries and make it easier for security, privacy, lifecycle, and performance bugs to slip through review. They also make future audits expensive because unrelated behaviors are interleaved.
Suggested fix
- Split large UI files into feature-scoped composables and pure presenter/state helpers.
- Split BLE client responsibilities into connection lifecycle, protocol/offload, persistence, Health Connect writeback, and diagnostics modules.
- Move pure logic into testable package-level helpers with focused tests.
- Add complexity or file-size guidance to contribution docs if this repo wants to prevent the pattern from growing.
Audit context
Found during a static code-quality/performance audit. This is a maintainability risk, not a single behavioral bug.
Summary
Several Android Kotlin files are very large and mix UI, BLE, analytics orchestration, persistence, and state-management concerns. This makes targeted security/performance review harder and increases regression risk.
Evidence
Approximate file sizes from
wc -l:android/app/src/main/java/com/noop/ui/TodayScreen.kt: 6,826 lines.android/app/src/main/java/com/noop/ble/WhoopBleClient.kt: 6,516 lines.android/app/src/main/java/com/noop/ui/SleepScreen.kt: 4,234 lines.android/app/src/main/java/com/noop/ui/SettingsScreen.kt: 3,110 lines.android/app/src/main/java/com/noop/ui/HealthScreen.kt: 2,656 lines.android/app/src/main/java/com/noop/ui/AppViewModel.kt: 2,444 lines.Risk
Large files hide ownership boundaries and make it easier for security, privacy, lifecycle, and performance bugs to slip through review. They also make future audits expensive because unrelated behaviors are interleaved.
Suggested fix
Audit context
Found during a static code-quality/performance audit. This is a maintainability risk, not a single behavioral bug.