← Back to list

mobile-app-ux
by iButters
⭐ 1🍴 0📅 Dec 16, 2025
SKILL.md
name: mobile-app-ux description: Mobile app UX/UI best practices for smartphone interfaces. Use for designing touch-friendly interfaces, mobile navigation patterns, gesture handling, and optimizing user experience on small screens. Triggers on requests for mobile UX, app design, touch interfaces, mobile patterns, or smartphone UI best practices.
Mobile App UX Best Practices
Touch Target Guidelines
| Element | Minimum Size | Recommended | Spacing |
|---|---|---|---|
| Buttons | 44×44px | 48×48px | 8px between |
| Icons | 24×24px | 24×24px + 44px touch area | 12px between |
| List items | 44px height | 48-56px height | No gap needed |
| Form inputs | 44px height | 48px height | 16px between |
.touch-target {
min-height: 44px;
min-width: 44px;
padding: var(--space-3);
}
/* Expand touch area without visual change */
.icon-button {
position: relative;
}
.icon-button::after {
content: '';
position: absolute;
inset: -8px;
}
✅ Do's
Navigation
- Bottom navigation for 3-5 primary actions
- Keep most important actions within thumb reach
- Use clear, recognizable icons with labels
- Provide visual feedback on active state
- Support swipe gestures for natural navigation
Content
- Prioritize content over chrome (UI elements)
- Use progressive disclosure - show essentials first
- Lazy load content below the fold
- Provide pull-to-refresh for dynamic content
- Show skeleton screens, not spinners
Forms
- Use appropriate keyboard types (email, tel, number)
- Show inline validation, not after submit
- Provide autocomplete where possible
- Group related fields visually
- Save form progress automatically
Feedback
- Immediate visual response to all touches
- Haptic feedback for important actions
- Clear loading states with progress indication
- Confirmation for destructive actions
- Undo option instead of "Are you sure?"
❌ Don'ts
Navigation
- ❌ Hamburger menus for primary navigation
- ❌ Deep navigation hierarchies (>3 levels)
- ❌ Small, closely spaced tap targets
- ❌ Gestures without visual affordances
- ❌ Hiding essential actions in menus
Content
- ❌ Horizontal scrolling for content
- ❌ Tiny text (<16px for body copy)
- ❌ Low contrast text on images
- ❌ Auto-playing video with sound
- ❌ Interstitials blocking content
Forms
- ❌ Required fields without indication
- ❌ Generic error messages
- ❌ Disabling zoom on inputs
- ❌ Dropdowns for <5 options (use radio)
- ❌ Multi-step forms without progress indicator
Interaction
- ❌ Double-tap to activate
- ❌ Hover-dependent interactions
- ❌ Precise targeting requirements
- ❌ Long press without alternative
- ❌ Blocking the UI during operations
Thumb Zone Design
┌─────────────────────┐
│ Hard to reach │ ← Secondary actions, menu
│ │
├─────────────────────┤
│ Natural reach │ ← Content, scrollable area
│ │
├─────────────────────┤
│ Easy reach │ ← Primary actions, nav
└─────────────────────┘
/* Bottom-anchored primary actions */
.primary-actions {
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: var(--space-4);
padding-bottom: env(safe-area-inset-bottom, var(--space-4));
}
Component Patterns
Bottom Sheet
interface BottomSheetProps {
isOpen: boolean;
onClose: () => void;
children: ReactNode;
}
export const BottomSheet: FC<BottomSheetProps> = ({ isOpen, onClose, children }) => (
<>
{isOpen && <div className="overlay" onClick={onClose} />}
<div className={cn('bottom-sheet', isOpen && 'bottom-sheet--open')}>
<div className="bottom-sheet__handle" />
{children}
</div>
</>
);
Swipeable Card
export const SwipeableCard: FC<Props> = ({ onSwipeLeft, onSwipeRight, children }) => {
const handlers = useSwipeable({
onSwipedLeft: onSwipeLeft,
onSwipedRight: onSwipeRight,
trackMouse: false,
});
return <div {...handlers}>{children}</div>;
};
Performance Checklist
- First Contentful Paint < 1.8s
- Time to Interactive < 3.8s
- Images optimized and lazy-loaded
- Animations at 60fps
- No layout shifts during load
- Works offline (PWA)
Accessibility
- Use semantic HTML (
<button>,<nav>,<main>) - Support screen readers (aria-labels)
- Ensure 4.5:1 color contrast minimum
- Support text scaling up to 200%
- Never disable pinch-to-zoom
Score
Total Score
40/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon