Test On Budget Devices
Budget-device testing is not optional for Android-first apps targeting Kenya or similar markets. Emulator success does not prove real-world usability.
Minimum Matrix
| Device Class | Target |
|---|---|
| Physical low-end phone | 2-4GB RAM, older Android version still in target range |
| Current midrange phone | Common daily-driver performance baseline |
| Emulator | Current API for fast iteration and permission flag resets |
| Constrained emulator | Low RAM/storage profile if no physical low-end phone exists |
Smoke Script
Record this for every release candidate:
Device:
Android version:
RAM/storage notes:
Network state:
Battery saver:
Build installed:
Cold start result:
Long list scroll result:
Permission denial result:
Room write/read result:
Export result:
WorkManager job observation:
Crashes/ANRs:
What To Test
| Scenario | Check |
|---|---|
| Cold start | App opens quickly enough and does not block on database or parsing |
| Long list | Lazy list keeps scroll position and avoids obvious jank |
| Rotation | State survives configuration changes where expected |
| Low network | Local screens remain useful and errors are clear |
| Low storage | Writes and exports fail gracefully |
| Battery saver | WorkManager promises remain honest |
| Permission denial | Manual mode remains usable |
| SMS import | Parser handles realistic sender names, duplicate messages, and malformed messages |
Performance Signals
Watch for:
- slow cold start
- dropped frames while scrolling
- memory growth after repeated navigation
- Room queries on main thread
- WorkManager jobs stuck because constraints never match
- large exports blocking UI
- excessive battery use from repeated scans
Practical Low-End Rules
- Use stable keys in
LazyColumn. - Do not parse thousands of SMS messages on the main thread.
- Page or chunk long import/export operations.
- Keep Material 3 surfaces clean and low-overdraw.
- Prefer explicit user-triggered imports to invisible background scans.
- Test with real message volume, not three fake rows.
Tip: If you cannot get a budget phone immediately, ship only after documenting that blocker. A constrained emulator is a fallback, not equivalent evidence.