Expo Native UI
expo/skills
Build beautiful, native-feeling Expo screens. An agent skill from expo/skills.
Complete guide for building beautiful apps with Expo Router.
$ npx skills add CherryHQ/cherry-studio-app --skill building-native-ui -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install CherryHQ/cherry-studio-app building-native-ui --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/CherryHQ/cherry-studio-app.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/building-native-ui .claude/skills/building-native-ui && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "building-native-ui" agent skill from https://github.com/CherryHQ/cherry-studio-app/tree/main/.agents/skills/building-native-ui into .claude/skills/building-native-ui/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-native-ui", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/CherryHQ/cherry-studio-app/tree/main/.agents/skills/building-native-uiType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add CherryHQ/cherry-studio-app --skill building-native-ui -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install CherryHQ/cherry-studio-app building-native-ui --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CherryHQ/cherry-studio-app.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/building-native-ui .agents/skills/building-native-ui && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "building-native-ui" agent skill from https://github.com/CherryHQ/cherry-studio-app/tree/main/.agents/skills/building-native-ui into .agents/skills/building-native-ui/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-native-ui", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add CherryHQ/cherry-studio-app --skill building-native-ui -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install CherryHQ/cherry-studio-app building-native-ui --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CherryHQ/cherry-studio-app.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/building-native-ui .cursor/skills/building-native-ui && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "building-native-ui" agent skill from https://github.com/CherryHQ/cherry-studio-app/tree/main/.agents/skills/building-native-ui into .cursor/skills/building-native-ui/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-native-ui", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/CherryHQ/cherry-studio-app.git --path .agents/skills/building-native-ui--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add CherryHQ/cherry-studio-app --skill building-native-ui -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install CherryHQ/cherry-studio-app building-native-ui --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CherryHQ/cherry-studio-app.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/building-native-ui .gemini/skills/building-native-ui && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "building-native-ui" agent skill from https://github.com/CherryHQ/cherry-studio-app/tree/main/.agents/skills/building-native-ui into .gemini/skills/building-native-ui/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-native-ui", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install CherryHQ/cherry-studio-app building-native-uiInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add CherryHQ/cherry-studio-app --skill building-native-ui -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/CherryHQ/cherry-studio-app.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/building-native-ui .github/skills/building-native-ui && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "building-native-ui" agent skill from https://github.com/CherryHQ/cherry-studio-app/tree/main/.agents/skills/building-native-ui into .github/skills/building-native-ui/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-native-ui", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add CherryHQ/cherry-studio-app --skill building-native-ui -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install CherryHQ/cherry-studio-app building-native-ui --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CherryHQ/cherry-studio-app.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/building-native-ui .opencode/skills/building-native-ui && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "building-native-ui" agent skill from https://github.com/CherryHQ/cherry-studio-app/tree/main/.agents/skills/building-native-ui into .opencode/skills/building-native-ui/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-native-ui", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
building-native-uiComplete guide for building beautiful apps with Expo Router.
Building Native UI is an agent skill from CherryHQ/cherry-studio-app. Complete guide for building beautiful apps with Expo Router. Covers fundamentals, styling, components, navigation, animations, patterns, and native tabs.
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 15 other files, including reference files (for example `references/animations.md`, `references/controls.md` and `references/form-sheet.md`).
It sits in Mobile, covering Mobile UI design and Cross-platform mobile apps. It works with Expo, Android and iOS. The repository describes itself as: 🍒 This is the mobile version of Cherry Studio. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 3be36cc. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxeasFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Building Native UI loads about 2.6k tokens when it runs, and up to ~25k if it reads all its reference files. Until then it costs about 43 tokens; SKILL.md has 813 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from CherryHQ/cherry-studio-app at commit 3be36cc, republished under its MIT licence (© CherryHQ). 813 words, ~2,609 tokens.
.claude/skills/building-native-ui/SKILL.md (or your agent's skills folder). This skill also uses 14 other files; get the full folder from GitHub.Consult these resources as needed:
references/
animations.md Reanimated: entering, exiting, layout, scroll-driven, gestures
controls.md Native iOS: Switch, Slider, SegmentedControl, DateTimePicker, Picker
form-sheet.md Form sheets in expo-router: configuration, footers and background interaction.
gradients.md CSS gradients via experimental_backgroundImage (New Arch only)
icons.md SF Symbols via expo-image (sf: source), names, animations, weights
media.md Camera, audio, video, and file saving
route-structure.md Route conventions, dynamic routes, groups, folder organization
search.md Search bar with headers, useSearch hook, filtering patterns
storage.md SQLite, AsyncStorage, SecureStore
tabs.md NativeTabs, migration from JS tabs, iOS 26 features
toolbar-and-headers.md Stack headers and toolbar buttons, menus, search (iOS only)
visual-effects.md Blur (expo-blur) and liquid glass (expo-glass-effect)
webgpu-three.md 3D graphics, games, GPU visualizations with WebGPU and Three.js
zoom-transitions.md Apple Zoom: fluid zoom transitions with Link.AppleZoom (iOS 18+)CRITICAL: Always try Expo Go first before creating custom builds.
Most Expo apps work in Expo Go without any custom native code. Before running npx expo run:ios or npx expo run:android:
npx expo start and scan the QR code with Expo GoYou need npx expo run:ios/android or eas build ONLY when using:
modules/)@bacons/apple-targets)app.jsonExpo Go supports a huge range of features out of the box:
expo-* packages (camera, location, notifications, etc.)If you're unsure, try Expo Go first. Creating custom builds adds complexity, slower iteration, and requires Xcode/Android Studio setup.
comment-card.tsxSee ./references/route-structure.md for detailed route conventions.
app directory.expo-audio not expo-avexpo-video not expo-avexpo-image with source="sf:name" for SF Symbols, not expo-symbols or @expo/vector-iconsreact-native-safe-area-context not react-native SafeAreaViewprocess.env.EXPO_OS not Platform.OSReact.use not React.useContextexpo-image Image component instead of intrinsic element imgexpo-glass-effect for liquid glass backdrops<ScrollView contentInsetAdjustmentBehavior="automatic" /> instead of <SafeAreaView> for smarter safe area insetscontentInsetAdjustmentBehavior="automatic" should be applied to FlatList and SectionList as welluseWindowDimensions over Dimensions.get() to measure screen size<Switch /> from React Native and @react-native-community/datetimepickercontentInsetAdjustmentBehavior="automatic" setScrollView to the page it should almost always be the first component inside the route componentheaderSearchBarOptions in Stack.Screen options to add a search bar<Text selectable /> prop on text containing data that could be copiedFollow Apple Human Interface Guidelines.
contentInsetAdjustmentBehavior="automatic"{ borderCurve: 'continuous' } for rounded corners unless creating a capsule shapecontentContainerStyle padding and gap instead of padding on the ScrollView itself (reduces clipping)selectable prop to every <Text/> element displaying important data or error messages{ fontVariant: 'tabular-nums' } for alignmentUse CSS boxShadow style prop. NEVER use legacy React Native shadow or elevation styles.
<View style={{ boxShadow: "0 1px 2px rgba(0, 0, 0, 0.05)" }} />'inset' shadows are supported.
Use <Link href="/path" /> from 'expo-router' for navigation between routes.
import { Link } from 'expo-router';
// Basic link
<Link href="/path" />
// Wrapping custom components
<Link href="/path" asChild>
<Pressable>...</Pressable>
</Link>Whenever possible, include a <Link.Preview> to follow iOS conventions. Add context menus and previews frequently to enhance navigation.
_layout.tsx files to define stacksSet the page title in Stack.Screen options:
<Stack.Screen options={{ title: "Home" }} />Add long press context menus to Link components:
import { Link } from "expo-router";
<Link href="/settings" asChild>
<Link.Trigger>
<Pressable>
<Card />
</Pressable>
</Link.Trigger>
<Link.Menu>
<Link.MenuAction
title="Share"
icon="square.and.arrow.up"
onPress={handleSharePress}
/>
<Link.MenuAction
title="Block"
icon="nosign"
destructive
onPress={handleBlockPress}
/>
<Link.Menu title="More" icon="ellipsis">
<Link.MenuAction title="Copy" icon="doc.on.doc" onPress={() => {}} />
<Link.MenuAction
title="Delete"
icon="trash"
destructive
onPress={() => {}}
/>
</Link.Menu>
</Link.Menu>
</Link>;Use link previews frequently to enhance navigation:
<Link href="/settings">
<Link.Trigger>
<Pressable>
<Card />
</Pressable>
</Link.Trigger>
<Link.Preview />
</Link>Link preview can be used with context menus.
Present a screen as a modal:
<Stack.Screen name="modal" options={{ presentation: "modal" }} />Prefer this to building a custom modal component.
Present a screen as a dynamic form sheet:
<Stack.Screen
name="sheet"
options={{
presentation: "formSheet",
sheetGrabberVisible: true,
sheetAllowedDetents: [0.5, 1.0],
contentStyle: { backgroundColor: "transparent" },
}}
/>contentStyle: { backgroundColor: "transparent" } makes the background liquid glass on iOS 26+.A standard app layout with tabs and stacks inside each tab:
app/
_layout.tsx — <NativeTabs />
(index,search)/
_layout.tsx — <Stack />
index.tsx — Main list
search.tsx — Search view// app/_layout.tsx
import { NativeTabs, Icon, Label } from "expo-router/unstable-native-tabs";
import { Theme } from "../components/theme";
export default function Layout() {
return (
<Theme>
<NativeTabs>
<NativeTabs.Trigger name="(index)">
<Icon sf="list.dash" />
<Label>Items</Label>
</NativeTabs.Trigger>
<NativeTabs.Trigger name="(search)" role="search" />
</NativeTabs>
</Theme>
);
}Create a shared group route so both tabs can push common screens:
// app/(index,search)/_layout.tsx
import { Stack } from "expo-router/stack";
import { PlatformColor } from "react-native";
export default function Layout({ segment }) {
const screen = segment.match(/\((.*)\)/)?.[1]!;
const titles: Record<string, string> = { index: "Items", search: "Search" };
return (
<Stack
screenOptions={{
headerTransparent: true,
headerShadowVisible: false,
headerLargeTitleShadowVisible: false,
headerLargeStyle: { backgroundColor: "transparent" },
headerTitleStyle: { color: PlatformColor("label") },
headerLargeTitle: true,
headerBlurEffect: "none",
headerBackButtonDisplayMode: "minimal",
}}
>
<Stack.Screen name={screen} options={{ title: titles[screen] }} />
<Stack.Screen name="i/[id]" options={{ headerLargeTitle: false }} />
</Stack>
);
}© CherryHQ, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 14 other files (references) in .agents/skills/building-native-ui of CherryHQ/cherry-studio-app.
Open the folder on GitHubat commit 3be36cc
We found 17 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 8 other GitHub owners. This page covers the copy in CherryHQ/cherry-studio-app, which our catalogue first saw on October 7, 2026.
Building Native UI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Building Native UI this skillCherryHQ/cherry-studio-app | 4k | 8 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Expo Native UIexpo/skills | 2.7k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Mobile AccessibilityCommunity-Access/accessibility-agents | 423 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Kb Mobile AccessibilityCommunity-Access/accessibility-agents | 423 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Screenmapaleqsio/screenmap | 243 | — | ~7.2k | Automated safety check: Pass | MIT | |
| Expo Brownfield Integrationmweinbach/agent-coworker | 156 | 2 repos | ~900 | Automated safety check: Notes | Custom licence |
expo/skills
Build beautiful, native-feeling Expo screens. An agent skill from expo/skills.
Community-Access/accessibility-agents
React Native, Expo, iOS and Android: labels, roles and touch targets.
Community-Access/accessibility-agents
Reference data, not a reviewer. An agent skill from Community-Access/accessibility-agents.
aleqsio/screenmap
Generate a visual navigation map of an Expo / React Native or NativeScript app.
mweinbach/agent-coworker
Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.
arcboxlabs/linkcode
Framework (OSS). An agent skill from arcboxlabs/linkcode.
CherryHQ/cherry-studio-app
Helps understand and write EAS workflow YAML files for Expo projects.
CherryHQ/cherry-studio-app
A skill your agent uses when implementing or debugging ANY network request, API call, or data fetching.
CherryHQ/cherry-studio-app
Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling
CherryHQ/cherry-studio-app
Opt-in evidence-first causal diagnosis for bugs, browser or app/device failures, flaky behavior, and performance regressions.
CherryHQ/cherry-studio-app
Survey a whole React codebase as a senior React engineer, using React Doctor's scan as evidence, then produce a prioritized audit and self-contained implementation plans for other agents (or cheaper…
CherryHQ/cherry-studio-app
Iterative diagnose-and-fix workflow that repeatedly uses the diagnose skill to find a proven problem, plan the smallest credible improvement, implement it, re-diagnose, and continue until no useful…
Categories
Complete guide for building beautiful apps with Expo Router. Building Native UI is an agent skill from CherryHQ/cherry-studio-app. Complete guide for building beautiful apps with Expo Router.
Building Native UI fits situations like: tasks that involve Mobile UI design; tasks that involve Cross-platform mobile apps.
Run `npx skills add CherryHQ/cherry-studio-app --skill building-native-ui -a claude-code`. Or copy the skill folder (.agents/skills/building-native-ui in CherryHQ/cherry-studio-app) into .claude/skills/building-native-ui in your project. Claude Code loads it when a task matches its description.
Run `npx skills add CherryHQ/cherry-studio-app --skill building-native-ui -a codex`. Or copy the skill folder (.agents/skills/building-native-ui in CherryHQ/cherry-studio-app) into .agents/skills/building-native-ui in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add CherryHQ/cherry-studio-app --skill building-native-ui -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/building-native-ui, .gemini/skills/building-native-ui, .github/skills/building-native-ui and .opencode/skills/building-native-ui in your project.
Going by SKILL.md and its folder, Building Native UI needs the command-line tools its instructions call (npx and eas). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Building Native UI is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 22k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Building Native UI: Expo Native UI (expo/skills, 2.7k stars), Mobile Accessibility (Community-Access/accessibility-agents, 423 stars), Kb Mobile Accessibility (Community-Access/accessibility-agents, 423 stars) and Screenmap (aleqsio/screenmap, 243 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
CherryHQ (a GitHub organization) maintains it in CherryHQ/cherry-studio-app, which has 3,976 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 9, 2026.
Source: CherryHQ/cherry-studio-app on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.