Dev & Engineering exporeact-nativenative-uiswiftuijetpack-composecross-platform-uiiosandroid

Expo Native UI Builder

Build native-feeling, cross-platform interfaces with @expo/ui.

FollowSkills review · FSRS-2.0
Not recommended
59/ 100 5-point scale 3.0 / 5
Trust20 / 25 · 4.0/5

The skill restricts tooling to a specified Node component-listing script, with no visible credential access, covert exfiltration, or destructive default behavior. It requires user confirmation before extending with a local native module and warns about runtime crashes from platform-specific imports. Points are deducted because confirmation, data-flow, and rollback boundaries for installation commands, external documentation access, and project node_modules reads are incomplete, while provenance is mostly repository metadata.

Reliability8 / 20 · 2.0/5

The documentation provides a clear universal-first decision path, SDK boundaries, platform isolation rules, and failure warnings; the listing script reports errors and exits when the project path or @expo/ui is missing. Points are deducted because there are no tests or execution evidence for key paths, the script only parses type-definition exports rather than validating APIs against documentation or projects, and some import-safety guidance is complex or potentially ambiguous.

Adaptability11 / 15 · 3.7/5

Audience, scenarios, platform-layer selection, and non-fit areas are clearly described across iOS, Android, web, Expo Router, and community-library migration. Points are deducted because finer trigger conditions and input/output formats are not specified, Chinese-language support is absent, and core references depend on Expo, Android, and Material documentation without evidence of reachability from mainland-China networks.

Convention11 / 15 · 3.7/5

The skill uses a layered main document and reference files, covering installation, version compatibility, examples, limitations, type-definition precedence, and confirmation before extension. The repository provides an MIT license, a version field, and general CI maintenance checks. Points are deducted because there is no skill-specific changelog, named maintenance owner, or explicit skill-level update path; troubleshooting and FAQ coverage are limited, and external links are not revision-pinned.

Effectiveness6 / 15 · 2.0/5

The material can directly guide selection among universal components, SwiftUI, Jetpack Compose, and drop-in replacements, with reusable Host, layout, and platform-file examples, so the core task is plausibly completable. Points are deducted because static files provide no verified representative outputs or real-project results; users must still validate types and docs themselves, and comparative benefit over manual implementation is not evidenced.

Verifiability3 / 10 · 1.5/5

The repository includes auditable skill files, reference documentation, and a component-enumeration script, while identifying installed package type definitions as the source of truth. Points are deducted because no committed key-path tests, CI execution results, or independent third-party corroboration are shown; external documentation is only referenced by links, and its current accuracy cannot be verified statically.

Evidence confidence:Low Reviewed Jul 20, 2026 Reviewed revision 8bd359f8a44d
Before you use it
  • Before use, verify the target Expo SDK, @expo/ui version, and installed .d.ts files; guidance tracking the latest SDK may change over time.
  • Do not load @expo/ui/swift-ui or @expo/ui/jetpack-compose on the wrong platform; use platform files or a verified runtime branch.
  • LazyColumn and List have documented JS-thread performance limits for large datasets; obtain user confirmation before extending with a native module.
  • Core references depend on external overseas sites, and mainland-China reachability is not established by the submitted materials.
See the full review method →

What does this skill do, and when should you use it?

expo-ui guides Expo and React Native developers in building native UI with @expo/ui. It starts with universal components that can be reused across iOS, Android, and web, then covers platform-specific SwiftUI and Jetpack Compose trees when the universal layer is insufficient. It also documents compatible replacements for selected React Native community UI libraries. The universal layer requires Expo SDK 56 or later, while some replacement and platform-specific layers also support SDK 55.

The skill explains how to install @expo/ui, wrap every UI tree in Host, and choose between universal components, platform-specific SwiftUI or Jetpack Compose components, and community-library replacements. It covers universal components such as Host, Column, Row, Button, Text, and List, along with replacement options for BottomSheet, DateTimePicker, Slider, and Menu. It also explains how to isolate iOS and Android implementations, avoid runtime failures caused by cross-platform imports, and optionally run the Node.js component-listing script through Bash.

  1. An Expo developer needs one component tree to target iOS, Android, and web, and starts with universal @expo/ui components.
  2. A React Native project needs grouped settings, toggles, menus, forms, or native-feeling sheets and pickers beyond standard React Native components.
  3. A team needs SwiftUI-specific behavior or Jetpack Compose-specific capabilities and is prepared to maintain platform-specific UI trees.
  4. A project already uses @gorhom/bottom-sheet or a community DateTimePicker and wants to migrate to a compatible @expo/ui replacement.
  5. A developer is reviewing Host, RNHostView, or native UI trees and needs guidance on when to stay universal or go platform-specific.

What are this skill's strengths and limitations?

