Expo

Open-source framework for building universal native apps with React that run on Android, iOS, and the web.

Framework
npm
v57.0.14
51,686stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
83/100Excellent
Development Activity100
Maintenance52
Community80
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
86/100Excellent
Architecture88
Code Quality78
Innovation88
Learning Curve72

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 registerRootComponent entry point that boots your React app natively across Android, iOS, tvOS, and web.
  • The expo CLI for starting a dev server, running on simulators/devices, and prebuilding native projects, plus create-expo-app scaffolding.
  • 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

TypeScript
95%
Apache 2.0

AionUi

AI Agents · Productivity

32,102

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.

View details
88
Repo Health
76
Technical
66
Dependency
Built with
TypeScript95%
Updated today
Rust
67%
MIT

Bun

Developer Tools

95,452

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.

View details
92
Repo Health
91
Technical
66
Dependency
Built with
Rust67%
C++19%
Updated today
TypeScript
55%
Other

Cap

Team Chat · Video Conferencing

20,986

Open source Loom alternative with GPU-accelerated recording, instant share links, AI summaries, and full self-hosting via Docker Compose.

View details
89
Repo Health
81
Technical
65
Dependency
Built with
TypeScript55%
Rust40%
Updated yesterday
Java
48%
Apache 2.0

ClearFlask

Product Management · Community

448

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.

View details
83
Repo Health
73
Technical
63
Dependency
Built with
Java48%
TypeScript47%
Updated 2 weeks ago
TypeScript
99%
Apache 2.0

Colanode

Knowledge Management · Team Chat · Collaboration

5,018

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.

View details
47
Repo Health
73
Technical
73
Dependency
Built with
TypeScript99%
Updated 4 months ago
TypeScript
45%
Other

Convex Backend

Developer Tools · Databases

12,394

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.

View details
88
Repo Health
82
Technical
70
Dependency
Built with
TypeScript45%
Rust43%
Updated today
TypeScript
71%
Other

highlight.io

Developer Tools · Analytics · Monitoring

9,367

Open-source full-stack monitoring that unifies session replay, error tracking, logging, and distributed tracing so you can stop context-switching between tools.

View details
69
Repo Health
78
Technical
66
Dependency
Built with
TypeScript71%
Go16%
Updated yesterday
TypeScript
76%
Other

Joplin

Note Taking

56,003

The privacy-first, open-source note-taking app with end-to-end encrypted sync, AI assistance, and a powerful plugin ecosystem across every platform.

View details
93
Repo Health
87
Technical
62
Dependency
Built with
TypeScript76%
JavaScript15%
Updated yesterday
TypeScript
99%
AGPL 3.0

Karakeep

Bookmarks Archiving

28,454

Self-hosted bookmark manager that captures links, notes, images, and PDFs with AI tagging, full-text search, and automatic archiving.

View details
88
Repo Health
76
Technical
67
Dependency
Built with
TypeScript99%
Updated 3 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search