---
name: expo-gluestack
description: Comprehensive instructions for building Expo apps using gluestack-ui.
---
# Agent Skills: Building Beautiful Expo Apps with Gluestack UI
This document defines the skill set and operational guidelines for AI agents working on this project. The primary goal is to build high-quality, visually appealing mobile applications using **Expo** and **gluestack-ui**.
## 1. Technology Stack & Environment
- **Framework**: React Native (via Expo)
- **UI Library**: gluestack-ui
- **Language**: TypeScript (Preferred)
- **Navigation**: Expo Router (Standard for modern Expo apps)
## 2. Project Initialization Skills
When starting a new project or setting up the environment, the agent must follow these steps:
### A. Create Expo Project
Use the latest Expo template:
```bash
npx create-expo-app@latest my-app --template default
cd my-app
```
### B. Install gluestack-ui
Follow the official installation guide to integrate gluestack-ui:
1. **Initialize gluestack-ui**:
```bash
npx gluestack-ui init
```
- This command installs dependencies and adds the `GluestackUIProvider`.
- It sets up the theme configuration.
- It creates a `components` folder for your UI components.
2. **Wrap Application Root**:
Ensure the root layout (e.g., `app/_layout.tsx` or `App.tsx`) is wrapped with the provider:
```tsx
import { GluestackUIProvider } from "@/components/ui/gluestack-ui-provider";
import "@/global.css"; // If using NativeWind or global styles
export default function Layout() {
return (
{/* or your main app content */}
);
}
```
## 3. Component Management Skills
gluestack-ui is unstyled by default and headless, meaning you add components as you need them.
### A. Adding Components
**NEVER** try to import a component that hasn't been added to the project. Always check the `components/ui` directory first.
To add a new component (e.g., Button, Box, Text):
```bash
npx gluestack-ui add [component-name]
# Example:
npx gluestack-ui add button box text
```
*Agent Note: If a user asks for a UI element, identify the corresponding gluestack component, run the add command if it's missing, and then implement it.*
### B. Common Components & Usage
- **Layout**: Use `Box`, `VStack`, `HStack`, `Center` for layout instead of raw View styles.
```tsx
```
- **Typography**: Use `Text` and `Heading` with size props.
- **Interactivity**: Use `Button`, `Pressable`, `Link`.
## 4. UI/UX Design & Styling Skills
### A. Theming & Tokens
- Utilize the gluestack-ui tokens for spacing, colors, and typography to ensure consistency.
- Avoid hardcoded pixel values for margins/padding; use tokens (e.g., `$2`, `$4`, `md`, `lg`).
### B. Responsive Design
- gluestack-ui supports responsive props.
- Example: `` (Full width on mobile, half width on medium screens/tablets).
### C. "Beautiful" UI Principles
- **Whitespace**: Use ample padding and margin (via `space` prop in stacks or padding props).
- **Hierarchy**: Use font weights and colors to establish visual hierarchy.
- **Feedback**: Ensure interactive elements have hover/pressed states (gluestack handles this by default, but customization is possible).
## 5. Advanced Development Patterns
### A. State Management
- **Global State**: Use **Zustand** for lightweight global state (e.g., user session, theme settings).
- *Why*: Minimal boilerplate, easy to use with hooks.
- **Server State**: Use **TanStack Query (React Query)** for data fetching.
- *Why*: Handles caching, loading states, and refetching automatically.
### B. Form Handling
- Use **React Hook Form** controlled by **Zod** schema validation.
- *Why*: Performance (minimizes re-renders) and type safety.
```tsx
import { useForm, Controller } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
// ... define z.object schema ...
```
### C. Iconography
- Use **Lucide Icons** (`lucide-react-native`).
- Gluestack-ui integrates well with Lucide.
```tsx
import { Camera } from "lucide-react-native";
import { Icon } from "@/components/ui/icon";
// Usage:
```
### D. Navigation (Expo Router)
- **Structure**:
- `app/_layout.tsx`: Root provider setup (gluestack, query client).
- `app/(tabs)`: For tab-based navigation.
- `app/[id].tsx`: For dynamic routes.
- **Linking**: Use `Link` from `expo-router` for web-compatible navigation.
## 6. Coding Best Practices for Agents
1. **File Structure**:
- Keep screens in `app/` (if using Expo Router).
- Keep reusable UI components in `components/`.
- Keep business logic/hooks in `hooks/` or `utils/`.
2. **Code Style**:
- Use functional components.
- Use Hooks (`useState`, `useEffect`) appropriately.
- **Type Safety**: strict TypeScript usage. Define interfaces for props.
3. **Error Handling**:
- When running commands (like `npx gluestack-ui add`), if they fail, analyze the error (e.g., missing peer dependencies) and fix it before proceeding.
4. **Dependency Management**:
- **Expo Compatibility First**: Always prioritize installing packages compatible with the latest Expo SDK.
- Use `npx expo install [package-name]` instead of `npm install` or `yarn add` when possible, as this ensures the installed version is compatible with the project's Expo SDK version.
## 7. Workflow Checklist
When assigned a task to build a screen:
1. [ ] Analyze requirements.
2. [ ] Identify necessary UI components (e.g., Card, Avatar, Button).
3. [ ] Check if components exist in `components/ui`; if not, run `npx gluestack-ui add ...`.
4. [ ] Scaffold the screen using `VStack`/`HStack` for layout.
5. [ ] Apply styling using theme tokens.
6. [ ] Verify responsiveness.
## 8. External Agent Skills & Resources
To enhance capability, the agent should leverage established skill sets from industry leaders:
### A. React Native Best Practices (Callstack)
- **Repository**: [callstackincubator/agent-skills](https://github.com/callstackincubator/agent-skills)
- **Focus**: Performance optimization (re-renders, startup time), bundling, and native modules.
- **Instruction**: Consult these skills when optimizing app performance or debugging complex native issues.
### B. Expo Official Skills
- **Repository**: [expo/skills](https://github.com/expo/skills)
- **Focus**: Best practices for building, deploying (EAS), and upgrading Expo applications.
- **Instruction**: Use these skills for:
- `upgrading-expo`: When moving between Expo SDK versions.
- `expo-deployment`: For setting up EAS Build and Submit.
- `expo-app-design`: General Expo app architecture guidance.