Pros
  • The universal-first approach supports a single React component tree for iOS, Android, and web.
  • SwiftUI and Jetpack Compose paths are available for platform-specific behavior or optimization.
  • Compatible replacements are provided for several React Native community UI libraries.
  • The source clearly documents SDK requirements, Host wrapping, and cross-platform import hazards.
Limitations
  • Platform-specific implementations require two UI trees and either platform files or Platform.OS branching.
  • The universal layer requires SDK 56 or later; support on SDK 55 is more limited.
  • The source provides no test suite, performance benchmarks, or platform coverage evidence.
  • The `allowed-tools` Bash(Node.js script) syntax may require adjustment when porting the skill to another agent implementation.

How do you install this skill?

The repository README documents installation of the full Expo Skills collection: npx skills@latest add expo/skills --skill '*'. The CLI asks where to install the skills; the source does not provide a command for installing only expo-ui. Restart or refresh the agent session after installation so it can discover the SKILL.md files.

How do you use this skill?

With the skill installed, give the agent a concrete task such as: “Build a native-feeling Expo settings screen with grouped sections, toggles, and menus using @expo/ui, and decide whether universal or platform-specific components are appropriate.” Start with universal components, and wrap every universal or platform-specific UI tree in Host imported from @expo/ui. Put platform-specific implementations in .ios.tsx or .android.tsx files under components/, not under Expo Router’s app/ directory.

How does this skill compare with similar options?

Compared with standard React Native UI, expo-ui is intended for interfaces where standard components do not provide enough native behavior or appearance. Compared with React Native community UI libraries, it offers compatible replacements for components such as BottomSheet, DateTimePicker, Slider, and Menu, making it relevant for dependency migration.

FAQ

Does expo-ui require a custom development build?
On SDK 56, the source says @expo/ui works in Expo Go and runs with `npx expo start` without a custom build. On older SDKs, build a development client first with `npx expo run:ios` or `npx expo run:android`.
Is expo-ui intended for every Expo UI task?
No. Its scope is @expo/ui native UI. It explicitly does not cover custom native modules, Expo Router navigation, Reanimated, or data fetching.
Can platform-specific components be imported from any file?
No. `@expo/ui/swift-ui` is iOS-only and `@expo/ui/jetpack-compose` is Android-only. Running either import on the other platform can cause an Unable to get view config runtime error.

More skills from this repository

All from expo/skills

Dev & Engineering

Expo Brownfield Integrator

Guides teams in incrementally embedding Expo and React Native into existing native iOS or Android applications.

Dev & Engineering

Expo Web-to-Native Migration

Turn an existing React website into a shippable Expo app, screen by screen.

Dev & Engineering

Expo Development Client Builder

Build and distribute Expo development clients for native-code testing.

Dev & Engineering

Expo App Store Release Assistant

Build and ship Expo apps to the App Store, Google Play, and TestFlight with EAS.

Dev & Engineering

Expo Skill Eval

End-to-end testing for Expo skill triggering, code quality, and runtime rendering.

Dev & Engineering

Expo Tailwind Styling Setup

Configure Tailwind CSS v4, NativeWind v5, and cross-platform styling for Expo apps.

Dev & Engineering

Expo App Structure Guide

A clear, scalable starting layout for a brand-new Expo Router app.

Automation & Ops

EAS Observe Performance Guide

Helps Expo teams instrument, query, and interpret production startup, navigation, and custom-event performance metrics.

Dev & Engineering

Expo Data Fetching

Practical networking guidance for Expo apps, covering API calls, caching, offline behavior, and authentication.

Dev & Engineering

Expo Skill Feedback

Collects feedback about Expo skills or Expo itself and manages anonymous usage telemetry.

Dev & Engineering

Expo Integration Examples

Adapt Expo’s official patterns for third-party integrations.

Design & Frontend

Expo Native UI Guide

Helps Expo developers build responsive screens with Apple-informed styling and a native-feeling experience.

Dev & Engineering

Expo SDK Upgrade Assistant

Guides Expo SDK upgrades, dependency fixes, and compatibility cleanup.

Dev & Engineering

Expo DOM Components

Reuse web code and browser-only libraries inside Expo native apps with incremental migration support.

Dev & Engineering

EAS Cloud Simulator

Run, control, and capture Expo apps remotely when a local iOS simulator or Android emulator is unavailable.

Dev & Engineering

Expo Native Module Migration Assistant

Move an existing Expo Swift module from the 1.0 DSL to the 2.0 macro API without changing its JavaScript contract.

Dev & Engineering

Expo App Clip Builder

Configure an iOS App Clip for an Expo app and launch it from web URLs.

Automation & Ops

EAS Update Health Insights

Use the CLI to measure EAS Update health, adoption, crashes, and rollout readiness.

Automation & Ops

Expo EAS Workflow Assistant

Write and validate EAS CI/CD workflows for Expo projects.

Dev & Engineering

Expo EAS Hosting Deployments

Deploy Expo websites and API routes while configuring secrets, domains, and the edge runtime.

Related skills