mobile-design
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMobile Design System
移动设计系统
Philosophy: Touch-first. Battery-conscious. Platform-respectful. Offline-capable. Core Principle: Mobile is NOT a small desktop. THINK mobile constraints, ASK platform choice.
设计理念: 触摸优先、注重续航、尊重平台特性、支持离线使用。 核心原则: 移动设备并非小型桌面电脑。要考虑移动设备的限制,明确平台选择。
🔧 Runtime Scripts
🔧 运行时脚本
Execute these for validation (don't read, just run):
| Script | Purpose | Usage |
|---|---|---|
| Mobile UX & Touch Audit | |
执行以下脚本进行验证(无需阅读,直接运行):
| 脚本 | 用途 | 使用方式 |
|---|---|---|
| 移动UX与触摸交互审计 | |
🔴 MANDATORY: Read Reference Files Before Working!
🔴 强制要求:开始工作前务必阅读参考文件!
⛔ DO NOT start development until you read the relevant files:
⛔ 在阅读相关文件前,请勿开始开发:
Universal (Always Read)
通用文件(必须阅读)
| File | Content | Status |
|---|---|---|
| mobile-design-thinking.md | ⚠️ ANTI-MEMORIZATION: Forces thinking, prevents AI defaults | ⬜ CRITICAL FIRST |
| touch-psychology.md | Fitts' Law, gestures, haptics, thumb zone | ⬜ CRITICAL |
| mobile-performance.md | RN/Flutter performance, 60fps, memory | ⬜ CRITICAL |
| mobile-backend.md | Push notifications, offline sync, mobile API | ⬜ CRITICAL |
| mobile-testing.md | Testing pyramid, E2E, platform-specific | ⬜ CRITICAL |
| mobile-debugging.md | Native vs JS debugging, Flipper, Logcat | ⬜ CRITICAL |
| mobile-navigation.md | Tab/Stack/Drawer, deep linking | ⬜ Read |
| mobile-typography.md | System fonts, Dynamic Type, a11y | ⬜ Read |
| mobile-color-system.md | OLED, dark mode, battery-aware | ⬜ Read |
| decision-trees.md | Framework/state/storage selection | ⬜ Read |
🧠 mobile-design-thinking.md is PRIORITY! This file ensures AI thinks instead of using memorized patterns.
| 文件 | 内容 | 状态 |
|---|---|---|
| mobile-design-thinking.md | ⚠️ 反固化思维:引导针对性思考,避免AI默认模式 | ⬜ 首要关键 |
| touch-psychology.md | 菲茨定律、手势、触觉反馈、拇指操作区域 | ⬜ 关键 |
| mobile-performance.md | React Native/Flutter性能优化、60fps、内存管理 | ⬜ 关键 |
| mobile-backend.md | 推送通知、离线同步、移动API | ⬜ 关键 |
| mobile-testing.md | 测试金字塔、端到端测试、平台特定测试 | ⬜ 关键 |
| mobile-debugging.md | 原生与JS调试、Flipper、Logcat | ⬜ 关键 |
| mobile-navigation.md | 标签栏/栈式/抽屉式导航、深度链接 | ⬜ 推荐阅读 |
| mobile-typography.md | 系统字体、动态字体、无障碍设计 | ⬜ 推荐阅读 |
| mobile-color-system.md | OLED适配、深色模式、续航友好设计 | ⬜ 推荐阅读 |
| decision-trees.md | 框架/状态管理/存储方案选择 | ⬜ 推荐阅读 |
🧠 mobile-design-thinking.md 是优先项! 该文件确保AI进行针对性思考,而非依赖固化模式。
Platform-Specific (Read Based on Target)
平台特定文件(根据目标平台阅读)
| Platform | File | Content | When to Read |
|---|---|---|---|
| iOS | platform-ios.md | Human Interface Guidelines, SF Pro, SwiftUI patterns | Building for iPhone/iPad |
| Android | platform-android.md | Material Design 3, Roboto, Compose patterns | Building for Android |
| Cross-Platform | Both above | Platform divergence points | React Native / Flutter |
🔴 If building for iOS → Read platform-ios.md FIRST! 🔴 If building for Android → Read platform-android.md FIRST! 🔴 If cross-platform → Read BOTH and apply conditional platform logic!
| 平台 | 文件 | 内容 | 阅读时机 |
|---|---|---|---|
| iOS | platform-ios.md | 人机界面指南、SF Pro字体、SwiftUI模式 | 开发iPhone/iPad应用时 |
| Android | platform-android.md | Material Design 3、Roboto字体、Compose模式 | 开发Android应用时 |
| 跨平台 | 上述两个文件 | 平台差异点 | 开发React Native / Flutter应用时 |
🔴 如果开发iOS应用 → 先阅读platform-ios.md! 🔴 如果开发Android应用 → 先阅读platform-android.md! 🔴 如果开发跨平台应用 → 阅读两个文件并应用平台条件逻辑!
⚠️ CRITICAL: ASK BEFORE ASSUMING (MANDATORY)
⚠️ 关键要求:先询问再假设(强制)
STOP! If the user's request is open-ended, DO NOT default to your favorites.
停!如果用户的需求不明确,请勿默认使用你偏好的方案。
You MUST Ask If Not Specified:
若未明确说明,你必须询问以下内容:
| Aspect | Ask | Why |
|---|---|---|
| Platform | "iOS, Android, or both?" | Affects EVERY design decision |
| Framework | "React Native, Flutter, or native?" | Determines patterns and tools |
| Navigation | "Tab bar, drawer, or stack-based?" | Core UX decision |
| State | "What state management? (Zustand/Redux/Riverpod/BLoC?)" | Architecture foundation |
| Offline | "Does this need to work offline?" | Affects data strategy |
| Target devices | "Phone only, or tablet support?" | Layout complexity |
| 方面 | 询问内容 | 原因 |
|---|---|---|
| 平台 | "是iOS、Android还是两者兼顾?" | 影响所有设计决策 |
| 框架 | "是React Native、Flutter还是原生开发?" | 决定实现模式与工具 |
| 导航方式 | "是标签栏、抽屉式还是栈式导航?" | 核心UX决策 |
| 状态管理 | "使用哪种状态管理方案?(Zustand/Redux/Riverpod/BLoC?)" | 架构基础 |
| 离线支持 | "是否需要支持离线使用?" | 影响数据策略 |
| 目标设备 | "仅支持手机,还是同时支持平板?" | 影响布局复杂度 |
⛔ AI MOBILE ANTI-PATTERNS (YASAK LİSTESİ)
⛔ AI移动端反模式清单(禁止列表)
🚫 These are AI default tendencies that MUST be avoided!
🚫 这些是AI的默认倾向,必须避免!
Performance Sins
性能禁忌
| ❌ NEVER DO | Why It's Wrong | ✅ ALWAYS DO |
|---|---|---|
| ScrollView for long lists | Renders ALL items, memory explodes | Use |
| Inline renderItem function | New function every render, all items re-render | |
| Missing keyExtractor | Index-based keys cause bugs on reorder | Unique, stable ID from data |
| Skip getItemLayout | Async layout = janky scroll | Provide when items have fixed height |
| setState() everywhere | Unnecessary widget rebuilds | Targeted state, |
| Native driver: false | Animations blocked by JS thread | |
| console.log in production | Blocks JS thread severely | Remove before release build |
| Skip React.memo/const | Every item re-renders on any change | Memoize list items ALWAYS |
| ❌ 绝对禁止 | 错误原因 | ✅ 正确做法 |
|---|---|---|
| 长列表使用ScrollView | 渲染所有列表项,内存占用暴增 | 使用 |
| 内联renderItem函数 | 每次渲染都会创建新函数,导致所有列表项重渲染 | |
| 缺少keyExtractor | 基于索引的键会导致重排时出现bug | 使用数据中的唯一、稳定ID |
| 未设置getItemLayout | 异步布局导致滚动卡顿 | 当列表项高度固定时提供该配置 |
| 随处使用setState() | 不必要的组件重渲染 | 针对性状态管理、使用 |
| Native driver设为false | 动画会被JS线程阻塞 | 始终设置 |
| 生产环境保留console.log | 严重阻塞JS线程 | 发布构建前移除所有console.log |
| 未使用React.memo/const | 任意变更都会导致所有列表项重渲染 | 始终对列表项进行记忆化处理 |
Touch/UX Sins
触摸/UX禁忌
| ❌ NEVER DO | Why It's Wrong | ✅ ALWAYS DO |
|---|---|---|
| Touch target < 44px | Impossible to tap accurately, frustrating | Minimum 44pt (iOS) / 48dp (Android) |
| Spacing < 8px between targets | Accidental taps on neighbors | Minimum 8-12px gap |
| Gesture-only interactions | Motor impaired users excluded | Always provide button alternative |
| No loading state | User thinks app crashed | ALWAYS show loading feedback |
| No error state | User stuck, no recovery path | Show error with retry option |
| No offline handling | Crash/block when network lost | Graceful degradation, cached data |
| Ignore platform conventions | Users confused, muscle memory broken | iOS feels iOS, Android feels Android |
| ❌ 绝对禁止 | 错误原因 | ✅ 正确做法 |
|---|---|---|
| 触摸目标尺寸 < 44px | 难以精准点击,影响用户体验 | 最小尺寸为44pt(iOS)/48dp(Android) |
| 触摸目标间距 < 8px | 容易误触相邻目标 | 最小间距为8-12px |
| 仅支持手势交互 | 排斥行动不便的用户 | 始终提供按钮替代方案 |
| 无加载状态 | 用户会误以为应用崩溃 | 始终显示加载反馈 |
| 无错误状态 | 用户陷入困境,无恢复路径 | 显示错误信息并提供重试选项 |
| 无离线处理 | 网络断开时应用崩溃/无法使用 | 优雅降级,使用缓存数据 |
| 忽略平台规范 | 造成用户困惑,违背肌肉记忆 | iOS应用符合iOS体验,Android应用符合Android体验 |
Security Sins
安全禁忌
| ❌ NEVER DO | Why It's Wrong | ✅ ALWAYS DO |
|---|---|---|
| Token in AsyncStorage | Easily accessible, stolen on rooted device | |
| Hardcode API keys | Reverse engineered from APK/IPA | Environment variables, secure storage |
| Skip SSL pinning | MITM attacks possible | Pin certificates in production |
| Log sensitive data | Logs can be extracted | Never log tokens, passwords, PII |
| ❌ 绝对禁止 | 错误原因 | ✅ 正确做法 |
|---|---|---|
| 将Token存储在AsyncStorage中 | 容易被访问,在root设备上会被盗取 | 使用 |
| 硬编码API密钥 | 可从APK/IPA中逆向获取 | 使用环境变量、安全存储 |
| 未启用SSL证书绑定 | 可能遭受中间人攻击 | 生产环境启用证书绑定 |
| 记录敏感数据 | 日志可被提取 | 绝不记录Token、密码、个人身份信息(PII) |
Architecture Sins
架构禁忌
| ❌ NEVER DO | Why It's Wrong | ✅ ALWAYS DO |
|---|---|---|
| Business logic in UI | Untestable, unmaintainable | Service layer separation |
| Global state for everything | Unnecessary re-renders, complexity | Local state default, lift when needed |
| Deep linking as afterthought | Notifications, shares broken | Plan deep links from day one |
| Skip dispose/cleanup | Memory leaks, zombie listeners | Clean up subscriptions, timers |
| ❌ 绝对禁止 | 错误原因 | ✅ 正确做法 |
|---|---|---|
| 业务逻辑写在UI层 | 无法测试、难以维护 | 分离服务层 |
| 所有状态都用全局状态 | 不必要的重渲染、复杂度高 | 默认使用局部状态,必要时再提升状态 |
| 深度链接事后考虑 | 通知、分享功能失效 | 从项目初期就规划深度链接 |
| 未进行销毁/清理 | 内存泄漏、僵尸监听器 | 清理订阅、定时器等 |
📱 Platform Decision Matrix
📱 平台决策矩阵
When to Unify vs Diverge
何时统一 vs 差异化
UNIFY (same on both) DIVERGE (platform-specific)
─────────────────── ──────────────────────────
Business Logic ✅ Always -
Data Layer ✅ Always -
Core Features ✅ Always -
Navigation - ✅ iOS: edge swipe, Android: back button
Gestures - ✅ Platform-native feel
Icons - ✅ SF Symbols vs Material Icons
Date Pickers - ✅ Native pickers feel right
Modals/Sheets - ✅ iOS: bottom sheet vs Android: dialog
Typography - ✅ SF Pro vs Roboto (or custom)
Error Dialogs - ✅ Platform conventions for alerts 统一(双平台一致) 差异化(平台特定)
─────────────────── ──────────────────────────
业务逻辑 ✅ 始终统一 -
数据层 ✅ 始终统一 -
核心功能 ✅ 始终统一 -
导航方式 - ✅ iOS:边缘左滑,Android:返回按钮
手势 - ✅ 符合平台原生体验
图标 - ✅ SF Symbols vs Material Icons
日期选择器 - ✅ 原生选择器体验更佳
模态框/底部弹窗 - ✅ iOS:底部弹窗 vs Android:对话框
字体 - ✅ SF Pro vs Roboto(或自定义字体)
错误提示框 - ✅ 遵循平台提示框规范Quick Reference: Platform Defaults
快速参考:平台默认配置
| Element | iOS | Android |
|---|---|---|
| Primary Font | SF Pro / SF Compact | Roboto |
| Min Touch Target | 44pt × 44pt | 48dp × 48dp |
| Back Navigation | Edge swipe left | System back button/gesture |
| Bottom Tab Icons | SF Symbols | Material Symbols |
| Action Sheet | UIActionSheet from bottom | Bottom Sheet / Dialog |
| Progress | Spinner | Linear progress (Material) |
| Pull to Refresh | Native UIRefreshControl | SwipeRefreshLayout |
| 元素 | iOS | Android |
|---|---|---|
| 主字体 | SF Pro / SF Compact | Roboto |
| 最小触摸目标 | 44pt × 44pt | 48dp × 48dp |
| 返回导航 | 边缘左滑 | 系统返回按钮/手势 |
| 底部标签栏图标 | SF Symbols | Material Symbols |
| 操作菜单 | 从底部弹出的UIActionSheet | 底部弹窗 / 对话框 |
| 进度指示器 | 环形加载器 | 线性进度条(Material风格) |
| 下拉刷新 | 原生UIRefreshControl | SwipeRefreshLayout |
🧠 Mobile UX Psychology (Quick Reference)
🧠 移动端UX心理学(快速参考)
Fitts' Law for Touch
触摸交互的菲茨定律
Desktop: Cursor is precise (1px)
Mobile: Finger is imprecise (~7mm contact area)
→ Touch targets MUST be 44-48px minimum
→ Important actions in THUMB ZONE (bottom of screen)
→ Destructive actions AWAY from easy reach桌面端:光标精准(1px)
移动端:手指不精准(接触面积约7mm)
→ 触摸目标最小尺寸必须为44-48px
→ 重要操作放在拇指操作区(屏幕底部)
→ 破坏性操作放在不易触碰的区域Thumb Zone (One-Handed Usage)
拇指操作区(单手握持场景)
┌─────────────────────────────┐
│ HARD TO REACH │ ← Navigation, menu, back
│ (stretch) │
├─────────────────────────────┤
│ OK TO REACH │ ← Secondary actions
│ (natural) │
├─────────────────────────────┤
│ EASY TO REACH │ ← PRIMARY CTAs, tab bar
│ (thumb's natural arc) │ ← Main content interaction
└─────────────────────────────┘
[ HOME ]┌─────────────────────────────┐
│ 难以触碰区域 │ ← 导航、菜单、返回按钮
│ (需伸展手指) │
├─────────────────────────────┤
│ 可触碰区域 │ ← 次要操作
│ (自然姿势) │
├─────────────────────────────┤
│ 易触碰区域 │ ← 主要CTA、标签栏
│ (拇指自然活动范围) │ ← 主要内容交互区
└─────────────────────────────┘
[ 主页 ]Mobile-Specific Cognitive Load
移动端特定认知负荷
| Desktop | Mobile Difference |
|---|---|
| Multiple windows | ONE task at a time |
| Keyboard shortcuts | Touch gestures |
| Hover states | NO hover (tap or nothing) |
| Large viewport | Limited space, scroll vertical |
| Stable attention | Interrupted constantly |
For deep dive: touch-psychology.md
| 桌面端 | 移动端差异 |
|---|---|
| 多窗口并行 | 一次只能处理一个任务 |
| 键盘快捷键 | 触摸手势 |
| 悬停状态 | 无悬停(只能点击或无操作) |
| 大视口 | 空间有限,仅支持垂直滚动 |
| 注意力稳定 | 频繁被打断 |
深入了解:touch-psychology.md
⚡ Performance Principles (Quick Reference)
⚡ 性能原则(快速参考)
React Native Critical Rules
React Native 关键规则
typescript
// ✅ CORRECT: Memoized renderItem + React.memo wrapper
const ListItem = React.memo(({ item }: { item: Item }) => (
<View style={styles.item}>
<Text>{item.title}</Text>
</View>
));
const renderItem = useCallback(
({ item }: { item: Item }) => <ListItem item={item} />,
[]
);
// ✅ CORRECT: FlatList with all optimizations
<FlatList
data={items}
renderItem={renderItem}
keyExtractor={(item) => item.id} // Stable ID, NOT index
getItemLayout={(data, index) => ({
length: ITEM_HEIGHT,
offset: ITEM_HEIGHT * index,
index,
})}
removeClippedSubviews={true}
maxToRenderPerBatch={10}
windowSize={5}
/>typescript
// ✅ 正确做法:记忆化renderItem + React.memo包装
const ListItem = React.memo(({ item }: { item: Item }) => (
<View style={styles.item}>
<Text>{item.title}</Text>
</View>
));
const renderItem = useCallback(
({ item }: { item: Item }) => <ListItem item={item} />,
[]
);
// ✅ 正确做法:开启所有优化的FlatList
<FlatList
data={items}
renderItem={renderItem}
keyExtractor={(item) => item.id} // 稳定ID,而非索引
getItemLayout={(data, index) => ({
length: ITEM_HEIGHT,
offset: ITEM_HEIGHT * index,
index,
})}
removeClippedSubviews={true}
maxToRenderPerBatch={10}
windowSize={5}
/>Flutter Critical Rules
Flutter 关键规则
dart
// ✅ CORRECT: const constructors prevent rebuilds
class MyWidget extends StatelessWidget {
const MyWidget({super.key}); // CONST!
Widget build(BuildContext context) {
return const Column( // CONST!
children: [
Text('Static content'),
MyConstantWidget(),
],
);
}
}
// ✅ CORRECT: Targeted state with ValueListenableBuilder
ValueListenableBuilder<int>(
valueListenable: counter,
builder: (context, value, child) => Text('$value'),
child: const ExpensiveWidget(), // Won't rebuild!
)dart
// ✅ 正确做法:const构造函数避免重渲染
class MyWidget extends StatelessWidget {
const MyWidget({super.key}); // CONST!
Widget build(BuildContext context) {
return const Column( // CONST!
children: [
Text('静态内容'),
MyConstantWidget(),
],
);
}
}
// ✅ 正确做法:使用ValueListenableBuilder进行针对性状态管理
ValueListenableBuilder<int>(
valueListenable: counter,
builder: (context, value, child) => Text('$value'),
child: const ExpensiveWidget(), // 不会重渲染!
)Animation Performance
动画性能
GPU-accelerated (FAST): CPU-bound (SLOW):
├── transform ├── width, height
├── opacity ├── top, left, right, bottom
└── (use these ONLY) ├── margin, padding
└── (AVOID animating these)For complete guide: mobile-performance.md
GPU加速(快速): CPU绑定(缓慢):
├── transform ├── width, height
├── opacity ├── top, left, right, bottom
└── (仅使用这些) ├── margin, padding
└── (避免对这些属性做动画)完整指南:mobile-performance.md
📝 CHECKPOINT (MANDATORY Before Any Mobile Work)
📝 检查点(开始任何移动端工作前必须完成)
Before writing ANY mobile code, you MUST complete this checkpoint:
🧠 CHECKPOINT:
Platform: [ iOS / Android / Both ]
Framework: [ React Native / Flutter / SwiftUI / Kotlin ]
Files Read: [ List the skill files you've read ]
3 Principles I Will Apply:
1. _______________
2. _______________
3. _______________
Anti-Patterns I Will Avoid:
1. _______________
2. _______________Example:
🧠 CHECKPOINT:
Platform: iOS + Android (Cross-platform)
Framework: React Native + Expo
Files Read: touch-psychology.md, mobile-performance.md, platform-ios.md, platform-android.md
3 Principles I Will Apply:
1. FlatList with React.memo + useCallback for all lists
2. 48px touch targets, thumb zone for primary CTAs
3. Platform-specific navigation (edge swipe iOS, back button Android)
Anti-Patterns I Will Avoid:
1. ScrollView for lists → FlatList
2. Inline renderItem → Memoized
3. AsyncStorage for tokens → SecureStore🔴 Can't fill the checkpoint? → GO BACK AND READ THE SKILL FILES.
在编写任何移动端代码前,你必须完成以下检查点:
🧠 检查点:
平台: [ iOS / Android / 两者兼顾 ]
框架: [ React Native / Flutter / SwiftUI / Kotlin ]
已读文件: [ 列出你已阅读的技能文件 ]
我将遵循的3项原则:
1. _______________
2. _______________
3. _______________
我将避免的反模式:
1. _______________
2. _______________示例:
🧠 检查点:
平台: iOS + Android(跨平台)
框架: React Native + Expo
已读文件: touch-psychology.md, mobile-performance.md, platform-ios.md, platform-android.md
我将遵循的3项原则:
1. 所有列表使用FlatList + React.memo + useCallback
2. 触摸目标48px,主要CTA放在拇指操作区
3. 平台特定导航(iOS边缘左滑,Android返回按钮)
我将避免的反模式:
1. 长列表用ScrollView → 改用FlatList
2. 内联renderItem → 记忆化处理
3. AsyncStorage存储Token → 改用SecureStore🔴 无法完成检查点? → 返回阅读技能文件。
🔧 Framework Decision Tree
🔧 框架决策树
WHAT ARE YOU BUILDING?
│
├── Need OTA updates + rapid iteration + web team
│ └── ✅ React Native + Expo
│
├── Need pixel-perfect custom UI + performance critical
│ └── ✅ Flutter
│
├── Deep native features + single platform focus
│ ├── iOS only → SwiftUI
│ └── Android only → Kotlin + Jetpack Compose
│
├── Existing RN codebase + new features
│ └── ✅ React Native (bare workflow)
│
└── Enterprise + existing Flutter codebase
└── ✅ FlutterFor complete decision trees: decision-trees.md
你要开发什么?
│
├── 需要OTA更新 + 快速迭代 + 有Web团队支持
│ └── ✅ React Native + Expo
│
├── 需要像素级完美的自定义UI + 性能要求极高
│ └── ✅ Flutter
│
├── 深度原生功能 + 单一平台聚焦
│ ├── 仅iOS → SwiftUI
│ └── 仅Android → Kotlin + Jetpack Compose
│
├── 已有RN代码库 + 新增功能
│ └── ✅ React Native(裸工作流)
│
└── 企业级应用 + 已有Flutter代码库
└── ✅ Flutter完整决策树:decision-trees.md
📋 Pre-Development Checklist
📋 开发前检查清单
Before Starting ANY Mobile Project
开始任何移动端项目前
- Platform confirmed? (iOS / Android / Both)
- Framework chosen? (RN / Flutter / Native)
- Navigation pattern decided? (Tabs / Stack / Drawer)
- State management selected? (Zustand / Redux / Riverpod / BLoC)
- Offline requirements known?
- Deep linking planned from day one?
- Target devices defined? (Phone / Tablet / Both)
- 确认平台?(iOS / Android / 两者兼顾)
- 选择框架?(RN / Flutter / 原生)
- 确定导航模式?(标签栏 / 栈式 / 抽屉式)
- 选定状态管理方案?(Zustand / Redux / Riverpod / BLoC)
- 明确离线需求?
- 从项目初期就规划深度链接?
- 定义目标设备?(手机 / 平板 / 两者兼顾)
Before Every Screen
开发每个页面之前
- Touch targets ≥ 44-48px?
- Primary CTA in thumb zone?
- Loading state exists?
- Error state with retry exists?
- Offline handling considered?
- Platform conventions followed?
- 触摸目标尺寸 ≥ 44-48px?
- 主要CTA在拇指操作区?
- 存在加载状态?
- 存在带重试选项的错误状态?
- 考虑了离线处理?
- 遵循平台规范?
Before Release
发布前
- console.log removed?
- SecureStore for sensitive data?
- SSL pinning enabled?
- Lists optimized (memo, keyExtractor)?
- Memory cleanup on unmount?
- Tested on low-end devices?
- Accessibility labels on all interactive elements?
- 移除console.log?
- 敏感数据使用SecureStore存储?
- 启用SSL证书绑定?
- 列表已优化(记忆化、keyExtractor)?
- 卸载时清理内存?
- 在低端设备上测试过?
- 所有交互元素都有无障碍标签?
📚 Reference Files
📚 参考文件
For deeper guidance on specific areas:
| File | When to Use |
|---|---|
| mobile-design-thinking.md | FIRST! Anti-memorization, forces context-based thinking |
| touch-psychology.md | Understanding touch interaction, Fitts' Law, gesture design |
| mobile-performance.md | Optimizing RN/Flutter, 60fps, memory/battery |
| platform-ios.md | iOS-specific design, HIG compliance |
| platform-android.md | Android-specific design, Material Design 3 |
| mobile-navigation.md | Navigation patterns, deep linking |
| mobile-typography.md | Type scale, system fonts, accessibility |
| mobile-color-system.md | OLED optimization, dark mode, battery |
| decision-trees.md | Framework, state, storage decisions |
Remember: Mobile users are impatient, interrupted, and using imprecise fingers on small screens. Design for the WORST conditions: bad network, one hand, bright sun, low battery. If it works there, it works everywhere.
如需特定领域的深入指导:
| 文件 | 使用场景 |
|---|---|
| mobile-design-thinking.md | 首先阅读!反固化思维,引导基于场景的思考 |
| touch-psychology.md | 理解触摸交互、菲茨定律、手势设计 |
| mobile-performance.md | React Native/Flutter优化、60fps、内存/续航管理 |
| platform-ios.md | iOS特定设计、HIG合规 |
| platform-android.md | Android特定设计、Material Design 3 |
| mobile-navigation.md | 导航模式、深度链接 |
| mobile-typography.md | 字体层级、系统字体、无障碍 |
| mobile-color-system.md | OLED优化、深色模式、续航友好 |
| decision-trees.md | 框架、状态管理、存储方案决策 |
记住: 移动用户缺乏耐心、频繁被打断,且用不精准的手指操作小屏幕。要针对最恶劣的条件设计:网络差、单手握持、强光、低电量。如果在这些条件下能正常工作,那在任何场景下都能正常工作。",