expo
the app shipper
first confirm the project uses Expo or EAS, then load the guide that owns the task. use the project's installed SDK and versioned official docs for API decisions. a React Native or Capacitor app without Expo is outside this skill.
managed until it cannot beeas for every buildsdk upgrades on schedule
Use when an app depends on Expo, Expo Router, or Expo Application Services (EAS), including SDK setup and upgrades, native modules, navigation, development builds, EAS Build and Submit, updates, hosting, workflows, and release diagnostics.
methodology
- read the trained layer, then the project's package and AGENTS.md contracts. if Expo is absent, use mobile or capacitor for the actual stack.
- read expo-overview for shared setup and goal routing. when a user explicitly names a guide, read it directly and still apply the overview's relevant shared rules.
- read the matching guide below and only the deeper references it names. check changing APIs against the installed SDK and current official docs.
- verify the changed boundary on the relevant app, simulator, device, or deployed service before making a delivery claim.
- plugin setup and Expo feedback commands are reference material; run them only when the current task explicitly authorizes that action.
contents
- archived-expo-guruhistorical Expo research only; check the live project contract before reusing it
- case-studiesarchived consumer app design research; check the capture date before use
- eas-app-storeseas build and submit -- production builds, testflight, store listing metadata, aso, version/build numbers
- eas-hostingeas hosting -- deploying expo websites and router api routes, eas deploy, domains, secrets
- eas-observeeas observe -- expo-observe integration, per-route metrics, launch/ttr/tti, error reporting, cli queries
- eas-simulatorrunning the app on a remote eas cloud ios/android simulator (eas simulator:*)
- eas-updateeas update ota -- expo-updates, channels, runtime versions, updates that do not appear
- eas-update-insightshealth of a published update -- crash rates, adoption, embedded vs ota split per channel
- eas-workflowseas workflow yaml -- .eas/workflows/ build pipelines and deployment automation
- expo-animationanimation, gestures, sheets, screen transitions, press feedback, haptics with reanimated, gesture handler, expo-haptics
- expo-app-clipshipping a lightweight ios app clip target beside the parent app -- aasa, smart app banners, url-invoked clips
- expo-brownfieldembedding expo/react native into an existing native ios or android app (brownfield, aar/xcframework)
- expo-data-fetchingany network request, api call, react query/swr, caching, offline, router data loaders
- expo-design-systemdesign tokens, theme files, component libraries, styling-library idioms, design-system drift audits
- expo-dev-clientdevelopment clients built and distributed locally or via testflight for internal testing
- expo-domdom components ("use dom") -- web code in a webview on native, incremental web->native reuse
- expo-examplesthe canonical version-matched pattern for a third-party integration, or scaffolding from an official example
- expo-migrate-modulemigrating an existing swift module from the 1.0 definition dsl to the 2.0 macro api
- expo-modulecreating or modifying expo native modules and views (swift, kotlin, config plugins, autolinking)
- expo-native-uinative-feeling screens -- hig styling, semantic colors, sf symbols, media, gradients, responsive layout
- expo-overviewany expo/eas request, first load -- goal detection, shared setup rules, app specs and designs to implement
- expo-project-structurescaffolding or laying out a new expo app, deciding where a file lives
- expo-routernavigation and routing -- file-based routes, groups, dynamic routes, stack, tabs, modals, form sheets, headers
- expo-uinative controls via @expo/ui -- bottomsheet, pickers, sliders, toggles, menus, grouped rows
- expo-upgradeupgrading expo sdk versions, fixing dependency drift
- expo-web-to-nativeend-to-end migration of a web react app to native ios/android
- trainedlearned layer -- read first