Experience teaches you where bugs hide. These are the most frequent mobile-specific bugs that testers encounter — learn to look for them proactively.
Crash Bugs
Out of Memory (OOM)
The app uses more memory than the OS allows and gets killed.
How to find it:
- Open the app, navigate through many screens without going back
- Load large images or long lists
- Switch between the app and other memory-heavy apps
- Leave the app running for extended periods
Bug report tip: Include the device model and RAM. A crash on a 3GB device that works on 8GB is an OOM issue.
Null Pointer / Undefined
The app tries to access data that doesn't exist yet.
Common triggers:
- Navigating to a detail screen before data loads
- Deep linking directly to a screen that expects prior data
- Returning from background after data was garbage collected
- Rotating the screen during an API call
Unhandled Exceptions
The app doesn't catch errors from APIs, permissions, or hardware.
Test by:
- Denying every permission and using the feature anyway
- Sending malformed deep links
- Interrupting operations mid-way (force close during save)
UI Bugs
Keyboard Overlap
The virtual keyboard covers the input field the user is typing in.
How to test:
- Tap every input field on every screen
- Check that the view scrolls to keep the active field visible
- Test with different keyboard sizes (default, autocomplete bar, third-party keyboards)
Layout Breaking on Small Screens
Designs built for iPhone 15 may break on iPhone SE.
What to look for:
- Text overlapping other elements
- Buttons pushed off-screen
- Horizontal scrolling where there shouldn't be any
- Truncated labels with no tooltip or expansion
Dark Mode Issues
| Bug | Example |
|---|---|
| Invisible text | Dark text on dark background |
| Hard-coded colors | White background ignores dark mode |
| Image backgrounds | Logo has white background that doesn't adapt |
| Status bar | Dark text on dark status bar |
| Third-party components | WebViews or SDK UIs that ignore dark mode |
Test by: Toggling dark mode on and off on every screen.
Orientation Bugs
- Content disappears after rotation
- Scroll position resets on rotation
- Modal dialogs get mispositioned in landscape
- Video player doesn't adapt to orientation change
Data Bugs
Data Not Persisting
- User fills a form, switches to another app, comes back — form is empty
- Settings reset after app update
- Completed onboarding shows again after reinstall
Sync Issues
- Data created offline duplicates when synced
- Conflicts when the same item is edited on two devices
- Stale data shown after sync completes (cache not invalidated)
Date and Timezone Bugs
- Events show at wrong time for users in different timezones
- "Today" filter shows wrong results near midnight
- Date of birth field off by one day (timezone conversion)
Network Bugs
Loading States Missing
The screen shows nothing while data loads. Users think the app is broken.
Every API-dependent screen should have:
- Loading skeleton or spinner
- Error state with retry button
- Empty state ("No items yet")
Timeout Handling
- App hangs indefinitely on slow networks
- No timeout — spinner spins forever
- Timeout too aggressive — fails on 3G networks
Retry Logic
- Failed requests don't retry automatically
- Retry creates duplicate data (payment charged twice)
- No exponential backoff — hammers the server
Permission Bugs
| Scenario | Expected |
|---|---|
| Camera permission denied | Show explanation, link to settings |
| Location denied, then granted in settings | App picks up new permission without restart |
| Notification permission denied | App works without notifications, no crash |
| "Don't ask again" selected | Direct user to system settings |
| Permission revoked while app is open | Graceful degradation, not crash |
Installation and Update Bugs
Fresh Install
- Onboarding flow works correctly
- Default settings are sensible
- No leftover data from previous installs
App Update
- User data survives the update
- Database migrations run correctly
- New features are introduced gracefully
- No force-close after update
Uninstall
- All app data is removed
- Background services stop
- No orphaned notifications
Interruption Bugs
Test what happens when the app is interrupted:
| Interruption | What to Check |
|---|---|
| Incoming phone call | App pauses gracefully, resumes correctly |
| Push notification tapped | App navigates to correct screen |
| Low battery warning | No data loss |
| Alarm goes off | App state preserved |
| Screen lock/unlock | Session still valid |
| App switcher (recent apps) | Screenshot in app switcher is correct (no sensitive data) |
| Split screen / picture-in-picture | App adapts or gracefully declines |
Bug Hunting Checklist
Use this checklist when testing any mobile screen:
- Load the screen on slow network
- Load the screen offline
- Rotate the device
- Toggle dark mode
- Use the smallest supported device
- Background and foreground the app
- Deny relevant permissions
- Enter invalid data in all fields
- Tap all buttons rapidly
- Scroll to the bottom of all lists
- Test with system font size set to largest
- Test with accessibility features on (TalkBack/VoiceOver)