expo-ui

Build native iOS and Android interfaces with @expo/ui SwiftUI and Jetpack Compose components.

16|1|Updated May 5, 2026
One-click install
npx skills add https://github.com/AIBiz-Automatyzacje/workspace-template-mobile --skill expo-ui-aibiz-automatyzacje
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: expo-ui
Source: https://github.com/AIBiz-Automatyzacje/workspace-template-mobile/tree/main/.claude/skills/expo-ui
Command: npx skills add https://github.com/AIBiz-Automatyzacje/workspace-template-mobile --skill expo-ui-aibiz-automatyzacje

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @expo/ui, and includes scripts (resource) and references (resource) components.

What problem does it solve? Choosing and correctly implementing native UI components in Expo apps is error-prone: developers reach for community libraries like @gorhom/bottom-sheet or Reanimated when @expo/ui already provides native SwiftUI/Jetpack Compose equivalents, misuse non-virtualized List for large datasets, or crash apps by importing platform-specific packages on the wrong OS. ## Core Features & Use Cases - Native component selection guidance: Directs you to @expo/ui components (BottomSheet, Switch, Slider, Picker, Menu, FieldGroup, List) instead of RN community libraries, with correct props like isPresented/onDismiss. - Three-layer decision tree: Universal components (SDK 56+, works in Expo Go), platform-specific SwiftUI/Jetpack Compose trees, and drop-in replacements for migrating off community libraries. - Component discovery script: Runs list-components.js against the installed @expo/ui package to enumerate exact components and modifiers available in your SDK version. - Use Case: Building a map screen with a slide-up detail sheet — the Skill provides the correct BottomSheet implementation with snapPoints and Host wrapping, avoiding silent failures from @gorhom-style props. ## Quick Start Ask the assistant to build a native bottom sheet or settings-style grouped list in your Expo app using @expo/ui.

Frequently Asked Questions about expo-ui

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a bottom sheet in an Expo app?

Use BottomSheet from @expo/ui instead of @gorhom/bottom-sheet or Reanimated. Control it with isPresented and onDismiss props, set snapPoints to 'half', 'full', a fraction, or a fixed height, and wrap the tree in Host from the @expo/ui root.

What is the difference between @expo/ui universal components and swift-ui/jetpack-compose imports?

Universal components from the @expo/ui root run on iOS, Android, and web from one tree and require SDK 56+. The swift-ui and jetpack-compose sub-packages are platform-only, crash on the other OS, and require separate .ios.tsx/.android.tsx files.

Can I use @expo/ui List for large scrollable lists?

No. @expo/ui List renders native grouped rows like the iOS Settings screen and is not virtualized — each ListItem is a JS-thread node. For large or unknown-length data such as feeds or search results, use FlatList or FlashList instead.

Why does my app crash with 'Unable to get view config' when using @expo/ui?

This happens when @expo/ui/swift-ui code runs on Android or @expo/ui/jetpack-compose code runs on iOS. Place platform-specific trees in .ios.tsx/.android.tsx files under components/ (never inside app/ routes) or guard imports with Platform.OS.

How do I migrate from @gorhom/bottom-sheet to @expo/ui?

Use the drop-in replacement imported from @expo/ui/community/bottom-sheet, which matches the @gorhom API so the swap is mostly the import path. Similar drop-ins exist for datetimepicker, slider, picker, segmented-control, pager-view, menu, and masked-view.

Does @expo/ui work in Expo Go?

The universal component layer works in Expo Go with SDK 56+ and requires no custom build. Install it with npx expo install @expo/ui and wrap every component tree in Host from the package root.