App handles no-network state without crashing or blank screens
Why it matters
Apple explicitly tests offline behavior during review, and ISO 25010:2011 fault-tolerance requires graceful degradation under abnormal network conditions. An app that shows a blank white screen or a frozen loading spinner when launched without connectivity fails the most basic resilience test. TypeError: Network request failed propagating to a blank screen is indistinguishable to the reviewer from a crash. Apps that rely entirely on live API calls with no offline fallback and no timeout fail not just on review but in real-world use — poor connectivity is not an edge case.
Severity rationale
High because an app that shows a blank screen offline will fail Apple's explicit offline testing during review, causing rejection under guideline 2.1.
Remediation
Add a network state listener and set timeouts on all fetch calls.
// src/hooks/useNetworkStatus.ts
import NetInfo from '@react-native-community/netinfo';
import { useEffect, useState } from 'react';
export function useNetworkStatus() {
const [isConnected, setIsConnected] = useState(true);
useEffect(() => {
return NetInfo.addEventListener(state => {
setIsConnected(state.isConnected ?? true);
});
}, []);
return isConnected;
}
Wrap all fetch calls with an AbortController that times out after 10–15 seconds. Show a clear "No internet connection" banner when offline with a retry button. Cache frequently accessed data with AsyncStorage or MMKV so the app has something useful to show.
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
- 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