
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
The open-source framework for universal React Native apps — one codebase for Android, iOS, and the web.
📚 Documentation • 📖 API Reference • 🧭 Expo Router • 🚀 EAS • 📝 Blog • 📰 Changelog • 👏 Contribute
⭐️ Be sure to star the Expo GitHub repo if you enjoy using the project! ⭐️
Expo is the officially recommended framework for building production React Native apps. It gives you everything you need to design, develop, and ship universal apps for Android, iOS, and the web from a single codebase — the SDK, the router, the build and update infrastructure, and the tooling — all open source and production-tested.
You write your app in React with TypeScript or JavaScript; Expo handles the rest: a Metro-powered dev server with fast refresh, file-based routing that works the same on every platform, and a curated SDK of native modules you can drop in. From there, choose your own path — ship straight to the App Store and Play Store without ever opening Xcode or Android Studio, or reach for development builds and custom native code when your app needs to go further.
Built and maintained in the open by the Expo team and a community of thousands of contributors.
Create a new app and start the dev server:
npx create-expo-app@latest my-app
cd my-app
npx expo start
Then open the app on a simulator, a device with Expo Go, or the web. See the official Quick Start guide for a full walkthrough.
Already have a React Native app? Add Expo to it with install-expo-modules:
npx install-expo-modules@latest
Expo is a collection of tools and services that work together, but each piece is independently useful.
A large set of first-party, cross-platform modules covering device APIs, media, storage, and system services — expo-camera, expo-image, expo-notifications, expo-file-system, expo-sqlite, expo-sensors, and many more.
Every module is opt-in, fully typed, and maintained by the Expo team — install only what you need with npx expo install, and your bundle stays as small as your app demands.
A file-based router for universal navigation across Android, iOS, and the web. Drop a file into app/ and you have a route — with typed paths, automatic deep linking, and universal-link config generated for you. Layouts, modals, tabs, and stacks compose as React components and look the same on every platform.
Under the hood it builds on react-native-screens for true native navigators on mobile, plus a real router on the web. It also brings a fullstack story to React Native: API routes and static rendering for SEO-friendly web builds.
A modern Swift and Kotlin API for writing native modules — and the foundation the entire Expo SDK and a growing ecosystem of third-party libraries are built on.
You describe a module declaratively: functions, properties, native views, and lifecycle events all live in a small Swift or Kotlin DSL. The framework handles type coercion and the calls between JavaScript and native automatically — no Objective-C, no Java, no C++, no JNI, no boilerplate. Scaffold a new module in seconds with npx create-expo-module@latest, ship it as a regular npm package, and have it picked up by Expo's autolinking on iOS and Android.
Expo UI — a set of truly native UI components backed by SwiftUI on iOS and Jetpack Compose on Android. Use platform controls (pickers, switches, sliders, menus, …) that look and feel exactly like the rest of the OS, from React.
Mark a React component with "use dom" and Expo will render it as web content inside your native app — perfect for incrementally migrating web code or reusing a React web component on mobile. Learn more.
Your ios/ and android/ folders are generated, not maintained. Describe your native config in app.json and config plugins; run npx expo prebuild to materialize the projects on demand. Upgrades, package additions, and native customizations all flow through the same declarative pipeline — no more merge conflicts in native code.
Expo Application Services — hosted infrastructure for shipping React Native apps:
EAS is optional, but the fastest path from git push to the store.
npx expo install.Bug reports, fixes, and improvements are very welcome. See CONTRIBUTING for how to set up this package locally, and the repo-wide contributing guide for general guidelines.
The Expo source code is made available under the MIT License.
React Native is a framework for building native apps using React. Unlike Expo, React Native requires more setup and configuration but offers more flexibility and control over the native code. It is suitable for developers who need to integrate custom native modules or require more advanced native functionalities.
Apache Cordova is a mobile application development framework that allows you to use standard web technologies such as HTML5, CSS3, and JavaScript for cross-platform development. Compared to Expo, Cordova provides a different approach by wrapping web applications in a native container, which can be less performant than React Native-based solutions.
Flutter is a UI toolkit from Google for building natively compiled applications for mobile, web, and desktop from a single codebase. Unlike Expo, which is based on React Native, Flutter uses the Dart programming language and provides a different set of tools and widgets for building applications.
FAQs
The Expo SDK
The npm package expo receives a total of 5,855,944 weekly downloads. As such, expo popularity was classified as popular.
We found that expo demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 12 open source maintainers collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.