brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
expo-ios-higExpo / React Native iOS interface conforming to Apple Human Interface Guidelines (iOS 26) — native navigation (Expo Router native stack and tabs), platform controls (Alert, ActionSheetIOS, SF Symbols via expo-symbols), safe areas, dark mode, Dynamic Type, haptics, Liquid Glass, accessibility, and 60fps motion. Covers architecture and styling decisions made …
Independent GitHub snapshot · Automated classification · Original documentation governs
Design rules for building iOS 26 apps in Expo (React Native) that feel genuinely native under Apple's Human Interface Guidelines. Contains 46 rules across 8 categories, prioritized by how much each decision affects native feel and HIG compliance. Every example is TSX/Expo — the decisions you make in React Native and TypeScript, not Swift.
The core idea: a React Native app feels native when it reaches for the platform — the system navigation controller, system controls, semantic colors, SF Symbols, real haptics, the system share sheet — instead of re-implementing iOS in JavaScript. These rules say which decision earns the native feel and which one quietly forfeits it.
Reference these guidelines when:
Alert, ActionSheetIOS, date picker, Switch, SF Symbols, or drop to @expo/ui@expo/ui component API — for how to use @expo/ui/swift-ui components, Host boundaries, and modifiers, use the expo-ui skill. This skill says which decisions make an app native and points to @expo/ui when dropping to SwiftUI is the right call; it does not re-document that API.expo-design-system skill. This skill governs iOS native feel; that one governs the token and component architecture that the two frontends share.ios-hig or ios-design. This skill's examples are all React Native/TSX.| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Native Navigation Architecture | CRITICAL | nav- |
| 2 | Native Component Fidelity | CRITICAL | native- |
| 3 | Layout & Adaptivity | HIGH | layout- |
| 4 | Touch, Gestures & Haptics | HIGH | touch- |
| 5 | Visual System & Liquid Glass | HIGH | visual- |
| 6 | Motion & Feedback | MEDIUM-HIGH | motion- |
| 7 | Accessibility | MEDIUM-HIGH | acc- |
| 8 | System Integration & Polish | MEDIUM | system- |
nav-native-stack — Use Expo Router's native Stack for screen hierarchynav-native-tabs — Adopt native tabs for top-level sectionsnav-large-titles — Enable large titles on top-level screensnav-sheet-detents — Present secondary tasks as sheets with detentsnav-push-vs-present — Push for hierarchy and present for self-contained tasksnav-search-in-header — Place search in the navigation barnav-system-back — Keep the system back button and swipe-back gesturenative-avoid-material-ui — Avoid Material Design component kits on iOSnative-sf-symbols — Use SF Symbols for iconographynative-system-alert — Use the native alert for confirmationsnative-action-sheet — Use an action sheet to choose among actionsnative-datetime-picker — Use the native date and time pickernative-switch-toggle — Use the platform Switch for boolean settingslayout-safe-area-insets — Respect safe-area insets with the safe-area contextlayout-edge-to-edge — Extend scrollable content under translucent barslayout-keyboard-avoidance — Keep inputs visible above the keyboardlayout-dark-mode-semantic — Drive colors from the active color schemelayout-content-inset-under-bars — Inset list content past the tab bar and home indicatorlayout-readable-width-ipad — Constrain reading width on iPad and large screenstouch-hit-target — Size touch targets to at least 44pttouch-pressable-feedback — Give every control immediate press feedbacktouch-swipe-actions — Offer swipe actions on list rowstouch-pull-to-refresh — Use RefreshControl for pull-to-refreshtouch-gesture-handler-thread — Drive interactive gestures with Gesture Handlertouch-haptics-on-outcome — Pair haptics with meaningful outcomesvisual-semantic-colors — Use semantic system colors instead of hardcoded hexvisual-system-font — Use the system font for interface textvisual-type-scale — Map text styles to the iOS type scalevisual-spacing-rhythm — Derive spacing from a single base unitvisual-liquid-glass-gated — Apply Liquid Glass through a version-gated native viewvisual-tint-discipline — Reserve the accent tint for interactive elementsmotion-ui-thread-animation — Run animations on the UI threadmotion-virtualized-lists — Render long lists with a virtualized listmotion-loading-states — Show content-shaped placeholders while loadingmotion-empty-states — Design empty states that guide the next actionmotion-optimistic-updates — Apply optimistic updates for user actionsacc-roles-labels — Label interactive and icon-only controls for VoiceOveracc-dynamic-type — Let text scale with Dynamic Typeacc-reduce-motion — Honor the Reduce Motion settingacc-state-and-hint — Expose control state to assistive technologyacc-grouping-focus — Group related elements for a logical focus ordersystem-permissions-jit — Request permissions just in time with a rationalesystem-status-bar — Match the status bar style to the content behind itsystem-keyboard-type — Configure each text field for its contentsystem-share-sheet — Share through the system share sheetsystem-app-icon-launch — Configure a real app icon and launch screenRead individual reference files for detailed explanations and code examples:
references/{prefix}-{slug}.mdEach rule file contains a short explanation of why it matters for native feel, an Incorrect (non-native) TSX example, a Correct (native) example that is a minimal diff from it, and an authoritative reference URL. Where relevant, rules add a "When NOT to use this pattern" or "Alternative" section.
expo-ui — @expo/ui/swift-ui component API reference. Use it when the rules here point you to native SwiftUI components.ios-hig / ios-design — HIG and Apple design principles for native Swift/SwiftUI codebases.expo — Expo React Native performance optimization, complementary to the motion/list rules here.