Loading and progress indicators follow platform conventions
Why it matters
When async operations — API calls, uploads, data fetches — complete with no visual feedback, users perceive the app as frozen and repeat taps or abandon the action entirely. ISO 25010:2011 performance-efficiency attributes explicitly cover responsiveness perception, and loading indicators are the primary signal that work is in progress. Missing indicators also mask real failures: users cannot distinguish a slow network from a crashed operation, so they have no signal to wait, retry, or report a bug. Custom animations that diverge from platform conventions (native ActivityIndicator on iOS, material progress patterns on Android) erode platform coherence and increase cognitive load without adding value.
Severity rationale
Low because the failure is perceptual rather than data-loss or security-impacting — users experience confusion and may repeat actions, but no state is corrupted.
Remediation
Use React Native's native ActivityIndicator for indeterminate progress and ProgressBar for determinate progress. Gate rendering on the loading boolean from your async state; do not conditionally mount an indicator that is never visible due to broken logic.
import { ActivityIndicator, View } from 'react-native';
export function DataScreen() {
const { data, isLoading, error } = useFetch('/api/items');
if (isLoading) {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<ActivityIndicator size="large" />
</View>
);
}
return <ItemList data={data} />;
}
For uploads or multi-step operations, prefer ProgressBar with a real progress value derived from bytes transferred or steps completed — avoid spinning indefinitely when determinate progress is available.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Mobile UX Patterns Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · performance-efficiency.time-behaviour — Performance Efficiency — Time Behaviour
Taxons
History
- 2026-04-18·v1.0.0·Initial import from mobile-ux-patterns·automated