1---2name: mobile3description: Build mobile applications with proper lifecycle handling, offline support, and platform conventions.4---5
6## Lifecycle Awareness
7
8- App can be killed anytime in background—save state before backgrounding
9- Restore state on return—user expects to continue where they left off
10- Handle low memory warnings—release caches, non-essential resources
11- Background tasks have time limits—complete or request extension
12
13## Permissions
14
15- Ask in context, not at launch—explain why when requesting
16- Degrade gracefully if denied—app should still work with reduced features
17- Don't ask for unnecessary permissions—users notice and distrust
18- Re-request after demonstrating value—not immediately after denial
19
20## Offline First
21
22- Assume network is unreliable—design for offline, sync when possible
23- Cache aggressively—previous content better than loading spinner
24- Queue actions for retry—don't fail on network error
25- Conflict resolution strategy—last write wins or manual merge
26- Show sync status—user should know if data is current
27
28## Performance
29
30- Target 60fps—dropped frames feel janky
31- Main thread for UI only—heavy work on background threads
32- Memory matters more than desktop—constrained devices, aggressive OS killing
33- Battery awareness—reduce location polling, network requests when possible
34- Startup time under 2 seconds—first impression matters
35
36## Navigation Patterns
37
38- Follow platform conventions—iOS back gesture, Android back button
39- Navigation stack manageable—don't go 10 levels deep
40- Deep link to any screen—shareable, notification taps work
41- Preserve scroll position on return—don't jump to top
42
43## Notifications
44
45- Push for time-sensitive external events—new message, delivery update
46- Local for reminders, timers—user-initiated
47- Don't spam—users will disable; quality over quantity
48- Actionable when possible—reply, mark done from notification
49- Group related notifications—less intrusive
50
51## Deep Linking
52
53- Universal Links (iOS) / App Links (Android) for owned domains
54- Handle gracefully when app not installed—fallback to web
55- Parse parameters safely—malicious links exist
56- Test all entry points—not just main launch
57
58## Storage
59
60- Secure storage for tokens, credentials—Keychain, Keystore
61- User data survives reinstall where appropriate—cloud backup
62- Cache is cache—can be cleared; don't store critical data
63- Large files: consider on-demand download—not bundled in app
64
65## Input Handling
66
67- Keyboard avoidance—content shifts to stay visible
68- Dismiss keyboard appropriately—tap outside, scroll, submit
69- Input accessories for relevant actions—next field, done, toolbar
70- Paste, autofill support—reduce typing on small keyboards
71
72## Touch and Gestures
73
74- 44pt minimum touch target—consistent with platform guidelines
75- System gestures reserved—don't override swipe from edge
76- Gesture discoverability—hint or teach, don't assume knowledge
77- Haptic feedback for significant actions—confirmation, errors
78
79## Accessibility
80
81- VoiceOver (iOS) / TalkBack (Android) testing—navigate entire app
82- Dynamic type support—text scales with user preference
83- Sufficient contrast—check in accessibility inspector
84- Labels on all interactive elements—not just visible text
85
86## Testing
87
88- Real devices essential—simulators miss performance, sensors, edge cases
89- Multiple OS versions—support at least current minus 2
90- Different screen sizes—small phones to tablets
91- Network conditions—slow, intermittent, offline
92
93## App Store Survival
94
95- Read rejection reasons before submitting—common pitfalls documented
96- Privacy policy required—explain data collection
97- Login test account for reviewers—if auth required
98- No placeholder content—everything functional in review build
99- Update regularly—abandoned apps get deprioritized