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 23 apps in this directory
AionUi
AI Agents · Productivity
Free, open-source Cowork desktop app that unifies Claude Code, Codex, Gemini CLI, and 20+ AI agents into a single platform with multi-agent teams, 24/7 cron automation, and zero-config built-in agent.
Bun
Developer Tools
An all-in-one JavaScript and TypeScript toolkit — one Rust-and-JavaScriptCore binary that replaces Node.js, npm, a bundler, and a test runner with faster equivalents.
Cap
Team Chat · Video Conferencing
Open source Loom alternative with GPU-accelerated recording, instant share links, AI summaries, and full self-hosting via Docker Compose.
ClearFlask
Product Management · Community
Open-source feedback management and roadmap tool that lets product teams collect, prioritize, and respond to user input — with AI-powered summarization and full self-hosting control.
Colanode
Knowledge Management · Team Chat · Collaboration
Local-first, self-hosted workspace that combines real-time chat, Notion-style pages, and structured databases — all synced via CRDTs so you work offline without losing a keystroke.
Convex Backend
Developer Tools · Databases
Open-source reactive database that lets developers build live-updating apps with pure TypeScript, strong consistency, and real-time subscriptions—no separate API layer required.
highlight.io
Developer Tools · Analytics · Monitoring
Open-source full-stack monitoring that unifies session replay, error tracking, logging, and distributed tracing so you can stop context-switching between tools.
Joplin
Note Taking
The privacy-first, open-source note-taking app with end-to-end encrypted sync, AI assistance, and a powerful plugin ecosystem across every platform.
Karakeep
Bookmarks Archiving
Self-hosted bookmark manager that captures links, notes, images, and PDFs with AI tagging, full-text search, and automatic archiving.