Expo
Open-source framework for building universal native apps with React that run on Android, iOS, and the web.
Repository Health
Technical Analysis
Expo is an open-source framework that lets you build universal native applications for Android, iOS, and the web from a single JavaScript and TypeScript codebase written with React. It ships a universal runtime, a broad library of native modules, a powerful CLI, file-based routing via Expo Router, and the Expo Modules API for authoring your own native code.
Beyond the SDK, Expo scaffolds new projects with create-expo-app, bundles with a preconfigured Metro setup, and manages native configuration through config plugins so you rarely need to touch Xcode or Android Studio. It underpins a huge share of the React Native ecosystem and integrates deeply with Expo Application Services (EAS) for cloud builds, submissions, and over-the-air updates.
What You Get
- A universal runtime plus the
registerRootComponententry point that boots your React app natively across Android, iOS, tvOS, and web. - The
expoCLI for starting a dev server, running on simulators/devices, and prebuilding native projects, pluscreate-expo-appscaffolding. - A large library of first-party native modules (camera, file system, fonts, notifications, and more) with automatic native autolinking.
- The Expo Modules API for authoring your own Swift/Kotlin native modules with a typed JavaScript bridge.
- File-based navigation through Expo Router and a preconfigured Metro bundler, Babel preset, and config-plugin system for native setup.
Common Use Cases
- Shipping a cross-platform mobile app to the App Store and Google Play from one React codebase.
- Building a universal app that targets mobile and the web simultaneously with shared UI and logic.
- Prototyping quickly with Expo Go and Snack, then graduating to custom native code via development builds.
- Adding native capabilities (camera, notifications, secure storage) without writing platform-specific glue by hand.
- Automating cloud builds, store submissions, and over-the-air updates through EAS integration.
Under The Hood
Architecture — The expo package is the entry point of a large pnpm/Turbo monorepo. Its public surface (src/Expo.ts) re-exports the runtime from expo-modules-core (EventEmitter, SharedObject, NativeModule, requireNativeModule) and adds framework glue: registerRootComponent wraps React Native’s AppRegistry.registerComponent, runs AppRegistry.runApplication on web, wires Fast Refresh and dev tooling, and polyfills globals via the Expo.fx side-effect module. Native modules are discovered through expo-modules-autolinking and configured declaratively with config plugins (@expo/config-plugins), while the expo binary shells into @expo/cli for the dev server, prebuild, and device runners.
Tech Stack — Written primarily in TypeScript (~57% of the repo) with substantial Kotlin, Swift, and Objective-C for the native layers. It depends on expo-modules-core, a curated set of first-party modules (expo-asset, expo-constants, expo-file-system, expo-font, expo-keep-awake), @expo/cli, @expo/metro/@expo/metro-config, and babel-preset-expo; React, React Native, react-dom, and react-native-web are peer dependencies. Builds run through expo-module-scripts, with Metro as the bundler and Babel as the transform pipeline.
Code Quality — The codebase is strictly typed and linted with oxlint and tsc typechecking, with platform-specific file variants (.web.tsx, .ios.tsx) cleanly separating targets. Tests exist and run under Jest, though the expo package itself carries a modest unit-test suite (a handful of specs in src/__tests__); the bulk of testing lives across sibling packages and app fixtures in the monorepo. Naming is consistent and public APIs are documented with JSDoc annotations.
API Design — Developer experience is a core strength: a new app is one create-expo-app command, and booting is a single registerRootComponent(App) call. The public API is small and well-named, native capabilities are added by installing a module rather than editing native projects, and documentation at docs.expo.dev is extensive with an API reference, guides, and in-browser Snack examples. Deprecated exports are annotated with migration hints, easing upgrades.
Used by 438 apps in this directory
agent-orchestrator
AI Agents · AI Code Assistants · Developer Tools
A local desktop workspace that gives every coding task its own agent, Git branch, and worktree, then tracks tasks, pull requests, CI, and reviews for 27 coding agents on one live Kanban board.
agent-orchestrator
AI Agents · AI Code Assistants · Developer Tools
A local desktop workspace that gives every coding task its own agent, Git branch, and worktree, then tracks tasks, pull requests, CI, and reviews for 27 coding agents on one live Kanban board.
agent-orchestrator
AI Agents · AI Code Assistants · Developer Tools
A local desktop workspace that gives every coding task its own agent, Git branch, and worktree, then tracks tasks, pull requests, CI, and reviews for 27 coding agents on one live Kanban board.
agent-orchestrator
AI Agents · AI Code Assistants · Developer Tools
A local desktop workspace that gives every coding task its own agent, Git branch, and worktree, then tracks tasks, pull requests, CI, and reviews for 27 coding agents on one live Kanban board.
agent-orchestrator
AI Agents · AI Code Assistants · Developer Tools
A local desktop workspace that gives every coding task its own agent, Git branch, and worktree, then tracks tasks, pull requests, CI, and reviews for 27 coding agents on one live Kanban board.
agent-orchestrator
AI Agents · AI Code Assistants · Developer Tools
A local desktop workspace that gives every coding task its own agent, Git branch, and worktree, then tracks tasks, pull requests, CI, and reviews for 27 coding agents on one live Kanban board.
agent-orchestrator
AI Agents · AI Code Assistants · Developer Tools
A local desktop workspace that gives every coding task its own agent, Git branch, and worktree, then tracks tasks, pull requests, CI, and reviews for 27 coding agents on one live Kanban board.
agent-orchestrator
AI Agents · AI Code Assistants · Developer Tools
A local desktop workspace that gives every coding task its own agent, Git branch, and worktree, then tracks tasks, pull requests, CI, and reviews for 27 coding agents on one live Kanban board.
agent-orchestrator
AI Agents · AI Code Assistants · Developer Tools
A local desktop workspace that gives every coding task its own agent, Git branch, and worktree, then tracks tasks, pull requests, CI, and reviews for 27 coding agents on one live Kanban board.