Expo UI Jetpack Compose

Using @expo/ui/jetpack-compose to integrate Jetpack Compose views in an Expo app.

Sby Skills Guide Bot
DevelopmentIntermediate
107/27/2026
Claude CodeCursorWindsurfCopilotCodex
#expo-ui#jetpack-compose#react-native#android-ui#mobile-development

Recommended for


name: expo-ui-jetpack-compose description: expo-ui-jetpack-compose risk: unknown source: community


name: expo-ui-jetpack-compose description: @expo/ui/jetpack-compose package lets you use Jetpack Compose Views and modifiers in your app.

The instructions in this skill apply to SDK 55 only. For other SDK versions, refer to the Expo UI Jetpack Compose docs for that version for the most accurate information.

Installation

npx expo install @expo/ui

A native rebuild is required after installation (npx expo run:android).

Instructions

  • Expo UI's API mirrors Jetpack Compose's API. Use Jetpack Compose and Material Design 3 knowledge to decide which components or modifiers to use.
  • Components are imported from @expo/ui/jetpack-compose, modifiers from @expo/ui/jetpack-compose/modifiers.
  • When about to use a component, fetch its docs to confirm the API - https://docs.expo.dev/versions/v55.0.0/sdk/ui/jetpack-compose/{component-name}/index.md
  • When unsure about a modifier's API, refer to the docs - https://docs.expo.dev/versions/v55.0.0/sdk/ui/jetpack-compose/modifiers/index.md
  • Every Jetpack Compose tree must be wrapped in Host. Use <Host matchContents> for intrinsic sizing, or <Host style={{ flex: 1 }}> when you need explicit size (e.g. as a parent of LazyColumn). Example:
import { Host, Column, Button, Text } from "@expo/ui/jetpack-compose";
import { fillMaxWidth, paddingAll } from "@expo/ui/jetpack-compose/modifiers";

<Host matchContents>
  <Column verticalArrangement={{ spacedBy: 8 }} modifiers={[fillMaxWidth(), paddingAll(16)]}>
    <Text style={{ typography: "titleLarge" }}>Hello</Text>
    <Button onPress={() => alert("Pressed!")}>Press me</Button>
  </Column>
</Host>;

Key Components

  • LazyColumn — Use instead of react-native ScrollView/FlatList for scrollable lists. Wrap in <Host style={{ flex: 1 }}>.
  • Icon — Use <Icon source={require('./icon.xml')} size={24} /> with Android XML vector drawables from Material Symbols.
Related skills