Use when you have a written implementation plan to execute in a separate session with review checkpoints
npx skills add qodex-ai/ai-agent-skills --skill "mobile-app-interface"
Install specific skill from multi-skill repository
# Description
Design native iOS mobile app interfaces and components. Creates user-centric mobile designs following platform conventions and best practices.
# SKILL.md
name: mobile-app-interface
description: Design native iOS mobile app interfaces and components. Creates user-centric mobile designs following platform conventions and best practices.
license: Proprietary. LICENSE.txt has complete terms
Expo iOS Designer
Core Design Prompt
βDesign a modern, clean iOS app using Expo and React Native that follows Appleβs Human Interface Guidelines: prioritize clear hierarchy and harmony; respect safe areas; use responsive Flexbox layouts and Dynamic Type with SF Pro; support dark mode with semantic system-friendly colors; keep minimum 44pt touch targets; use native navigation patterns (tabs, stacks, modals) and standard gestures; apply Liquid Glass materials sparingly for overlays like bars, sheets, and popovers with AA contrast; add purposeful motion and gentle haptics; honor Reduce Motion and Reduce Transparency; deliver icons/splash and store assets per Apple guidance.β.β
Design Rules
1) Safe Areas Rule
Wrap screens with SafeAreaProvider/SafeAreaView to avoid notches and the home indicator; never hardβcode insets.β
tsx
import { SafeAreaView } from "react-native-safe-area-context";
export function Screen({ children }) {
return
}
2) Typography Rule
Use SF Pro Text/Display (or system) with a documented type ramp; support Dynamic Type so text scales with user settings.β
tsx
Title
3) Touch Target Rule
Ensure interactive controls are at least 44Γ44pt, with adequate spacing between targets for accurate taps.β
tsx
<TouchableOpacity
style={{ minHeight: 44, minWidth: 44, justifyContent: "center", alignItems: "center" }}
accessibilityRole="button"
Action
4) Color & Theming Rule
Use semantic roles and support light/dark with AA contrast for text and essential UI; prefer system-friendly palettes that adapt across appearances.β
tsx
const scheme = useColorScheme();
const bg = scheme === "dark" ? "#0B0B0B" : "#FFFFFF";
const fg = scheme === "dark" ? "#E5E7EB" : "#111827";
5) Navigation Rule
Use tab bars for top-level sections, stack for drill-ins, and modals for short tasks; align back navigation with iOS gestures and conventions.β
IMPORTANT: For Tab Bars with Liquid Glass
ALWAYS use NativeTabs from Expo Router instead of custom tab bars. NativeTabs provides native iOS UITabBarController with built-in Liquid Glass effect - no manual implementation needed!
tsx
// β
CORRECT: Native tab bar with built-in Liquid Glass
import { NativeTabs, Icon, Label } from "expo-router/unstable-native-tabs";
export default function TabLayout() {
return (
);
}
// β WRONG: Custom tab bars - requires manual Liquid Glass implementation
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
const Tab = createBottomTabNavigator();
NativeTabs Features:
- Built-in Liquid Glass blur (automatic on iOS 26+)
- SF Symbols for icons (sf prop with default/selected states)
- Native iOS animations and haptics
- Automatic light/dark mode adaptation
- System-native behavior (matches Safari, Apple Music, etc.)
- No custom styling required
SF Symbols Icon Examples:
- Home: house / house.fill
- Settings: gearshape / gearshape.fill
- Messages: message / message.fill
- Profile: person / person.fill
- Search: magnifyingglass
- Calendar: calendar / calendar.fill
- Star: star / star.fill
Find more at: https://developer.apple.com/sf-symbols/
6) Motion & Haptics Rule
Keep transitions 200β400ms with native-feeling ease or spring; pair key state changes and confirmations with gentle haptics.β
tsx
import * as Haptics from "expo-haptics";
const onPress = async () => { await Haptics.selectionAsync(); / action / };
7) Accessibility Rule
Provide accessibilityLabel, Role, Hint, and state; verify logical focus order and complete VoiceOver announcements across flows.β
tsx
8) List & Performance Rule
Use FlatList/SectionList with keyExtractor, optional getItemLayout, and memoized rows; avoid re-render churn for smooth 60fps scrolling.β
tsx
renderItem={memo(({ item }) =>
/>
9) Assets & App Store Rule
Create icons and splash per Expo docs; verify in an EAS build, not Expo Go; keep store metadata and permissions aligned to behavior.β
json
// app.json (excerpt)
{
"expo": {
"icon": "./assets/icon.png",
"splash": { "image": "./assets/splash.png", "resizeMode": "contain", "backgroundColor": "#000000" }
}
}
10) Layout & Spacing Rule
Compose with Flexbox and a consistent spacing scale; adapt padding to dynamic type and safe areas for balanced, accessible layouts.β
tsx
{/ content /}
11) Liquid Glass Materials Rule
Use Liquid Glass on overlay surfaces (navigation/tab bars, large headers, sheets, popovers, floating cards) to add depth without distracting from content; verify AA contrast over dynamic backdrops in light and dark modes.β
Respect Reduce Transparency and provide solid/tinted fallbacks; avoid placing dense text over highly saturated or high-frequency backdrops.β
Keep materials subtle: modest opacity/blur, applied sparingly to chrome rather than full-screen backgrounds for readability and performance.β
12) Expo Glass Modules Rule
Official module: expo-glass-effect. Provides GlassView, GlassContainer, and isLiquidGlassAvailable() to detect capability and compose grouped glass surfaces.β
Community SwiftUI module: expo-liquid-glass-view. Fine control over corner radius, styles, and tints; iOS-only; ensure platform fallbacks.β
Install and basic usage:
bash
npx expo install expo-glass-effect
tsx
import { GlassView } from "expo-glass-effect";
SwiftUI-powered option:
bash
npx expo install expo-liquid-glass-view
tsx
import { ExpoLiquidGlassView } from "expo-liquid-glass-view";
These render native iOS Liquid Glass via UIVisualEffectView/SwiftUI, and gracefully fall back to a regular View on unsupported platforms.β
13) Availability & Fallbacks Rule
Check availability on iOS 26+ with isLiquidGlassAvailable(); also honor AccessibilityInfo.isReduceTransparencyEnabled() for fallbacks to solid/tinted surfaces.β
tsx
import { isLiquidGlassAvailable, GlassView } from "expo-glass-effect";
import { AccessibilityInfo, Platform } from "react-native";
const useGlass = async () => {
const supported = Platform.OS === "ios" && (await isLiquidGlassAvailable());
const reduceTransparency = await AccessibilityInfo.isReduceTransparencyEnabled();
return { supported, reduceTransparency };
};
14) Materials Performance Rule
Avoid full-screen realtime blur on animated scenes; scope glass to small overlays, cache where possible, and profile on device; fall back to static blur or solids when FPS dips.β
15) Icon Variants Rule
Provide dark and tinted icon variants following updated Apple resources for consistent appearance with system tints and wallpapers.β
Workflow
1) Interview User
Scope: screen, flow, or component; target file/repo path; materials use-cases (bars, sheets, overlays); accessibility/performance targets.β
2) Design & Implement
Match HIG patterns and the existing design system; compose UI first; define component variants/states.β
Apply all rules (safe area, type, touch, color, nav, motion, a11y, performance, materials, icons). Test Dynamic Type, dark mode, VoiceOver, Reduce Transparency/Motion, and iOS 26 availability.β
Validate on device for performance, notch layouts, and readability over moving content and wallpapers.β
3) Component Structure Pattern
tsx
import { View, Text } from "react-native";
import { SafeAreaView } from "react-native-safe-area-context";
export function ScreenTemplate({ title, children }) {
return (
{title}
);
}
Quality Checklist
Safe areas respected across edges and orientations.β
SF Pro/system fonts with Dynamic Type verified at larger sizes.β
44Γ44pt touch targets and adequate spacing confirmed on device.β
Light/dark with semantic colors and WCAG AA contrast for text and core UI.β
Native navigation patterns and back gestures consistent with iOS.β
Purposeful motion with gentle haptics; honors Reduce Motion.β
Accessibility labels/roles/hints/states and logical focus order; VoiceOver validated.β
Lists are smooth and jank-free; renders and images optimized.β
Icons/splash configured via Expo and tested in an EAS build.β
Store metadata and permissions aligned with behavior.β
Liquid Glass used for overlays only; AA contrast verified over dynamic backdrops.β
Availability checks with isLiquidGlassAvailable(); fallbacks for Reduce Transparency.β
Materials performance profiled; fallbacks applied if FPS drops.β
Icon dark/tinted variants per updated resources.β
References
Apple HIG: layout, navigation, materials, typography.β
Expo GlassEffect API and install guides; SwiftUI module references.β
Expo docs: safe areas, splash/icon configuration, project setup and device testing.β
Accessibility: React Native docs and testing guidance for roles, labels, focus order, touch targets.β
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.