Known Issues
Bugs and limitations known during development that are not fixed yet, or are accepted by design. Each entry says what breaks, who is affected, and how to work around it.
- Shipped fixes belong in
CHANGELOG.md(generated from GitHub Releases). When an issue is fixed, move it to Resolved with the version. - Unverified work (device, Figma, store) belongs in
docs/IMPLEMENTATION_STATUS.md, not here. - Code-level shortcuts are marked with
ponytail:comments. Add an entry here only when the shortcut is visible to users.
Privacy: Never paste real notification text, amounts, account numbers or
screenshots of real data into an entry. Describe the shape (e.g. "GCash
cash-in with a reference number") or use [TEST] samples.
Format
IDs are KI-NNN, assigned in order and never reused.
| Field | Values |
|---|---|
| Status | Open · Investigating · Workaround · Accepted (by design, will not fix) · Fixed in vX.Y.Z |
| Severity | Critical (data loss, privacy breach, crash on launch) · High (core flow broken, no workaround) · Medium (broken with workaround) · Low (cosmetic, edge case) |
| Area | capture · parser · ledger · sync · ui · security · build · platform |
### KI-NNN: One-line summary of the user-visible problem
- **Status:** Open
- **Severity:** Medium
- **Area:** parser
- **Affects:** v0.3.0+, Android 13+ (versions, devices, OS levels)
- **Found:** YYYY-MM-DD
- **Tracking:** #123 (issue or PR link, or "none")
**Symptoms:** What the user sees, and how to reproduce it.
**Cause:** Root cause, if known. Link the code (`path/File.kt:42`).
**Workaround:** What users or developers can do meanwhile, or "None".
Open
KI-005: Transactions docked search shows the collapsed bar edge on medium+ widths
- Status: Open
- Severity: Low
- Area: ui
- Affects: Windows at least
WIDTH_DP_MEDIUM_LOWER_BOUNDwide (tablets, foldables, landscape) - Found: 2026-10-04
- Tracking: #30 (Allowed apps fix only)
Symptoms: Open search on Transactions in a medium or wider window. The edge of the collapsed search bar can show behind the expanded popup.
Cause: ExpandedDockedSearchBar does not size itself to the collapsed bar.
Allowed apps was fixed in cbe0f30 (#30) by measuring the bar with
onSizeChanged and passing that width to the popup. The Transactions call site
(shared/src/commonMain/kotlin/ph/notifly/ui/Screens.kt, in
TransactionsScreen) still passes no width.
Workaround: None.
Limitations
KI-001: iOS cannot capture notifications
- Status: Accepted
- Severity: High
- Area: platform
- Affects: iOS (all versions)
- Found: 2026-09-20
- Tracking: none
Symptoms: iOS targets compile, but IosTransactionSource always reports
capture as unavailable.
Cause: iOS has no API for reading other apps' notifications. A Notification Service Extension only sees this app's own pushes.
Workaround: None. The iOS capture story (bank aggregator, file import, or manual only) is undecided.
KI-002: Biometric unlock needs Android 11+
- Status: Accepted
- Severity: Low
- Area: security
- Affects: Android 8.0–10 (API 26–29)
- Found: 2026-09-26
- Tracking: none
Symptoms: On API 26–29 the app lock offers PIN only; no biometric prompt.
Cause: Framework BiometricPrompt needs API 30 for BIOMETRIC_STRONG
(app/src/main/kotlin/ph/notifly/android/MainActivity.kt).
Workaround: Use the PIN. Switch to androidx.biometric if older devices matter.
KI-003: Bill reminders do not fire at a fixed time of day
- Status: Accepted
- Severity: Low
- Area: platform
- Affects: All Android versions
- Found: 2026-10-04
- Tracking: none
Symptoms: Bill reminders arrive at varying times of day.
Cause: BillReminderService runs as a 12-hour periodic JobScheduler job,
which cannot target a clock time
(app/src/main/kotlin/ph/notifly/android/NotiflyApplication.kt).
Workaround: None. Switch to inexact AlarmManager if users want a fixed time.
KI-004: Crash reporting misses very early startup crashes
- Status: Accepted
- Severity: Low
- Area: platform
- Affects: Builds with crash reporting turned on
- Found: 2026-09-22
- Tracking: none
Symptoms: A crash before the crash-reporting preference loads is not sent to Sentry. A report queued before the user turns reporting off may still be sent after they turn it back on.
Cause: Sentry only initializes after the opt-in preference is read from
DataStore. See docs/PRIVACY.md.
Workaround: Reproduce early startup crashes with adb logcat.
Resolved
None yet.