---
title: "Expo Project Structure"
type: skill
id: "expo-skills/expo-apps/expo-project-structure"
category: "Engineering"
publisher: "Expo"
license: "MIT"
source: "https://github.com/expo/skills/tree/a9e5bd3"
canonical: "https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-project-structure"
open_in_pho: "https://pho.chat/customize?item=expo-skills%2Fexpo-apps%2Fexpo-project-structure&utm_source=labs&utm_medium=skill-page&utm_campaign=skills-library"
---

# Expo Project Structure

Folder structure for a new Expo app. Use when scaffolding or laying out a new Expo project with Expo Router, or deciding where a file should live in one. For new projects only — never restructure an existing app to match.

Source: Expo (MIT), copied at a pinned commit. Free to use. Part of the Phở Skills library (https://labs.pho.chat/en/skills).
Skill set: Expo app development (https://labs.pho.chat/en/skills/expo-skills/expo-apps.md).

## What it covers
- src/ and src/app
- components/ — reusable UI
- screens/ — screen bodies
- server/ + app/api/ — separate server code
- Platform-specific code
- Colocate styles and tests
- AI and config files
- Submitting Feedback

## Other skills in this set
- [App Store Deployment](https://labs.pho.chat/en/skills/expo-skills/expo-apps/eas-app-stores.md): Build and submit iOS and Android apps with EAS to TestFlight, the App Store, or Google Play. Supports Expo and other React Native projects, plus existing native apps. Use for eas.json setup, release…
- [EAS Hosting](https://labs.pho.chat/en/skills/expo-skills/expo-apps/eas-hosting.md): Deploy Expo websites and Expo Router API routes to EAS Hosting - export the web bundle, run eas deploy for production and PR preview URLs, manage environment secrets and custom domains, and work…
- [EAS Observe](https://labs.pho.chat/en/skills/expo-skills/expo-apps/eas-observe.md): Use for anything related to EAS Observe - adding `expo-observe` to an Expo project (AppMetricsRoot/ObserveRoot HOC, markInteractive and ObserveInteractiveMarker, the useObserve hook, the Expo Router…
- [EAS Update](https://labs.pho.chat/en/skills/expo-skills/expo-apps/eas-update.md): Configure and use EAS Update for over-the-air JavaScript and asset updates with expo-updates and EAS CLI. Use when setting up OTA updates, running eas update:configure or eas update, publishing to…
- [EAS Update Insights](https://labs.pho.chat/en/skills/expo-skills/expo-apps/eas-update-insights.md): Check the health of published EAS Update: crash rates, install/launch counts, unique users, payload size, and the split between embedded and OTA users per channel. Use when the user asks how an…
- [Building Animations in Expo](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-animation.md): Build animations in React Native and Expo, making the decisions in the order that determines whether they feel right — should it animate, which thread it runs on, which properties, spring or timing…
- [Add an App Clip to an Expo App](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-app-clip.md): Add an iOS App Clip target to an Expo app. Use when the user mentions App Clip, AASA, apple-app-site-association, appclips, smart app banner, or wants to ship a lightweight iOS Clip invoked from a…
- [Expo Brownfield](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-brownfield.md): Integrate Expo and React Native into an existing native iOS or Android app. Use for brownfield, embedding a React Native screen in SwiftUI/UIKit or Kotlin, or AAR/XCFramework packaging. Covers…
- [Expo Networking](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-data-fetching.md): Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, loading/empty/error screen states…
- [Expo Design Systems](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-design-system.md): Build and maintain a design system inside an Expo app - a reusable theme of design tokens (color, spacing, typography, radius, shadow, motion), reusable component structure with variant/size/state…
- [iOS (requires Xcode)](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-dev-client.md): Build and distribute Expo development clients locally or via TestFlight for internal testing. For production TestFlight releases and store submission, use the eas-app-stores skill.
- [Expo dom](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-dom.md): Use Expo DOM components to run web code in a webview on native and as-is on web. Migrate web code to native incrementally. For the end-to-end migration of a whole web app, use the expo-web-to-native…
- [Expo Examples](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-examples.md): Expo's official example projects - the expo/examples repo of ~70 `with-*` integrations (Stripe, Clerk, Supabase, OpenAI, maps, Reanimated, SQLite, Skia, NativeWind, and more). Use when integrating a…
- [Writing Expo Modules](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-module.md): Guide for creating and writing Expo native modules and views using the Expo Modules API (Swift, Kotlin, TypeScript). Covers module definition DSL, native views, shared objects, config plugins…
- [Expo Native UI Guidelines](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-native-ui.md): Build beautiful, native-feeling Expo screens. Covers Apple HIG styling, semantic colors, native controls, SF Symbols, media, visual effects, gradients, storage, and responsive layout. For routing…
- [expo-overview — router & shared rules for Expo / EAS](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-overview.md): Entry point and router for every Expo or EAS task. Load this skill first — before writing code and before choosing another expo-* / eas-* skill — when the request, PRD, or spec mentions Expo, EAS…
- [Expo Router Navigation](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-router.md): Navigation and routing for Expo Router. Covers file-based routes, groups and dynamic routes, folder organization, Link with previews and context menus, native Stack, page titles, modals and form…
- [Expo upgrade](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-upgrade.md): Guidelines for upgrading Expo SDK versions and fixing dependency issues
- [Web to Native](https://labs.pho.chat/en/skills/expo-skills/expo-apps/expo-web-to-native.md): Migrate an existing web React app to a native iOS/Android app with Expo. Use when the user wants to turn a website into a mobile app, port a Next.js/Vite/CRA React codebase to React Native, reuse…

## Use it
- In Phở: open https://pho.chat/customize?item=expo-skills%2Fexpo-apps%2Fexpo-project-structure&utm_source=labs&utm_medium=skill-page&utm_campaign=skills-library and press Try, or add it so Phở loads it whenever a request matches. Phở works with your own API key (OpenAI, Anthropic, Google and others).
- Full instructions (original SKILL.md, unchanged): https://labs.pho.chat/skills/raw/expo-skills/expo-apps/skills/expo-project-structure/SKILL.md
- Original files: https://github.com/expo/skills/tree/a9e5bd3 (MIT).
- Full machine-readable index: https://labs.pho.chat/skills.json
