
Mobile Design
Choose mobile stack and architecture—Expo vs Flutter vs native—using decision trees before you commit to a build path.
Overview
Mobile Design is an agent skill most often used in Validate (also Build) that guides framework, state, and storage choices for mobile apps via structured decision trees.
Install
npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill mobile-designWhat is this skill?
- Master framework decision tree: OTA and Expo vs Flutter vs platform-native vs React Native for web teams
- Branches for pixel-perfect cross-platform UI, heavy native APIs (ARKit, HealthKit), and Kotlin Multiplatform shared logi
- Explicit guidance that trees are thinking guides—not copy-paste stack answers
- Covers state management and storage strategy decisions in the same mobile-design framing
- Maps team skills (TypeScript web team) to React Native and Expo/EAS update paths
Adoption & trust: 2.7k installs on skills.sh; 40.1k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need a mobile app but face overwhelming framework options without a clear map from product needs to Expo, Flutter, or native stacks.
Who is it for?
Solo builders and tiny teams deciding between Expo, Flutter, or native before writing substantial mobile code.
Skip if: Pixel-polishing an existing screen or running store ASO when stack decisions are already locked.
When should I use this skill?
User is choosing mobile frameworks, state management, or storage and needs context-based decision trees rather than a single default stack.
What do I get? / Deliverables
You leave with a reasoned mobile stack and architectural direction aligned to OTA needs, native APIs, UI fidelity, and team skills—ready to scaffold in Build.
- Framework recommendation with tradeoff rationale
- Aligned notes on state and storage direction
- Documented decision path through the trees
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Canonical shelf is Validate because the skill is framed as decision trees for framework, state, and storage before heavy implementation—not a codegen task list. Prototype fits early mobile stack and platform tradeoffs (OTA, pixel-perfect UI, native APIs, existing TypeScript team) before full Build sprints.
Where it fits
Decide Expo plus EAS Update when you need rapid iteration without waiting on store review.
Narrow scope when HealthKit-only features force a primarily iOS-native path.
Pick state and storage patterns consistent with the chosen React Native or Flutter stack.
Inform platform-specific release strategy after knowing whether you ship one binary or two native apps.
How it compares
Strategic mobile stack decision trees—not a UI component library or Figma-to-code generator.
Common Questions / FAQ
Who is mobile-design for?
Indie developers and small web-heavy teams planning their first or next mobile product who want agent-guided tradeoff analysis.
When should I use mobile-design?
Use in Validate when prototyping stack choices; in Build frontend when revisiting state or storage; before committing to Expo EAS, Flutter, or fully native paths.
Is mobile-design safe to install?
It is documentation-style guidance with no required network or secrets—still review the Security Audits panel on this page for the package source.
SKILL.md
READMESKILL.md - Mobile Design
# Mobile Decision Trees > Framework selection, state management, storage strategy, and context-based decisions. > **These are THINKING guides, not copy-paste answers.** --- ## 1. Framework Selection ### Master Decision Tree ``` WHAT ARE YOU BUILDING? │ ├── Need OTA updates without app store review? │ │ │ ├── Yes → React Native + Expo │ │ ├── Expo Go for development │ │ ├── EAS Update for production OTA │ │ └── Best for: rapid iteration, web teams │ │ │ └── No → Continue ▼ │ ├── Need pixel-perfect custom UI across platforms? │ │ │ ├── Yes → Flutter │ │ ├── Custom rendering engine │ │ ├── Single UI for iOS + Android │ │ └── Best for: branded, visual apps │ │ │ └── No → Continue ▼ │ ├── Heavy native features (ARKit, HealthKit, specific sensors)? │ │ │ ├── iOS only → SwiftUI / UIKit │ │ └── Maximum native capability │ │ │ ├── Android only → Kotlin + Jetpack Compose │ │ └── Maximum native capability │ │ │ └── Both → Consider native with shared logic │ └── Kotlin Multiplatform for shared │ ├── Existing web team + TypeScript codebase? │ │ │ └── Yes → React Native │ ├── Familiar paradigm for React devs │ ├── Share code with web (limited) │ └── Large ecosystem │ └── Enterprise with existing Flutter team? │ └── Yes → Flutter └── Leverage existing expertise ``` ### Framework Comparison | Factor | React Native | Flutter | Native (Swift/Kotlin) | |--------|-------------|---------|----------------------| | **OTA Updates** | ✅ Expo | ❌ No | ❌ No | | **Learning Curve** | Low (React devs) | Medium | Higher | | **Performance** | Good | Excellent | Best | | **UI Consistency** | Platform-native | Identical | Platform-native | | **Bundle Size** | Medium | Larger | Smallest | | **Native Access** | Via bridges | Via channels | Direct | | **Hot Reload** | ✅ | ✅ | ✅ (Xcode 15+) | ### When to Choose Native ``` CHOOSE NATIVE WHEN: ├── Maximum performance required (games, 3D) ├── Deep OS integration needed ├── Platform-specific features are core ├── Team has native expertise ├── App store presence is primary └── Long-term maintenance priority AVOID NATIVE WHEN: ├── Limited budget/time ├── Need rapid iteration ├── Identical UI on both platforms ├── Team is web-focused └── Cross-platform is priority ``` --- ## 2. State Management Selection ### React Native State Decision ``` WHAT'S YOUR STATE COMPLEXITY? │ ├── Simple app, few screens, minimal shared state │ │ │ └── Zustand (or just useState/Context) │ ├── Minimal boilerplate │ ├── Easy to understand │ └── Scales OK to medium │ ├── Primarily server data (API-driven) │ │ │ └── TanStack Query (React Query) + Zustand │ ├── Query for server state │ ├── Zustand for UI state │ └── Excellent caching, refetching │ ├── Complex app with many features │ │ │ └── Redux Toolkit + RTK Query │ ├── Predicable, debuggable │ ├── RTK Query for API │ └── Good for large teams │ └── Atomic, granular state needs │ └── Jotai ├── Atom-based (like Recoil) ├── Minimizes re-renders └── Good for derived state ``` ### Flutter State Decision ``` WHAT'S YOUR STATE COMPLEXITY? │ ├── Simple app, learning Flutter │ │ │ └── Provider (or setState) │