Network errors, empty states, and edge cases show user-friendly messages
Why it matters
Reviewers deliberately test on degraded networks and with edge-case data. Empty catch blocks (CWE-390) that swallow errors produce blank white screens — a visible failure that signals low quality and triggers rejection under Apple's guideline 2.1. ISO 25010:2011 fault-tolerance requires systems to continue operating under abnormal conditions. Beyond rejection risk, raw error messages ({error.message}) leak implementation details and destroy user trust. A screen that shows nothing when the network is bad is indistinguishable from a bug.
Severity rationale
High because empty catch blocks and missing error states produce blank screens that reviewers directly observe, causing rejection under guideline 2.1.
Remediation
Implement all four UI states for every data-fetching screen.
// src/screens/FeedScreen.tsx
export default function FeedScreen() {
const { data, isLoading, error, refetch } = useFeed();
if (isLoading) return <ActivityIndicator />;
if (error) return (
<View style={styles.center}>
<Text>Couldn't load your feed.</Text>
<Button title="Try again" onPress={refetch} />
</View>
);
if (!data?.length) return <EmptyState message="Nothing here yet — check back soon." />;
return <FlatList data={data} renderItem={renderItem} />;
}
Never render {error.message} or {error.toString()} directly. Test every screen with airplane mode enabled on the simulator before submission.
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 App Store Review Blockers Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- cwe · CWE-390 — Detection of Error Condition Without Action
- iso-25010:2011 · fault-tolerance — Fault Tolerance (ISO 25010 Reliability)
Taxons
History
- 2026-04-18·v1.0.0·Initial import from app-store-review-blockers·automated